最近發現很多網站出現了前端反調試debugger來反爬,防止數據被抓取,實際上是很簡單的原理,其實也就是js搞的鬼,看來作爲一名合格的爬蟲工程師,在js的道路上也會越走越遠–!廢話不多說,看圖→
Paused in debugger, 是不是看着很熟悉,接下來就是如何solve它。
首先我們需要找到call stack裏是什麼阻斷了我們,比如七麥網,我們可以看到,e參數以及t參數,我們雙擊進去,可以看到以下js代碼。
function t() {
try {
var a=["r","e","g","g","u","b","e","d"].reverse().join("");
!function e(n) {
(1 !== ("" + n / n).length || 0 === n) && function() {}
.constructor(a)(),
e(++n)
}(0)
} catch (a) {
setTimeout(t, 500)
}
}
這段代碼的意思就是每0.5S就阻斷你一次,要怎麼解決很簡單,把這個函數重構即可,以七麥網爲例,在控制檯輸入:
t = function(){}
然後關閉debug再次打開,就可以放心調試了。
注意! 有些網站的反調試不止是這種函數,也有可能是匿名函數,但是目前來說我還沒遇見過,如果有童鞋遇見了且無法解決,可以在我博客下方留言。