2012-01-14 13 views
5

私はPythonでプロキシサーバー経由でWebにアクセスしようとしています。私はリクエストライブラリを使用していますが、使用しているプロキシがパスワードを必要とするため、プロキシの認証に問題があります。要求ライブラリでのPythonプロキシエラー

proxyDict = { 
      'http' : 'username:[email protected]', 
      'https' : 'username:[email protected]' 
     } 
r = requests.get("http://www.google.com", proxies=proxyDict) 

私は、次のエラーを取得しています:

Traceback (most recent call last): 
File "<pyshell#13>", line 1, in <module> 
r = requests.get("http://www.google.com", proxies=proxyDict) 
File "C:\Python27\lib\site-packages\requests\api.py", line 78, in get 
:param url: URL for the new :class:`Request` object. 
File "C:\Python27\lib\site-packages\requests\api.py", line 65, in request 
"""Sends a POST request. Returns :class:`Response` object. 
File "C:\Python27\lib\site-packages\requests\sessions.py", line 187, in request 
def head(self, url, **kwargs): 
File "C:\Python27\lib\site-packages\requests\models.py", line 407, in send 
""" 
File "C:\Python27\lib\site-packages\requests\packages\urllib3\poolmanager.py", line  127, in proxy_from_url 
File "C:\Python27\lib\site-packages\requests\packages\urllib3\connectionpool.py", line 521, in connection_from_url 
File "C:\Python27\lib\site-packages\requests\packages\urllib3\connectionpool.py", line 497, in get_host 
ValueError: invalid literal for int() with base 10: '[email protected]' 

どのように私はこの問題を解決するのですか?

ご協力いただきありがとうございます。

+1

イッツマナーが正しい – Sheena

答えて

15

組み込みのユーザー名とパスワードをproxyDictから削除し、代わりにauthパラメータを使用してください。

import requests 
from requests.auth import HTTPProxyAuth 

proxyDict = { 
      'http' : '77.75.105.165', 
      'https' : '77.75.105.165' 
     } 
auth = HTTPProxyAuth('username', 'mypassword') 

r = requests.get("http://www.google.com", proxies=proxyDict, auth=auth) 
+0

感謝として正しい答えをマークするために、私はそれを試してみましたが、それがエラーを解決しますが、それはまだプロキシに接続されていません。 返されたヘッダー(r.headers)を見ると、そのうちの1つが 'proxy-connection'です: 'close'。プロキシに接続するには時間がかかりすぎるようですが、前に認証する方法がありますURLをリクエストしていますか? –

+0

@MarkCollier、編集された答えからコードを試してください。最初のバージョンではエラーでした。 'HTTPProxyAuth'が追加されました。 requests.auth輸入HTTPProxyAuth はImportErrorから で ファイル ""、行1、:名前をインポートすることはできませんHTTPProxyAuth – reclosedev

+0

':' pip install --upgrade requests' –

0

これにはurllibライブラリを使用できます。

from urllib import request 
request.urlopen("your URL", proxies=urllib.getproxies()) 
2

私はWindows上で同様の問題を持つと仕事にrequestsを取得する唯一の方法は、私は、Pythonを開始する前に、環境変数としてプロキシを設定することでしたが発見されました。あなたのために、これはこのようなものになるだろう:あなたはまた、チェックすることをお勧めします

set HTTP_PROXY=http://77.75.105.165 
set HTTPS_PROXY=https://77.75.105.165 

することが必要な特定のポートだ、とそのURLの後にそれを設定している場合です。ポートが8443である場合たとえば、その後の操作を行います。

set HTTP_PROXY=http://77.75.105.165:8443 
set HTTPS_PROXY=https://77.75.105.165:8443 
+0

https://stackoverflow.com/questions/5971312/how-to-set-environment-variables-in-pythonも参照してください。 – raphael

関連する問題