木偶:如何在page.goto()。catch中获取httpcode?

时间:2019-11-06 02:00:07

标签: puppeteer

我想打开一个URL并收集其httpcode和错误,但是我无法在goto()。catch中获取其httpcode。

let result = {};
page.goto(url)
            .then(res => {
                result['http-code'] = res.status();
            })
            .catch(err => {
                result['http-code'] = '?'; // TODO: get http-code in goto().catch
                result['page-error'] = err + '';
            })
            .then(() => {
                res.json(result);
            });

1 个答案:

答案 0 :(得分:0)

这是不可能的。

TL; DR

因为远程服务器返回任何有效的HTTP状态代码(包括404“未找到”和500“内部服务器错误”)时,page.goto方法不会引发错误。可以通过调用response.status();

来检索此类响应的状态代码。

page.goto在以下情况下将引发错误:

  • 存在SSL错误(例如,在自签名证书的情况下)。
  • 目标网址无效。
  • 导航期间超时。
  • 远程服务器无响应或无法访问。 主要资源加载失败。
  

注意   page.goto抛出错误或返回主资源响应。唯一的例外是导航到about:blank或导航到具有不同哈希值的相同URL,这将成功并返回null。