如何在Python Mechanize中不使用代理

时间:2013-03-06 12:48:47

标签: python mechanize-python

我目前正在使用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试图猜测正确的代理设置有关。那就是:我的浏览器被配置为转到任何域的Web代理,但是test_domain.com。所以我怀疑机械化尝试使用Web代理,而它实际上不应该使用代理。

如何告诉机械师不要猜测任何代理设置,而是强迫它尝试直接连接到test_box?

1 个答案:

答案 0 :(得分:3)

唉,自己发现了。文档字符串说:

“为避免使用代理,请传递空代理dict。”

这解决了这个问题。