2011-07-02 64 views
1

我有Fiddler2監聽0.0.0.0:8888。urllib2不使用代理(Fiddler2),使用ProxyHandler設置

try: 
    data = '' 
    proxy = urllib2.ProxyHandler({'http': '127.0.0.1:8888'}) //also tried {'http': 'http://127.0.0.1:8888/'} 
    opener = urllib2.build_opener(proxy) 
    urllib2.install_opener(opener) 
    req = urllib2.Request('http://www.google.com') 
    response = urllib2.urlopen(req) 
    the_page = response.read() 
     print the_page 
except Exception, detail: 
    print "Err ", detail 

我沒有看到GET或提琴手到Google的所有請求(但我可以看到其他請求) 有沒有辦法來調試嗎?看起來像python繞過Fiddler或忽略代理。

我還配置WinHTTP的使用Fiddler工作 -

C:\Windows\system32>netsh winhttp set proxy 127.0.0.1:8888 

Current WinHTTP proxy settings: 

    Proxy Server(s) : 127.0.0.1:8888 
    Bypass List  : (none) 

做事情是,如果它的請求到SSL地址? (提琴手支持https)

謝謝!

+0

只要確保您能夠通過瀏覽器上的代理與Internet通信。你有沒有設置任何身份驗證?你的代碼拋出了什麼異常? –

+0

我看到很多請求\我的瀏覽器發送和接收的答案。我沒有得到任何異常,代碼正在工作,我只是無法看到對fieddler的請求。 有沒有一種方法可以看到urllib2中發生了什麼?調試它在做什麼。 – YSY

+0

爲了檢查代碼是否使用porxy,我已經更改fieddler以要求代理身份驗證,並且在瀏覽器時必須在瀏覽器上使用user \ pass,然後再次運行python代碼並使其運行,使用代理。 – YSY

回答

4

也許你可以直接使用opener而不是安裝它。在8008上打開你的提琴手代理偵聽器(我使用的是WebScarab,但它們可能是相同的),然後準確地嘗試此代碼(也有你不需要的cookie,但讓我們按原樣嘗試並稍後縮小它):

cj = cookielib.MozillaCookieJar(cookie_filename) 
if os.access(cookie_filename, os.F_OK): 
    cj.load() 
proxy_handler = urllib2.ProxyHandler({'https': 'localhost:8008'}) 
opener = urllib2.build_opener(
     proxy_handler, 
     urllib2.HTTPCookieProcessor(cj) 
    ) 
opener.addheaders = [ 
     ('User-agent', ('Mozilla/4.0 (compatible; MSIE 6.0; ' 
         'Windows NT 5.2; .NET CLR 1.1.4322)')) 
    ] 
auth = urllib.urlencode({'email':email,'pass':passw}) 
data = opener.open('https://login.facebook.com/login.php',data=auth) 

如此 - 事情我做不同的:在揭幕戰的直接使用,端口更改爲8008,加餅乾和使用WebScarab。讓我知道其中哪一個爲你做了訣竅......

2

proxy_bypass_registry urllib.py不正確處理ProxyOverride註冊表值:它將空覆蓋視爲*,即繞過所有主機的代理。此行爲與其他程序(例如Chrome)不匹配。

有許多可能的解決方法:

  1. 設置urllib.proxy_bypass = lambda h: 0禁用繞過檢查。
  2. 指定http_proxy環境變量中的代理設置(在本例中不調用proxy_bypass_registry)。
  3. 在Fiddler2,轉到頁工具 - >選項提琴手...->連接,從該值刪除尾隨分號「IE應該繞過小提琴手爲...」,並重新啓動Fiddler2。
2

在Fiddler2,轉到頁工具 - >選項提琴手... - >連接,從IE的值刪除尾隨分號應繞過小提琴手爲...場並重新啓動Fiddler2 。

當我使用urllib2代理時,此解決方案絕對適用於我,但我仍不明白爲什麼刪除尾隨分號可以解決此問題。

相關問題