防御原理 (Defense Mechanics)
深入解析JS防爬虫技术的三大核心机制:JS Challenge、动态签名与环境检测。
工作流程 (Workflow)
迫使客户端执行JS代码以证明其为真实浏览器
1. 首次请求拦截
服务器返回一段混淆的JS代码而非真实内容。状态码通常为 503 或 200。
2. 浏览器执行计算
真实浏览器自动执行JS,计算出验证Token(如数学运算、Hash计算)。
3. 二次请求验证
浏览器携带Token自动刷新或发送新请求。服务器验证通过后设置Cookie。
代码示例 (Implementation)
javascript
// 服务器端生成的 Challenge 代码
<script>
(function(){
var a = function() { return Date.now() / 1000; };
var b = function(x) { return x * 3 + 15; };
var token = b(a());
// 设置 Cookie 并刷新
document.cookie = "verify_token=" + token + "; path=/";
location.reload();
})();
</script>⚠️ 防御效果:普通 HTTP 爬虫(如 Python requests)无法执行这段代码,因此无法获取 Token,请求会被持续拦截。