2

我目前正在使用 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 之外的任何域的 Web 代理。所以我怀疑 mechanize 尝试使用 Web 代理,而它实际上不应该使用代理。

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

4

1 回答 1

3

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

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

这解决了这个问题。

于 2013-03-06T12:55:46.877 回答