php爬虫伪造请求头,Nodejs 伪造IP 爬取图片
//Nodejs 模拟IP 爬取图片
var _ = require('underscore');
var cheerio = require('cheerio');
var superagent = require('superagent');
var async = require('async');
var mkdirp = require('mkdirp');
var fs = require('fs');
var http = require('http');
//本地存储目录
var dir = './images';
//创建目录
mkdirp(dir, function(err) {
if(err){
console.log(err);
}
});
var imgList = new Array();
var url = "http://www.easyicon.net/iconsearch/iconset:flatastic-icons";
getData(url);
console.log(imgList.length)
function getData(url){
console.log("url" , url)
superagent.get(url).end(function (err, sres) {
if (err) {
console.log(err)
return;
}
var $ = cheerio.load(sres.text);
var pages_all = $(".pages_all");
var thisPage = pages_all.find("span");
var next = thisPage.next();
var liList = $("#container").find("ol").find("li");
var pages = new Array();
_.each(liList , function(item , index){
if(index == 0 ){
return;
}
var href = $(item).find("a").eq(0).attr("href");
//获取数据,下载
//getHtml(href);
pages.push(href);
})
console.log(pages.length)
async.eachSeries(pages, function(item,callback){
console.log("-一轮结束111-")
getHtml(item , function(){
console.log("-一轮结束22-")
callback(null)
});
}, function(err , result) {
if(err){
console.log("-一轮结束-" + err)
}
console.log("-一轮结束-")
var href = next.attr("href");
if(href){
href = "http://www.easyicon.net" + href;
getData(href);
}
});
});
}
var getHtml = function(href , getHtmlCB){
var temp = "http://www.easyicon.net" + href;
console.log(temp)
superagent.get(temp).end(function (err, sres) {
if (err) {
console.log(err)
return;
}
var $ = cheerio.load(sres.text);
var name = $(".icon_img_one").find("img").attr("alt");
if(name){
name = name.replace(/ /g , "_")
}
var a96 = $("img[width=96]").parent().find("a").eq(0);
var href96 = a96.attr("href");
var a64 = $("img[width=64]").parent().find("a").eq(0);
var href64 = a64.attr("href");
var a32 = $("img[width=32]").parent().find("a").eq(0);
var href32 = a32.attr("href");
//saveImg(href96 , dir , name + "@3x.png" );
// saveImg(href64 , dir , name + "@2x.png" );
// saveImg(href32 , dir , name + ".png" );
console.log("---")
async.parallel(
[function(cb){
console.log("---11")
saveImagea(href96 , dir , name + "@3x.png" , function(){
cb(null);
})
},
function(cb){
saveImagea(href64 , dir , name + "@2x.png", function(){
cb(null);
} )
},
function(cb){
saveImagea(href32 , dir , name + ".png", function(){
cb(null);
} )
}
] , function(err, results){
if(err){
console.log("下载出错")
}
getHtmlCB();
})
});
}
/**
* 模拟ip,下载图片
* @param url
* @param dir
* @param name
* @param cb
*/
var saveImagea = function (url, dir,name , cb){
var ip = _.random(1 , 254)
+ "." + _.random(1 , 254)
+ "." + _.random(1 , 254)
+ "." + _.random(1 , 254)
console.log(url , ip)
superagent
.get(url)
//.set("X-Forwarded-For" , "10.111.198.90")
.set("X-Forwarded-For" , ip)
.end(function (err, sres) {
if (err) {
console.log(err)
return;
}sres
//console.log(sres.body);
fs.writeFile(dir + "/"+name, sres.body, 'binary', function (err) {
if (err) throw err;
console.log('file saved '+name);
cb();
});
})
}
function saveImg(url, dir,name , cb){
http.get(url, function(res){
res.setEncoding('binary');
var data='';
res.on('data', function(chunk){
data+=chunk;
});
res.on('end', function(){
fs.writeFile(dir + "/"+name, data, 'binary', function (err) {
if (err) throw err;
console.log('file saved '+name);
console.log("---")
cb();
});
});
}).on('error', function(e) {
console.log('error'+e)
cb();
});
}
php爬虫伪造请求头,Nodejs 伪造IP 爬取图片相关推荐
- DNS反射放大攻击分析——DNS反射放大攻击主要是利用DNS回复包比请求包大的特点,放大流量,伪造请求包的源IP地址为受害者IP,将应答包的流量引入受害的服务器...
DNS反射放大攻击分析 摘自:http://www.shaojike.com/2016/08/19/DNS%E6%94%BE%E5%A4%A7%E6%94%BB%E5%87%BB%E7%AE%80%E ...
- 08-Flutter移动电商实战-dio基础_伪造请求头获取数据
08-Flutter移动电商实战-dio基础_伪造请求头获取数据 在很多时候,后端为了安全都会有一些请求头的限制,只有请求头对了,才能正确返回数据.这虽然限制了一些人恶意请求数据,但是对于我们聪明的程 ...
- firefox伪造请求头信息,模拟手机访问网站
大概有两年没有去过chinaz的论坛了,昨天上去逛了逛.正好看到一个朋友在问百度是如何判断是不是手机登录的.有几个热心朋友回答的是js,我把百度首页的js看了下,没有找到一丝的手持设备判断的信息,我也 ...
- Firefox伪造请求头
原文地址:http://justcoding.iteye.com/blog/2086233 Firefox黑客插件:http://blog.csdn.NET/stilling2006/article/ ...
- python伪造请求头x-forwarded-for的作用_Pyspider中给爬虫伪造随机请求头的实例
Pyspider 中采用了 tornado 库来做 http 请求,在请求过程中可以添加各种参数,例如请求链接超时时间,请求传输数据超时时间,请求头等等,但是根据pyspider的原始框架,给爬虫添加 ...
- 修改哪个请求头可以伪造请求ip_欧姆龙NX系列EtherNet/IP通信
1.Ethernet/IP基础 工业以太网协议 (Ethernet/IP) 是由ODVA所开发并得到了罗克韦尔自动化的强大支持.它使用已用于ControlNet和DeviceNet的控制和信息协议 ( ...
- 修改哪个请求头可以伪造请求ip_基于EtherNet/IP实现欧姆龙NX系列PLC通信
1.引言 工业以太网协议 (Ethernet/IP) 是由ODVA所开发并得到了罗克韦尔自动化的强大支持.它使用已用于ControlNet和DeviceNet的控制和信息协议 (CIP) 为应用层协议 ...
- ajax伪造请求头设置失败,以及浏览器插件解决方案(待完善)
w3c规定,当请求的header匹配以下不安全字符时,将被终止,具体参考如下: Accept-Charset Accept-Encoding Connection Content-Length Coo ...
- Python 爬虫 Request(请求头)和Response(响应头)的 内容详解 【爬虫资料二】
Resquest请求头[以访问知乎]为例(使用Fiddler抓的包) 请求行包含的信息: 请求的方法(POST) #其他的方法还有GET.HEAD.PUT.DELETE.OPTIONS.TRACE ...
最新文章
- 数组方法深入扩展(遍历forEach,filter,reduce等)
- python-leepcode-作用解析 - 5-27
- 全球及中国拉丝润滑剂粉末行业投资潜力及发展战略规划报告2021-2027年
- 跟小段一起学Solaris(20)---ipFilter防火墙
- 专栏-美国人口和都市区
- wxWidgets:wxTimePickerCtrl类用法
- js时间搓化为今天明天_来揭秘化妆品为啥会搓泥?
- 【C语言】Find The Single Dog(标志变量的使用)
- pytorch卷积神经网络_【深度学习】卷积神经网络图片分类案例(pytorch实现)
- 力扣 26.删除有序数组中的重复元素
- python如何使用sdk_Python_sdk首页、文档和下载 - 优图人脸识别sdk - OSCHINA - 中文开源技术交流社区...
- python ----元组方法以及修改细节
- UVA11582 Colossal Fibonacci Numbers!【快速模幂+数列模除】
- Spark RDD 之间的依赖关系
- 大数据毕设/课设 - 基于大数据的医疗与疾病监控大数据可视化设计与实现
- 爱情骗我说有个地方叫地久天长
- java三种功能加强模式
- ROS导航调参经验总结(Teb算法)
- html基础、h5c3高级c3动画 、 JavaScript初高级、css预处理器和git 部分面试题
- 中华文明探源工程初步结果----DNA数据 中国人种源头分布一览表