httlib和HTTPSConnection问题使用代理服务器(代理服务器)
重现我的问题,您需要有提琴手打开并观看互联网流量。 Fiddler的代理服务器是127.0.0.1,端口是8888.但实际上,我通过任何使用HTTPS的代理来解决此问题。使用HTTPSConnection类,我设置了代理服务器和端口,但我最终得到这个错误:httlib和HTTPSConnection问题使用代理服务器(代理服务器)
'SSLError: [Errno 1] _ssl.c:504: error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol'
这个错误可以归因于无效的代理,但我得到它的任何和所有代理。
我使用Python httlib执行POST操作到站点:
content_type, body = self._encode_multipart_formdata(fields, files) # encodes a file to string, standard multipart post stuff
headers = {
'content-type': content_type,
'content-length': str(len(body))
}
if proxy_url:
if ssl:
h = httplib.HTTPSConnection(proxy_url, proxy_port)
h.request('POST', 'https://' + host + selector, body, headers)
else:
h = httplib.HTTPConnection(proxy_url, proxy_port)
h.request('POST', 'http://' + host + selector, body, headers)
else:
if ssl:
h = httplib.HTTPSConnection(host,port)
h.request('POST', selector, body, headers)
else:
h = httplib.HTTPConnection(host,port)
h.request('POST', selector, body, headers)
resp_data = h.getresponse().read()
try:
result = json.loads(resp_data)
except:
return None
我的Python包写入,是数千行代码的,所以我真的不能切换到请求 。
有趣的是,在进行基本的POST和GET操作时,我可以使用urllib2获得调用(非多部分帖子)。
请指教!
谢谢
我使用Python 2.7.5
它看起来并不像你实际上是发送代理请求。 根据你的代码,你所做的只是发送一个普通的请求到代理服务器,但是一个https://
的URL。这不是HTTPS的代理如何工作。相反,您必须发送CONNECT请求来建立隧道,然后将套接字升级到SSL,最后在此隧道内发送非代理请求。
你有关于如何做到这一点的示例? – 2014-11-17 15:55:14
不。我不是一个Python专家,我不知道是否有一个简单的方法来完成这个任务。但是你可以看看'ssl_tunnel'方法和'sslrwap'。 – 2014-11-17 20:38:41
我会试一试,让你知道我找到了什么。 – 2014-12-04 12:14:05
1.发布完整的回溯。 2.当这个错误发生时,你调用的函数的参数是什么? – User 2014-11-14 17:00:24
我通过切换到urllib2解决了我的问题。我真正注意到的唯一情况是,httplib似乎比urllib2更快地上传文件。 – 2014-11-14 19:35:57