Python代理支持通过带有错误代理的本地连接

2024-04-20 14:15:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用以下代码通过代理连接到网站:

proxy_support = urllib2.ProxyHandler({"http":"http://"+proxy})
opener = urllib2.build_opener(proxy_support)
urllib2.install_opener(opener)
html = urllib2.urlopen(url).read()

我正在轮换代理列表,它们经常更改。每当我遇到一个连接失败的坏代理时,连接就会通过我的IP。在

我通过向whatismyip发送垃圾邮件来测试这一点,偶尔我的IP也会出现。在

如果某个连接试图使用我的家庭IP,我可以在它断开之前停止它吗?在


Tags: install代码buildiphttpurl代理support
1条回答
网友
1楼 · 发布于 2024-04-20 14:15:09

我会尽力解释这个问题,因为我以前就有过。在

如果在连接处理程序urllib2将启动时有一个代理集,请检查它(地址是否正确?用户?密码?端口?)用它来连接。在

如果您查看代码,作者甚至承认它不是最佳的:

The opener will use several default handlers, including support
for HTTP and FTP.  If there is a ProxyHandler, **it must be at the
front of the list of handlers.**  (Yuck.)

所以它在调用代理之前,如果有一个代理,它将使用如果没有。。。在

但是如果有任何错误(错误的url,错误的代理),它将向连接处理程序返回NONE。在

因此连接处理程序将连接,因为它没有任何代理集。

现在回到你的问题上:

您可以在使用代理之前检查它,并丢弃不好的代理。但是仍然存在这样一个问题:在程序运行期间,一些代理将失效或更改。在

为此,您可以修改urllib2以返回localproxy而不是None。 在这个场景中,您的localproxy将为所有内容使用一个默认页面,这样您的程序就可以知道“何时”碰到了有问题的代理。在

这是一次黑客攻击,甚至是丑陋的黑客攻击。在

我做了,然后愉快地上网。在

希望对你有帮助

相关问题 更多 >