gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 17:42:07 29 4
gpt4 key购买 nike

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

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,我可以在连接断开之前停止连接吗?

最佳答案

我会尽力解释这个问题,因为我之前已经遇到过。

如果在连接处理程序中设置了代理 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 以返回本地代理而不是 None。在这种情况下,YOUR localproxy 将为所有内容使用默认页面,以便您的程序知道“何时”遇到有问题的代理。

这是一个 hack,甚至可能是丑陋的 hack。

我做到了,然后愉快地爬网。

希望对你有帮助

关于Python 代理支持通过与错误代理的本地连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22832909/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com