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

Ale*_*lii 10 headless ssl-certificate chromium google-cloud-functions puppeteer

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

我正在使用这个版本的 puppeteer "puppeteer": "1.13.0"

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

超时错误:超出导航超时:

然而,它在 MAC本地运行得非常好。

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

并非所有 Web 浏览器都信任该证书。您可能需要安装中间/链证书以将其链接到受信任的根证书。了解有关此错误的更多信息。您可以按照适用于您的服务器平台的 DigiCert 证书安装说明来修复此问题。请注意有关中级证书的部分。

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

“超时错误:超出导航超时:”

更新到最新版本的 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'
      ]
    });
Run Code Online (Sandbox Code Playgroud)

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

小智 7

只需交 .IgnoreHTTPSErrors = TrueLaunchAsync构造函数即可。

例子:

await new BrowserFetcher().DownloadAsync(BrowserFetcher.DefaultRevision);
var browser = await Puppeteer.LaunchAsync(new LaunchOptions()
{
    Headless: true,
    IgnoreHTTPSErrors: true
});
Run Code Online (Sandbox Code Playgroud)


Yur*_*uri 3

实际上--ignore-certificate-errors-spki-list接受公钥哈希白名单,忽略与证书相关的错误。所以它的用法如下:--ignore-certificate-errors-spki-list=jc7r1tE54FOO=

铬文档