我正在使用带有代理服务器的 SSL 隧道连接到目标服务器。我使用 http 连接到代理服务器,使用 HTTPS 连接到目标服务器。SSL 隧道正常工作,我可以与远程服务器交换 HTTPS 消息,但是有一个问题。代理服务器在回复 urllib2 的请求以建立我需要查看的 SSL 隧道的请求时返回一个标头,但我看不到使用 urllib2 (Python 2.7.3) 访问它的方法。
我想我理论上可以自己实现 SSL 隧道握手,但这会让我比我想要的(或者我觉得舒服的)更深入地了解协议。
建立 SSL 隧道时,有没有办法使用 urllib2 访问回复?
更新:
下面是使用代理服务器连接目标服务器的代码(代理服务器和目标服务器的 URL 不是实际的):
proxy_handler = urllib2.ProxyHandler({'https': 'http://proxy.com'})
url_opener = urllib2.build_opener (proxy_handler)
request = urllib2.Request ('https://target_server.com/')
response = url_opener.open (request)
print response.headers.dict
我使用 WireShark 查看消息流量。WireShark 不会向我显示与目标服务器交换的消息的正文,因为它们是加密的,但我可以看到 SSL 隧道握手的正文。我可以看到我感兴趣的标头从代理服务器返回。