抓包代码

//引入模块
const http = require(‘http‘)
const fs = require(‘fs‘)
const cheerio = require(‘cheerio‘)
const iconv = require(‘iconv-lite‘)
const request = require(‘request‘)
const async = require(‘async‘);

const urlList = [] //地址列表
var id = 0 //计数器

//由于煎蛋妹子图的地址格式一样,所以只要拼接地址就好了
for (var i = 193; i > 190; i--) {
  urlList.push(‘http://jandan.net/ooxx/page-‘ + i)
}

function getPages(url, callback) {
  http.get(url, res => {
    const html = []
    res.on(‘data‘, (chunk) => {
    html.push(chunk)
})
  res.on(‘end‘, () => {
    //如果网站是gbk编码,可以转成utf8,否则可能乱码
    const html1 = iconv.decode(Buffer.concat(html), ‘utf8‘)
    //cheerio模块用来一jQuery的语法解析爬取的页面
    const $ = cheerio.load(html1, {
      decodeEntities: false
    })
    const link = []
    $(‘.view_img_link‘).each((i, v) => {
    link.push($(v).attr(‘href‘))
})
  callback(null, link)
})
})
}

function saveImage(links) {
  if (!fs.existsSync(`images/jiandan`)) {
    fs.mkdirSync(`images/jiandan`)
  }

  //此处links为一个二维数组,每个元素也是数组,保存了每个地址的多张图片地址,所以需要合并
  var newArr = []
  for (var i = 0; i < links.length; i++) {
    newArr = newArr.concat(links[i])
  }

  console.log(‘length:‘ + newArr.length)

  async.mapLimit(newArr, 5, function (link, callback) {
    id++  //id充当计数器,保存一张图片就打印一次
    requestAndwrite(link, callback, id)
  }, function (err, results) {
    if (err) {
      console.log(err)
    } else {
      console.log(results)
    }
  })
}

var requestAndwrite = function (link, callback, id) {
  const url = ‘http:‘ + link
  request.head(url, function (err, res, body) {
    if (err) {
      console.log(err)
    } else {
      request(url).pipe(fs.createWriteStream(`images/jiandan/${link.split(‘/‘).pop()}`)).on(‘close‘, function () {
        console.log(id)
        callback(null, ‘result‘)
      })
    }
  })
}

//
async.mapLimit(urlList, 5, function (url, callback) {
  getPages(url, callback)
}, function (err, links) {
  saveImage(links)
})

  

时间: 2024-10-19 02:57:56

抓包代码的相关文章

用Wireshark抓包来揭开ftp client GG和ftp server MM的勾搭内容并用C代码来简要模拟实现Windows自带的ftp client

前面, 我们玩过http, 颇有点意思, 在本文中, 我们继续来玩ftp(file transfer protocol).   http和ftp都是建立在tcp之上的应用层协议, 无论他们怎么包装, 怎么装bigger, 最终还是基于tcp端到端传输的.本文主要分为两个部分: 一. 用Wireshark抓包来揭开ftp client GG和ftp server MM的勾搭内容.二.用C代码来简要模拟实现Windows自带的ftp client. 说明, 本文中的实验, 我用了两台电脑, 分别是p

某宝app抓包之代码实现

分析客户端代码 通过jeb打开apk获知,核心通信包使用的是mtop sdk,普通抓包工具charles.findler无法捕获相应包的根本原因在于,其采用了网络加载速度表现更卓越的SPDY协议,因此,需要阻止其使用该协议,才能抓包. 代码实现 只需让sdk的全局配置中执行下面这行代码即可: SwitchConfig.getInstance().setGlobalSpdySwitchOpen(false) 抓包效果 有对具体细节感兴趣的可以通过名字联系我. 原文地址:https://www.cn

fiddler手机抓包,支持前端代码调试

手机用fiddler抓包 电脑最好是笔记本,这样能和手机保持统一局域网内:其他不多说,直接说步骤了. 一.对PC(笔记本)参数进行配置    1. 配置fiddler允许监听到https(fiddler默认只抓取http格式的) 打开Fiddler菜单项Tools->TelerikFiddler Options->HTTPS, 勾选CaptureHTTPS CONNECTs,点击Actions, 勾选Decrypt HTTPS traffic和Ignore servercertificate

linux+jmeter+python基础+抓包拦截

LINUX 一 配置jdk 环境 *需要获取root权限,或者切换为root用户 1.windows下载好,去 http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 官方网站下载jdk(linux相应版本) 2.在usr目录下创建java路径文件夹 [root bin]cd /usr mkdir java 3.将jdk-8u60-linux-x64.tar.gz放到刚才创建的文件夹下

Python+Requests接口测试教程(1):Fiddler抓包工具

本书涵盖内容:fiddler.http协议.json.requests+unittest+报告.bs4.数据相关(mysql/oracle/logging)等内容.刚买须知:本书是针对零基础入门接口测试和python+requests自动化的,首先本书确实写的比较基础,对基础内容也写的很详细,所以大神绕道. 为什么要先学fiddler? 学习接口测试必学http协议,如果直接先讲协议,我估计小伙伴们更懵,为了更好的理解协议,先从抓包开始.结合抓包工具讲http协议更容易学一些. 1.1 抓fir

socket和抓包工具wireshark

最近在学习Python代码中的socket和抓包工具wireshark,故又将socket等概念又学习了一遍,温故而知新: Python代码如下: server: #!/usr/bin/python # -*- coding: UTF-8 -*- # 文件名:server.py import socket # 导入 socket 模块 s = socket.socket() # 创建 socket 对象 host = socket.gethostname() # 获取本地主机名 port = 1

tcpdump抓包命令

该命令是抓包分析工具,可以将数据包的头或者是整个包抓取下来进行分析,支持针对特定协议.主机进行过滤,同时支持逻辑操作. #抓取本机第一个网络接口通常是eth0上所有的包 tcpdump #抓取指定指定网卡上的的所有包 tcpdump -i eth0 抓取特定主机收到的和发出的所有包,这里的IP不是说包里有这个IP,而是说抓取流经这个主机的进出所有包 # -n 是显示IP和端口,也就是不解析主机名 tcpdump -n host [IP] 抓取特定主机之间的所有IP协议数据包 # 这里的ip指的是

抓包神器之tcpdump详解

当遇到掉包或丢包,网络不通了的网络故障,这时必然会听到抓包这个关键词,那什么是抓包呢? 想必大多数运维人都很熟悉windows下的抓包神器wireshark吧,虽说Linux下支持wireshare的安装,不过在Linux下有更强大的抓包神器,它就是tcpdump.用一句话来说就是"dump the traffic on a network".它支持针对网络层.协议.主机.网络或端口的过滤,提供了and/&&,or/||,not/!等逻辑语句来过滤无用的信息. 一.参数

性能测试概念点分析与过程讲解(四)--抓包

2. 抓包方式 1准备事项 安装抓包工具以及相关浏览器插件:Fiddler ,火狐浏览器的firebug,等.安装过程这里不再简述了,查阅我之前写过的文档,熟悉这些工具的使用方式. LR相关设置:对于手写脚本来说,录制设置其实不重要,因为用不到,那么这里主要需要对运行选项进行设置,也就是Run-time setting 选项中的相关内容,打开Vuser--->Run-time setting Run logic设置一般直接选择默认,这个设置的意思是运行时,action执行的次数,如果调试打算重复