无法使用 urlib2 通过代理发送 HTTPS 请求
Can't send HTTPS request through proxy using urlib2
我正在尝试创建一个 Python 脚本,该脚本通过代理(确切地说是 Burp)发送 HTTPS 请求,但它一直失败
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 错误)端口或地址之一是 Unicode。对我来说都没有意义。有什么建议吗?
试试这个代码。我得到它与 burp
一起工作
test.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 脚本,该脚本通过代理(确切地说是 Burp)发送 HTTPS 请求,但它一直失败
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 错误)端口或地址之一是 Unicode。对我来说都没有意义。有什么建议吗?
试试这个代码。我得到它与 burp
test.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()
打嗝配置