人偶无法导航到网址(ERR_EMPTY_RESPONSE)

时间:2018-12-12 11:07:09

标签: node.js chromium puppeteer

问题 这是您使用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的错还是我有其他问题? '失踪了?为什么这不起作用?

环境

  • 木偶版本:1.10.0
  • 平台/操作系统版本:macOS High Sierra 10.13.6
  • Node.js版本:10.13

1 个答案:

答案 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)");,它将按预期工作。

如果网站试图检测伪造者(有很多其他方法可以检测到),那是因为他们不希望自动访问其信息。因此,如果在您不拥有的网站上运行它,则应尊重其数据。