python mechanize 代理问题

0 投票
2 回答
803 浏览
提问于 2025-04-15 19:03

我已经设置好了 mechanize,并且在用 Python 工作。我正在添加对代理的支持,但我该怎么检查我是否真的在使用这个代理呢?

这是我正在使用的一些代码:

ip = 'some proxy ip address'
br.set_proxies({"http://": ip} )

我开始怀疑它是否真的在工作,因为为了测试,我输入了:

ip = 'asdfasdf'

结果没有报错。那么,我该如何检查我传入的代理的 IP 地址是否真的在使用,而不是我电脑的 IP 地址呢?在 mechanize 中有没有办法返回你的 IP 信息?

2 个回答

0

我不太确定怎么用mechanize来解决这个问题,不过你可以看看下面的链接,里面讲了怎么在不使用mechanize的情况下(但还是用python)来处理这个问题:

Python中的代理检查

上面提到的简单解决方案可以很容易地根据你的需求进行调整。

所以,原来的那行:

print "Connection error! (Check proxy)"

你可以换成:

SucceededYesNo="NO"

而且把:

print "All was fine"

也可以换成:

SucceededYesNo="YES"

现在,你有一个变量可以用来进行进一步处理。

不过,我担心这可能无法解决目标网页宕机的情况,因为同样的错误可能由两个原因引起(所以你无法判断一个失败的结果是因为代理服务器不工作还是网页本身有问题),但这仍然可能是个解决方案:可以用上面提到的代码检查一个正常工作的网站,比如www.google.com?这样,你就可以排除一个原因,剩下的就是另一个了。

2

可能像这样?

br = mechanize.Browser()
br.set_proxies({"http": '127.0.0.1:80'})

你需要调试一下,以获取更多信息。

br.set_debug_http(True)
br.set_debug_redirects(True)

撰写回答