如何在Python Mechanize中不使用代理
我现在正在使用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
唉,我自己搞定了。文档说明写着:
“为了避免使用代理,传递一个空的代理字典。”
这样做就解决了问题。