您如何抓取已禁用DevTools的网站

时间:2020-02-16 13:14:42

标签: javascript web-scraping google-chrome-devtools puppeteer cheerio

如何抓取禁用了Chrome DevTools的网站?

我使用Puppeteer尝试使用其各自的CSS选择器来获取特定航空公司的出发和到达时间,但是由于DevTool被禁用,因此并未成功。

经过一番检查,类似于Facebook所做的,我发现该网站禁用了DevTools,Puppeteer控制浏览器的协议。我似乎无法在控制台中运行任何有效的JavaScript函数。

请问,有什么方法可以抓取这样的网站?

enter image description here

更新

事实证明,该站点加载了此JavaScript函数,在此以下,这限制了我在控制台中运行任何有效JavaScript代码的能力。

function preventAction(a) {
  a.preventDefault();
  return false
}
jQuery(function() {
  $(document).on("paste", "input", preventAction);
  $(document).on("drop", "input", preventAction);
  $("html").css({
    userSelect: "none"
  })
});
$(function() {
  var c = 0;
  function b() {
    if (!c) {
      setTimeout(function() {
        console.warn("%cYou are not allowed to use developer tools in Production mode!", "font: 2em sans-serif; color: yellow; background-color: red;")
      }, 1);
      c = 1
    }
    throw "Console is disabled!"
  }
  var a, d = {
    set: function(e) {
      a = e
    },
    get: function() {
      b();
      return a
    }
  };
  console.log("2016 Hitit Computer Services");
  console.warn("%cYou are not allowed to use developer tools in Production mode!", "font: 2em sans-serif; color: #fefefe; background-color: #B5121B; padding: 4px;");
  Object.defineProperty(console, "_commandLineAPI", d);
  Object.defineProperty(console, "__commandLineAPI", d);
  Object.defineProperty(window, "_commandLineAPI", d);
  Object.defineProperty(window, "__commandLineAPI", d);
  Object.defineProperty(window, "console", d)
});

反正有没有使用Puppeteer覆盖站点加载的功能Object.defineProperty(console,"_commandLineAPI",d)的功能,所以我可以使用cheerio遍历DOM树?

0 个答案:

没有答案