【问题标题】:Puppeteer loads blank page with 429 when accessing URL访问 URL 时 Puppeteer 加载空白页面 429
【发布时间】:2019-10-23 08:01:27
【问题描述】:

我正在从事一个从酒店网站获取定价信息的项目,但在 puppeteer 中加载网站时无法执行任何搜索。

这是我打开 Chrome 的 JavaScript 的 sn-p。

const puppeteer = require('puppeteer');

(async () => {
  const browser = await puppeteer.launch({ headless: false, devTools: false });
  const page = await browser.newPage();
  await page.setUserAgent('Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3683.103 Safari/537.36');

  await page.goto('https://www.hyatt.com/');

})();

他们如何检测到我正在使用由 Puppeteer 控制的 Chrome,即使它运行的是一个有头的浏览器?

谢谢

【问题讨论】:

    标签: javascript node.js web-scraping chromium puppeteer


    【解决方案1】:

    尝试添加以下预期的标题

    'accept-language' : 'en-US,en;q=0.9'
    

    用其他语言为我工作。

    从这个answer看来,您需要类似的东西:

    await page.setExtraHTTPHeaders({
        'Accept-Language': 'en-US,en;q=0.9'
    });
    

    【讨论】:

      【解决方案2】:

      他们在给你打指纹。它是一些 javascript,它枚举浏览器插件和导航器对象等内容并将其发送回服务器。

      因此,您必须拦截该帖子并将其更改为普通浏览器会发送的内容。

      【讨论】:

      • 你能举个详细的例子吗?我也在努力解决这个问题。我正在使用我的谷歌浏览器访问 URL,一切都很好。但是,在将 Puppeteer 与 Chromium 一起使用时,URL 会不断返回 429 和空白页面。
      【解决方案3】:

      该页面正在使用 Fingerprintjs2 分析您的浏览器,然后让您访问该页面。

      根据您的第一个请求,该页面会将您转到一个特殊的检测页面,该页面使用Fingerprint2。引用自 github 仓库:

      现代灵活的浏览器指纹库

      代码会检查各种浏览器信息,比如你设备的具体属性、时区、pixelRatio等。你可以在github上的this file找到实际的源代码。

      您必须更改所有类型的浏览器属性才能使指纹库真正认为您是“普通用户”。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-11
        • 1970-01-01
        • 2019-02-25
        • 2012-12-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多