4

Windowsでurllib2(およびおそらくurllib)を使用する場合、PythonはInternetExplorerに適用された認証済みプロキシ設定を魔法のように取得するようです。ただし、詳細設定の「例外」リストをチェックして処理していないようです。

例外リストを処理する方法はありますか?または、IEプロキシ設定を無視し、この問題に対処するために独自のプロキシオープナーを適用しますか?

以前にプロキシオープナーを作成してみましたが、機能させることができませんでした。これが私が何とか掘り下げたものですが、例外を適用する方法/場所がまだわかりません。これが正しいかどうかさえわかりません。

proxy_info = {
                      'host':'myproxy.com',
                      'user':Username,
                      'pass':Password,
                      'port':1080
                      }                                                   

http_str = "http://%(user)s:%(pass)s@%(host)s:%(port)d" % proxy_info

authInfo = urllib2.HTTPBasicAuthHandler()
authInfo.add_password()
proxy_dict = {'http':http_str}
proxyHandler = urllib2.ProxyHandler(proxy_dict)

# apply the handler to an opener
proxy_opener = urllib2.build_opener(proxyHandler, urllib2.HTTPHandler)

urllib2.install_opener(proxy_opener)
4

1 に答える 1

2

デフォルトurllib2では、環境変数からプロキシ設定を取得するため、IE 設定を使用しています。自分で認証を設定する必要がないため、これは非常に便利です。

必要に応じて例外を適用することはできません。これを行う最も簡単な方法は、2 つopenerの を持ち、ドメインが例外リストに含まれているかどうかに応じて、どちらを使用するかを決定することです。

プロキシを使用する場合はデフォルトopenerを使用し、プロキシが必要ない場合はプロキシなしを使用します。

>>> no_proxy = urllib2.ProxyHandler({})
>>> opener = urllib2.build_opener(no_proxy)
>>> urllib2.install_opener(opener)

ここから。

編集:

これが私がそれを行う方法です:

exclusion_list = ['http://www.google.com/', 'http://localhost/']

no_proxy = urllib2.ProxyHandler({})
no_proxy_opener = urllib2.build_opener(no_proxy)

default_proxy_opener = urllib2.build_opener()

url = 'http://www.example.com/'

if url in exclusion_list:
    opener = no_proxy_opener
else:
    opener = default_proxy_opener

page = opener.open(url)
print page

あなたの最大の問題は、URL を除外リストに一致させることですが、それはまったく新しい問題です。

于 2008-11-07T01:58:09.577 に答える