質問

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top