我正在研究一个从酒店网站获取价格信息的项目,但是将网站加载到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?
谢谢
答案 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中找到实际的源代码。
您将必须更改所有浏览器属性,以使指纹库实际上认为您是“普通用户”。