Python 2.6.1のurllib2はhttps経由のプロキシをサポートしますか
質問
Python 2.6.1の urllib2 はhttps経由のプロキシをサポートしていますか
http://www.voidspace.orgで以下を見つけました。 .uk / python / articles / urllib2.shtml :
注
現在、urllib2はサポートしていません を介したhttpsロケーションの取得 プロキシ。これは問題になる可能性があります。
Webサイトへのログインとドキュメントのダウンロードを自動化しようとしています。有効なユーザー名/パスワードがあります。
proxy_info = {
'host':"axxx", # commented out the real data
'port':"1234" # commented out the real data
}
proxy_handler = urllib2.ProxyHandler(
{"http" : "http://%(host)s:%(port)s" % proxy_info})
opener = urllib2.build_opener(proxy_handler,
urllib2.HTTPHandler(debuglevel=1),urllib2.HTTPCookieProcessor())
urllib2.install_opener(opener)
fullurl = 'https://correct.url.to.login.page.com/user=a&pswd=b' # example
req1 = urllib2.Request(url=fullurl, headers=headers)
response = urllib2.urlopen(req1)
HTTPSを使用せずに同様のページで動作しており、プロキシを経由しないと思われます。プロキシを指定しなかった場合と同じようにスタックします。プロキシを経由する必要があります。
認証する必要があるが、基本認証を使用しない場合、httpsサイト経由でURLlib2が認証を判断します(URL経由でサイトにユーザー名/パスワードを提供します)?
編集: いいえ、テストしました
proxies = {
"http" : "http://%(host)s:%(port)s" % proxy_info,
"https" : "https://%(host)s:%(port)s" % proxy_info
}
proxy_handler = urllib2.ProxyHandler(proxies)
そしてエラーが表示されます:
urllib2.URLError:urlopenエラー [Errno 8] _ssl.c:480:EOFが発生しました プロトコル違反
解決
あなたが引用しているMichael Foordの記事がPython 2.6.1に更新されているかどうかわかりません。試してみませんか? ProxyHandlerにhttpにのみ適していることを伝えるのではなく、現在行っているように、httpsにも登録します(もちろん、ProxyHandlerを呼び出す前に一度だけ変数にフォーマットし、その変数を繰り返し使用する必要があります) dict):動作する場合と動作しない場合がありますが、あなたは試用すらしておらず、動作しないことは確かです!-)
他のヒント
Python 2.6.3およびその他のいくつかのブランチで修正:
- _bugs.python.org/issue1424152(_をhttp ...に置き換えます)
-
http://www.python.org/download /releases/2.6.3/NEWS.txt
問題#1424152:httplibの修正、urllib2が作業中にSSLをサポートするように プロキシ。 Christopher Liによるオリジナルパッチ、Senthil Kumaranによる変更。
今後この問題が発生する場合は、httpsプロキシをサポートしていることを指摘したいと思います。プロキシもそれをサポートしていることを確認してください。 (これは私に起こりました)。
詳細については、httpsプロキシサポートをテストしているPythonソースのunittestを参照してください。 http: //svn.python.org/view/python/branches/release26-maint/Lib/test/test_urllib2.py?r1=74203&r2=74202&pathrev=74203