当访问URL时,Puppeteer用429加载空白页

时间:2019-06-07 20:06:14

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

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

这是打开Chrome的我的JavaScript的代码段。

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?

谢谢

3 个答案:

答案 0 :(得分:0)

尝试添加以下预期的标题

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

以其他语言为我工作。

在此answer中,您似乎需要以下内容:

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

答案 1 :(得分:0)

他们在给你打指纹。这是一些JavaScript,它枚举了诸如浏览器插件和导航器对象之类的内容,并将其发送回服务器。

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

答案 2 :(得分:0)

该页面正在使用 Fingerprintjs2 分析浏览器,然后才能访问该页面。

在您的第一个请求上,该页面会将您发送到使用Fingerprint2的特殊检测页面。引用github仓库中的内容:

  

现代而灵活的浏览器指纹库

代码将检查各种浏览器信息,例如特定的属性,时区,设备的pixelRatio等。您可以在github上的this file中找到实际的源代码。

您将必须更改所有浏览器属性,以使指纹库实际上认为您是“普通用户”。