用NodeJS实现反爬虫,原理&源码放送
来源:岁月联盟
时间:2020-02-16
if(url.indexOf("/test.html") !=- 1){
//如果是此html文件,则对文件中的原始字体路径做保护
//网页源码
file_content = file_content.toString();
//遍历变码矩阵,对网页中的文字进行变码
for (var index in transfer_result){
console.log(index,transfer_result[index]);
//正则全局替换
file_content = file_content.replace(new RegExp(transfer_result[index],"g"), index+";");
}
var count = (file_content.split('font_dest')).length - 1;
console.log("replaced:",count);
//以时间做为参照值
var time_parm = (new Date).getTime();
//字体路径保护,将正确路径font_dest替换为时间值
file_content = file_content.replace(new RegExp("font_dest","g"), time_parm);
//存入变型url特征池
for(var i=0; i//内容head,写入mime
res.writeHead(200,{"content-type":mime.getType(url)});
console.log(url, "mime:", mime.getType(url));
//内容
res.write(file_content);
res.end();
}else{
//get之外请求
next();
}
})
//post操作
app.post("/transform_ttf",function(req,res){
console.log(req.body);
//前端传入的、要变码的字
var transform_words = req.body.transform_words.toString().split(",");
//默认变码符号
transform_words.push("。");
//源和目标字体目录
var ttf = "./admin/font_src/" + req.body.font_src;
var new_ttf = "./admin/font_dest/" + req.body.font_dest;
//变码结果
transfer_result = transform_ttf(
ttf,
transform_words,
new_ttf
);
console.log(transfer_result);
//写入文件,给其名称:变码矩阵
fs.writeFileSync("./config.js","exports.tramsform_matrix="+ JSON.stringify(transfer_result));
res.send("transform complete!");
});
/**
* express,结束
*/
代码中已有详细注释。
config.js是字体编码与文字对应关系,源码中称为“变码距阵”,内容如下:
exports.tramsform_matrix={"Ԕ":"我","ԕ":"你","Ԗ":"他","ԗ":"只","Ԙ":"保","ԙ":"码","Ԛ":"用","ԛ":"。"}
注:当进行动态变码操作时,此文件内容会发生变化。
admin目录下,是几个静态网页文件:
index.html内容如下:
上一页 [1] [2] [3] [4] 下一页