2013-03-06 24 views
3

我目前使用Python + Mechanize從本地服務器中檢索頁面。正如你可以看到代碼使用「localhost」作爲代理。該代理是Fiddler2調試代理的一個實例。這完全按照預期工作。這表明我的機器可以訪問test_box。如何在Python中不使用代理機械化

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可以從我的機器到達。

我懷疑這與機械化試圖猜測正確的代理設置有關。即:我的瀏覽器被配置爲去任何域的web代理,但test_domain.com。所以我懷疑機械化嘗試使用Web代理,而實際上它不應該使用代理。

我怎麼能告訴機械化不猜測任何代理設置,而是強制它嘗試直接連接到test_box?

回答

4

呃,自己發現了。該文檔字符串說:

「爲了避免所有使用代理,請傳遞一個空的代理字典。」

這解決了這個問題。