我目前正在使用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?
答案 0 :(得分:3)
唉,自己发现了。文档字符串说:
“为避免使用代理,请传递空代理dict。”
这解决了这个问题。