用NodeJS实现反爬虫,原理&源码放送
来源:岁月联盟
时间:2020-02-16
//输出信息
result[key]=value;
}
//输出各种字体文件
font.output({
path:new_ttf
})
//返回值
return result;
}
/**
* express web
*/
var express = require('express');
var app = express();
app.use(body_parser.urlencoded({extended: true}));
var port = 8000;
var verstion = "0.0.1";
app.listen(port);
console.log("anti content splider");
console.log("v",verstion);
console.log("server at port:",port);
console.log("auther:","wangliwen");
console.log("copyleft","http://www.sharewaf.com");
//变型url特征池,存放要保护的ttf路径,使ttf路径不泄露
var transform_url = [];
//express中间件
app.use(function(req,res,next){
console.log(req.url,req.method);
if(req.method.toString().toLowerCase() == "get"){
//只处理get请求
//url
var url = req.url;
//首页访问
if(url == "/"){
url = "./admin/index.html"
}else{
url = "./admin" + url;
}
//变形url池
console.log(transform_url);
//把变形的url路径还原回去
for(var i=0; i//当前url,是否包含有变形池中的某条特征内容
if(url.indexOf(transform_url[i]) != -1){
//当前时间
var visit_time = (new Date).getTime();
//访问时间 - 生成时间变量
console.log((visit_time - transform_url[i]))
//超过一定时间访问,视为非法
//原理:打开html时,会立刻引用页面中引用的ttf,时间间隔不会超过100毫秒
if((visit_time - transform_url[i]) > 100){
res.end("oooops");
return;
}
//还原路径
url = url.replace(new RegExp(transform_url[i],"g"), "font_dest");
console.log("before:",transform_url)
//删除使用过的时间变量
delete transform_url[i];
transform_url.splice(i,1);
console.log("after:",transform_url)
}
}
//真实地址
console.log("really url:",url);
//读取文件内容
var file_content = fs.readFileSync(url)
上一页 [1] [2] [3] [4] 下一页