无法使用urllib2通过代理发送HTTPS请求

时间:2015-02-13 23:54:56

标签: python https openssl urllib2

我正在尝试创建一个通过代理发送HTTPS请求的Python脚本(准确地说是Burp),但它始终失败

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有问题。对我来说都没有意义。任何sugestions?

1 个答案:

答案 0 :(得分:1)

试试这段代码。我使用了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()

打嗝配置

enter image description here


演示

enter image description here