如何在Python Mechanize中不使用代理

2 投票
1 回答
1959 浏览
提问于 2025-04-17 18:07

我现在正在使用Python和Mechanize从本地服务器获取页面。代码中使用了“localhost”作为代理,这个代理是Fiddler2调试代理的一个实例。这一切都按预期工作,这说明我的电脑可以访问test_box。

import time
import mechanize

url = r'http://test_box.test_domain.com:8000/helloWorldTest.html'
browser = mechanize.Browser();
browser.set_proxies({"http": "127.0.0.1:8888"})
browser.add_password(url, "test", "test1234")

start_timer = time.time()

resp = browser.open(url)
resp.read()

latency = time.time() - start_timer

但是,当我去掉browser.set_proxies这行代码时,它就不工作了。我收到一个错误提示:“urlopen错误 [Errno 10061] 无法连接,因为目标机器主动拒绝了连接”。关键是,我可以用任何浏览器从我的电脑访问test_box。这也表明test_box可以从我的电脑访问。

我怀疑这和Mechanize试图猜测正确的代理设置有关。也就是说,我的浏览器被设置为访问任何域名时都通过一个网络代理,除了test_domain.com。因此,我怀疑Mechanize在尝试使用网络代理,而实际上它不应该使用代理。

我该如何告诉Mechanize不要猜测任何代理设置,而是强制它直接连接到test_box呢?

1 个回答

3

唉,我自己搞定了。文档说明写着:

“为了避免使用代理,传递一个空的代理字典。”

这样做就解决了问题。

撰写回答