使用mechanize获取证书验证失败错误

lea*_*tes 9 python ssl mechanize

我尝试运行代码时收到此错误:

  File "C:\Python27\lib\site-packages\mechanize\_urllib2_fork.py", line 1118, in do_open
raise URLError(err)
urllib2.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:581)>
Run Code Online (Sandbox Code Playgroud)

我在Windows 8.1上运行它,我可以打开https请求没有问题,但是如果我使用mechanize我就会得到错误.我的代码:

import mechanize


br = mechanize.Browser()
br.set_handle_robots(False)
br.addheaders = [('User-agent', 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17')]

sign_in = br.open('https://www.amazon.com/ap/signin?_encoding=UTF8&openid.assoc_handle=usflex&openid.claimed_id=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select&openid.identity=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select&openid.mode=checkid_setup&openid.ns=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0&openid.ns.pape=http%3A%2F%2Fspecs.openid.net%2Fextensions%2Fpape%2F1.0&openid.pape.max_auth_age=0&openid.return_to=https%3A%2F%2Fwww.amazon.com%2Fgp%2Fcss%2Fhomepage.html%3Fie%3DUTF8%26ref_%3Dnav_yam_ya')

br.select_form(name="signIn")
br["email"] = 'username'
br['password'] = 'password'
logged_in = br.submit()
Run Code Online (Sandbox Code Playgroud)

sor*_*rin 0

对 Python 核心和库进行了几个与 SSL 相关的关键修复。

除非您已经使用最新的 2.7.x python 版本和最新的 mechanize 版本,否则这是使用过时库的简单示例。

是的,SSL 的有趣之处在于,昨天有效的代码明天可能就不起作用了。