用NodeJS实现反爬虫,原理&源码放送

来源:岁月联盟 编辑:猪蛋儿 时间:2020-02-16
        font.setGlyph(key,word);
        //输出信息
        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]  下一页