sunorg
2022-11-22 09:08:46 +08:00
之前我的做法
拒绝 dev tool
```
function checkDebugger(){
const d=new Date();
debugger;
const dur=Date.now()-d;
if(dur<5){
return false;
}else{
return true;
}
}
function breakDebugger(){
if(checkDebugger()){
breakDebugger();
}
}
document.body.onclick=function(){
breakDebugger();
alert(1);
};
```
检测 chrome headless ,然后执行某命令
```
function checkHeadless()
{
if(typeof MessageEvent === "function") {
if(typeof getBoxObjectFor === "function"){
return true;
}
}
if (/HeadlessChrome/.test(window.navigator.userAgent)) {
handleHeadLess();
}
if(navigator.plugins.length == 0) {
handleHeadLess();
}
if(navigator.languages == "") {
handleHeadLess();
}
var canvas = document.createElement('canvas');
var gl = canvas.getContext('webgl');
var debugInfo = gl.getExtension('WEBGL_debug_renderer_info');
var vendor = gl.getParameter(debugInfo.UNMASKED_VENDOR_WEBGL);
var renderer = gl.getParameter(debugInfo.UNMASKED_RENDERER_WEBGL);
if(vendor == "Brian Paul" && renderer == "Mesa OffScreen") {
handleHeadLess();
}
var body = document.getElementsByTagName("body")[0];
var image = document.createElement("img");
image.src = "http://iloveponeydotcom32188.jg";
image.setAttribute("id", "fakeimage");
body.appendChild(image);
image.onerror = function(){
if(image.width == 0 && image.height == 0) {
handleHeadLess();
}
}
}
function handleHeadLess()
{
$jsHandleHeadLessCmd //改造这里,做你想要的动作
}
```
数字倒叙,用 css 控制成正序显示
关键文字随机每次都加载生成不同的字库
浏览器指纹
服务端拿到 ip 后,扫描该 ip 端口,有指定端口者认为是爬虫
服务端拿到 IP 后,到订单池里找,有消费记录的加权
canvas 指纹和 reCaptcha 的配合,拿到指纹之后,如果单位时间访问量过多,我们可以临时认为它是爬虫。然后弹出验证窗口。注意这个指纹必须产生足够复杂的图形,才可以尽可能拿到像素级别的差异。