问题
这是您使用puppeteer
可以导航到页面的最简单代码:
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
page.on('response', response => {console.log(response.request().url())});
page.on('error', error => {console.error(error.message)});
await page.goto('https://www.vueling.com/es');
await browser.close();
})();
但这会产生错误:
UnhandledPromiseRejectionWarning: Error: net::ERR_EMPTY_RESPONSE at https://www.vueling.com/es
问题
当我尝试使用Chrome / Chromium(5个〜7“中有135个请求)时,此页面可以完美加载。我的问题是,这是puppeteer
的问题,是Chrome的错还是我有其他问题? '失踪了?为什么这不起作用?
环境
答案 0 :(得分:1)
某些网站可能正在检测伪造者,因为它具有特定的用户代理:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/72.0.3617.0 Safari/537.36
。您会在这一个 Headless Chrome 中发现它。
如果在使用常规浏览器用户代理加载页面之前覆盖用户代理:await page.setUserAgent("Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)");
,它将按预期工作。
如果网站试图检测伪造者(有很多其他方法可以检测到),那是因为他们不希望自动访问其信息。因此,如果在您不拥有的网站上运行它,则应尊重其数据。