我管理了很多HTTPS代理(这些代理具有自己的SSL连接)。我在python中构建了一个诊断工具,它尝试通过每个代理连接到一个页面,如果它无法通过其中一个连接,就会通过电子邮件发送给我。测试python中的HTTPS代理
我开始讨论的方式是使用urllib通过每个代理进行连接,并返回一个应该用下面的代码说“成功”的页面。
def fetch(url):
connection = urllib.urlopen(
url,
proxies={'http':"https://"+server+':443'}
)
return connection.read()
print fetch(testURL)
此获取我想要的页面完美的问题是,它仍然会取我想即使代理服务器信息不正确或代理服务器是不活动的页面。因此,它不会使用代理服务器,或者它尝试它并在失败时连接没有它。
我该如何解决这个问题?
编辑:没有人似乎知道如何做到这一点。我将开始阅读其他语言库,以查看它们是否可以更好地处理它。有谁知道在Go等其他语言中它更容易吗?
编辑:我只是在下面的评论中写了这个,但我认为这可能是一个误解。 “代理有它自己的SSL连接,所以如果我去google.com,我首先与foo.com进行密钥交换,然后再与目标地址bar.com或目的地址baz.com进行密钥交换。目的地不会'不得不是https,代理是https“
我试过了。它没有帮助。在这种情况下请求的好处是什么? – 2014-09-12 23:45:41
好了,所以我使用数据包捕获在我的环境中运行了它,它显示urllib没有向代理发送CONNECT请求,这是不正确的。然后我阅读https://docs.python.org/2/howto/urllib2.html,其中规定“目前urllib2不支持通过代理获取https位置。但是,可以通过扩展urllib2来启用它,如食谱http://code.activestate.com/recipes/456195。我建议请求Python模块,因为它似乎更简单,更容易使用,尝试使用urllib实现这一点 – Yuvika 2014-09-13 12:26:39