Механизировать: SSL: CERTIFICATE_VERIFY_FAILED - PullRequest
0 голосов
/ 13 мая 2018

Что ж, я пытался создать скрипт автоматического входа в систему для моего wifi в общежитии, мне нужно войти в wifi для получения доступа к сети. Веб-страница остается открытой в локальной сети, если я подключен к Wi-Fi. Мне просто нужно зайти на веб-страницу и зайти туда Поэтому я пытался использовать механизировать для входа в систему.

Вот код Python.

Я только что пытался напечатать из.

import mechanize
br = mechanize.Browser()
br.set_handle_robots(False)
br.open("https://192.168.10.3/connect/PortalMain")
for f in br.forms():
    print f

Я получаю ошибку

Traceback (most recent call last):
  File "demo.py", line 4, in <module>
    br.open("https://192.168.10.3/connect/PortalMain")
  File "/usr/local/lib/python2.7/site-packages/mechanize/_mechanize.py", line 254, in open
    return self._mech_open(url_or_request, data, timeout=timeout)
  File "/usr/local/lib/python2.7/site-packages/mechanize/_mechanize.py", line 284, in _mech_open
    response = UserAgentBase.open(self, request, data)
  File "/usr/local/lib/python2.7/site-packages/mechanize/_opener.py", line 195, in open
    response = urlopen(self, req, data)
  File "/usr/local/lib/python2.7/site-packages/mechanize/_urllib2_fork.py", line 352, in _open
    '_open', req)
  File "/usr/local/lib/python2.7/site-packages/mechanize/_urllib2_fork.py", line 340, in _call_chain
    result = func(*args)
  File "/usr/local/lib/python2.7/site-packages/mechanize/_urllib2_fork.py", line 1215, in https_open
    return self.do_open(conn_factory, req)
  File "/usr/local/lib/python2.7/site-packages/mechanize/_urllib2_fork.py", line 1160, in do_open
    raise URLError(err)
urllib2.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:661)>

1 Ответ

0 голосов
/ 13 мая 2018

Сайт, вероятно, использует самозаверяющий сертификат SSL, вы можете отключить проверку SSL (хотя сначала вы должны понимать риски безопасности), добавить этот код перед br.open ():

import ssl
try:
    _create_unverified_https_context = ssl._create_unverified_context
except AttributeError:
    # Legacy Python that doesn't verify HTTPS certificates by default
    pass
else:
    # Handle target environment that doesn't support HTTPS verification
    ssl._create_default_https_context = _create_unverified_https_context

Источник: Отключить проверку сертификата ssl в механизме

Так что в вашем случае код в конечном итоге будет:

import mechanize
import ssl

ssl._create_default_https_context = ssl._create_unverified_context
br = mechanize.Browser()
br.set_handle_robots(False)
br.open("https://192.168.10.3/connect/PortalMain")
for f in br.forms():
    print f

Должно работать, но я его не проверял.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...