【问题标题】:Puppeteer fails to navigate to url (ERR_EMPTY_RESPONSE)Puppeteer 无法导航到 url (ERR_EMPTY_RESPONSE)
【发布时间】:2018-12-12 11:07:09
【问题描述】:

问题 这是使用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 个请求)。我的问题是,这是 puppeteers 的事情,是 Chrome 的错还是我还有其他问题不见了?为什么这不起作用?

环境

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

【问题讨论】:

  • 我知道这不是一个标准问题。它应该更简洁。但我从github/puppeteer issues 交叉发帖,试图在这里获得一些帮助

标签: node.js chromium puppeteer


【解决方案1】:

某些网站可能会检测到 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)");,它会按预期工作。

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

【讨论】:

  • 对我来说,我已经在使用自定义 UA,但还是不行。
猜你喜欢
  • 2021-08-23
  • 2019-10-06
  • 1970-01-01
  • 1970-01-01
  • 2016-06-02
  • 2018-01-27
  • 2016-07-18
  • 1970-01-01
  • 2021-03-25
相关资源
最近更新 更多