Puppeteer 无法导航至 url (ERR_EMPTY_RESPONSE)

Puppeteer fails to navigate to url (ERR_EMPTY_RESPONSE)

问题 这是您可以编写的最简单的代码,用于使用 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 的错还是我遗漏了什么?为什么这不起作用?

环境

一些网站可能正在检测 puppeteer,因为它有一个特定的用户代理: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)");,它将按预期工作。

如果一个网站试图检测木偶操纵者(有很多其他方法可以做到),那是因为他们不希望他们的信息被自动访问。因此,如果您 运行 在不属于您的网站上使用它,您应该尊重它的数据。