我正在尝试创建一个通过代理(确切地说是 Burp)发送 HTTPS 请求的 Python 脚本,但它一直失败并显示
ssl.CertificateError: hostname 'example.com:443' doesn't match u'example.com'
这是我的代码的缩写版本:
proxy = urllib2.ProxyHandler({'https': '127.0.0.1:8080'})
opener = urllib2.build_opener(proxy)
opener.addheaders = [ ("Host", "example.com"),
...
]
urllib2.install_opener(opener)
try:
req = opener.open( 'https://example.com/service', 'data' ).read()
except urllib2.URLError, e:
print e
所以看起来Python认为Python(ssl.CertificateError
是,我相信,Python错误,而不是OpenSSL错误)有端口问题或者地址之一是在统一码中。对我来说都没有意义。有什么建议吗?
最佳答案
试试这个代码。我让它与 burp
测试.py
import urllib2
opener = urllib2.build_opener(
urllib2.HTTPHandler(),
urllib2.HTTPSHandler(),
urllib2.ProxyHandler({'https': 'localhost:8080'}))
urllib2.install_opener(opener)
print opener.open( 'https://example.com', 'data' ).read()
打嗝配置
<小时/>
演示
关于python - 无法使用 urlib2 通过代理发送 HTTPS 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28510745/