2010-04-15 30 views
5

我希望Python在使用urllib時忽略Windows代理設置。我設法做到的唯一方法是禁用Internet Explorer上的所有代理設置。有沒有程序化的方法?如何忽略python urllib的windows代理設置?

os.environ['no_proxy']不是一個好的選擇,因爲我想避免代理所有地址。

回答

3

通行證urlopen方法

proxies={} 

或嘗試使用:

urllib.getproxies = lambda x = None: {} 

剛過的urllib進口(信息發現here)。

+0

見註釋,請 – mcrisc 2010-04-15 13:28:45

+0

你試過第二個解決方案? – systempuntoout 2010-04-15 17:37:16

+0

第二個解決方案確實有效。和'urllib.getproxies = lambda x = None:{}'應該在文檔說的'import urllib'之後加上。 – Nancy 2016-05-06 09:22:32

1

根據document,你可以傳遞,代理=無或代理= {}

urllib.urlopen(some_url, proxies=None) 
+0

不幸的是,這是行不通的。 'proxies = some_value'似乎擴展了已知的代理列表,而不是覆蓋它。 – mcrisc 2010-04-15 13:27:41

+0

@Jaú,'os.environ ['http_proxy'] = None'怎麼樣? – YOU 2010-04-15 13:59:25

+0

該文檔說它應該是'proxies = {}' – wOxxOm 2016-08-06 06:00:34

3

從urlib2 documentation:類urllib2.ProxyHandler([代理])...要禁用自動檢測的代理傳遞一個空字典。

所以我們想要做的是這樣的:

import urllib2 
proxy = urllib2.ProxyHandler({}) # Pass empty dictionary to bypass proxy 
opener = urllib2.build_opener(proxy) 
urllib2.install_opener(opener) 
socket = urllib2.urlopen('http://www.google.com') 
content = socket.read() 
+0

這對python 3.5不起作用。我嘗試使用urllib.request代替urllib2,因爲庫更改並且代碼確實運行了,但是當urlopen執行時它仍然試圖訪問代理。下面的systempuntoout的答案適用於我的案例。 – DelboyJay 2016-06-08 09:21:08

0

我很難做出請求忽略代理。 這些沒有奏效。

proxies=None or proxies={} 

這做工作S.Mark的回答

proxies={'http':None}