网络爬虫-绕过debugger反爬(Paused in debugger)

最近发现很多网站出现了前端反调试debugger来反爬,防止数据被抓取,实际上是很简单的原理,其实也就是js搞的鬼,看来作为一名合格的爬虫工程师,在js的道路上也会越走越远–!废话不多说,看图→

网络爬虫-绕过debugger反爬(Paused in debugger)_第1张图片

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(){}

网络爬虫-绕过debugger反爬(Paused in debugger)_第2张图片

然后关闭debug再次打开,就可以放心调试了。

注意! 有些网站的反调试不止是这种函数,也有可能是匿名函数,但是目前来说我还没遇见过,如果有童鞋遇见了且无法解决,可以在我博客下方留言。

你可能感兴趣的:(MySpider)