игнорировать ошибки сертификата кукловод без головы облако Google

#ssl-certificate #google-cloud-functions #chromium #puppeteer #headless

#ssl-сертификат #google-cloud-функции #chromium #кукловод #без головы

Вопрос:

Веб-сайт, к которому я пытаюсь получить доступ, содержит ошибки сертификата ssl

Я использую эту версию кукловода "puppeteer": "1.13.0" .

Когда я пытаюсь await page.goto('http://bad_ssl_certificate_website') , у меня ошибка тайм-аута только в облаке Google.

Ошибка таймаута: превышен тайм-аут навигации:

Тем не менее, он отлично работает локально на MAC.

Я думаю, что проблема в ошибках ssl-сертификата для моего веб-сайта, потому что, если я попытаюсь с «google.com » это нормально работает в обеих средах. Я использовал https://www.sslshopper.com чтобы проверить ssl-сертификаты, и в нем упоминалось об этом.

Сертификату доверяют не во всех веб-браузерах. Возможно, вам потребуется установить промежуточный / цепной сертификат, чтобы связать его с доверенным корневым сертификатом. Узнайте больше об этой ошибке. Вы можете исправить это, следуя инструкциям DigiCert по установке сертификата для вашей серверной платформы. Обратите внимание на разделы о промежуточных сертификатах.

Когда я использовал более старую версию puppeteer, у меня также были проблемы локально. Я видел точно такую же ошибку

Ошибка таймаута: превышен тайм-аут навигации:’

Обновление до последней версии puppeteer исправило только локальный запуск кукловода, но не исправило запуск кукловода в облаке Google

Вот как я настраиваю кукловода на обед.

    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. Боже мой!! Ваша конфигурация спасла мне жизнь. 2 дня я пытался перенести playwright works из docker на мой локальный веб-сайт, сертифицированный самостоятельно. Мне пришлось прочитать документацию Chrome, чтобы найти ‘-ignore-certificate-errors-spki-list’ и попасть сюда. Это должно быть в документации драматурга и кукловода для справки

Ответ №1:

Просто включите .IgnoreHTTPSErrors = True в LaunchAsync конструктор.

Пример:

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

Ответ №2:

--ignore-certificate-errors-spki-list Фактически принимает белый список хэшей открытых ключей, игнорируя ошибки, связанные с сертификатом. Таким образом, он используется как: --ignore-certificate-errors-spki-list=jc7r1tE54FOO=

Chromium doc