Error ssl client socket impl cc
Программа работает правильно, в цикле (раз в минуту) обновляет и опрашивает значение одного из элементов заданной страницы, даёт верное текущее значение, пишет в файл и т.д. А в терминале каждый раз выбивает такое сообщение:
Python:
ERROR:ssl_client_socket_impl.cc(960)] handshake failed; returned -1, SSL error code 1, net_error -101
Что это может означать? Нужно ли в принципе с этим бороться? Программа работает, если по результату, нормально.
Ответ
Проблемы с сертификатом у сайта с которого вы берете данные.
Чтобы ошибка не появлялась можно попробовать добавить опцию ‘–ignore-certificate-errors’.
Вот пример:
Python:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
options = Options()
options.add_argument(‘–ignore-certificate-errors’)
driver = webdriver.Chrome(options=options)
Адаптировал в свой текст и — завелась. Терминал чист. Спс!
Selenium ssl_client_socket_impl.cc handshake failed
Я получаю эту ошибку во время тестирования с помощью Selenium
[18912:1216:0116/175151.966:ERROR:ssl_client_socket_impl.cc(960)] handshake failed; returned -1, SSL error code 1, net_error -101
Мой текущий код
settings = {
‘proxy’:{
‘https’:’https://’ + proxy
}
}
options = webdriver.ChromeOptions()
options.add_argument(‘–ignore-certificate-errors-spki-list’)
options.add_argument(‘–ignore-ssl-errors’)
self.driver = webdriver.Chrome(seleniumwire_options=settings, chrome_options=options)
Есть ли какой-либо другой способ игнорировать / устранить эту ошибку?
Ответ
В соответствии со списком переключателей командной строки для Chromium (который подходит для вашего случая) вам необходимо использовать –ignore-certificate-errors-spki-listв качестве аргумента параметра webdriver.
Ваш фрагмент кода options.add_argument(‘–ignore-certificate-errors-spki-list’)реализует это правильно (см. , соответственно, кодовую базу Chromium для kIgnoreCertificateErrorsSPKIList[]). На небольшой не по теме заметке –ignore-certificate-errors(как предлагается в различных вопросах StackOverflow) устарел.
Во всяком случае, вообще говоря, ваше сообщение об ошибке выводит, что квитирование между вашим Selenium ChromeDriver и браузером Chrome не удалось на пути выполнения. Если мы посмотримssl_client_socket_impl.cc, мы увидим SSLClientSocketImpl::DoHandshake()(что вызывает вашу ошибку).
К сожалению, вы не можете исправить эту ошибку! К счастью, ошибка не приведет к прерыванию вашей программы вообще. Если вас беспокоят только сами сообщения, не стесняйтесь сжимать все предупреждающие сообщения через options.add_argument(‘log-level=INT’), тогда INTкак это может быть один из документированных уровней журнала
Таким образом, вы можете использовать options.add_argument(‘log-level=3’)для подавления всех видов информации, предупреждений, ошибок или фатальных сообщений (возможно, рекомендуется использовать только уровень 2 для ошибок). Пожалуйста, имейте в виду, что вы не увидите никаких других сообщений, связанных с ошибками, которые могут привести к сбоям в работе!