#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=