忽略证书错误+无头木偶+谷歌云

时间:2019-03-17 13:40:57

标签: ssl-certificate google-cloud-functions chromium puppeteer headless

我尝试访问的网站存在ssl 证书错误

我正在使用此版本的操纵up "puppeteer": "1.13.0"

当我尝试await page.goto('http://bad_ssl_certificate_website')时,仅在 google cloud 上出现超时错误。

  

TimeoutError:导航超时已超过:

但是,在MAC上本地正常运行。

我认为问题出在我网站的ssl-certificate-errors上,因为如果我尝试使用“ google.com”,则在两种环境下都可以正常工作。 我用https://www.sslshopper.com检查ssl证书,它提到了这一点。

  

并非所有Web浏览器都信任该证书。您可能需要   安装中间/链证书以将其链接到受信任的根   证书。了解有关此错误的更多信息。您可以通过解决此问题   遵循DigiCert的证书安装说明为您   服务器平台。注意有关中级的部分   证书。

当我使用旧版本的 puppeteer 时,我在本地上也遇到了问题。 我看到了完全相同的错误

  

“ TimeoutError:导航超时超出:”

更新到最新版本的puppeteer只能解决在本地运行puppeteer的问题,但不能解决在 google cloud

上运行的puppeteer的问题。

这就是我设置木偶吃午饭的方式。

   const browser = await puppeteer.launch({
      headless: true,
      ignoreHTTPSErrors: true,
      args: [
        "--proxy-server='direct://'",
        '--proxy-bypass-list=*',
        '--disable-gpu',
        '--disable-dev-shm-usage',
        '--disable-setuid-sandbox',
        '--no-first-run',
        '--no-sandbox',
        '--no-zygote',
        '--single-process',
        '--ignore-certificate-errors',
        '--ignore-certificate-errors-spki-list',
        '--enable-features=NetworkService'
      ]
    });

我发现了一些相关问题: https://bugs.chromium.org/p/chromium/issues/detail?id=877075

1 个答案:

答案 0 :(得分:1)

--ignore-certificate-errors-spki-list实际上接受公钥哈希的白名单,而忽略与证书相关的错误。因此它的用法类似于:--ignore-certificate-errors-spki-list=jc7r1tE54FOO=

Chromium doc