背景
现在做数据爬虫的朋友常有的方法就是利用浏览器的调试能力分析别人JS代码逻辑。如果遇到复杂的代码可能会第三方代码执行功能。例如使用puppeteer的evalute方法执行代码获取结果。
而我们做反爬遇到这种情况就是进行调试干扰,例如加入定时器,重复调用debugger,那么调试模式下就影响调试。

而对于类似通过evalute方法执行代码进行抓取的爬虫通过异常调用栈即可检测。例如执行代码中故意插入一段代码,并产生错误,那么通过调用栈可以检测到函数名,这样就可以进行识别。
let checkFunc = function () {
let detected = false;
let stack;
try {
(void 0).c;
} catch (error) {
stack = (error || {
}).stack;
detected = (stack && typeof stack === "string" && (stack.indexOf("eval"

本文探讨了反爬虫技术中的调试干扰方法,如通过定时器和字符串拼接来规避debugger的使用,以及如何通过修改evalute方法执行代码的调用栈来检测并识别爬虫。同时,提供了具体的代码示例来解释如何实现这些策略。
最低0.47元/天 解锁文章
2127





