Python Proxy Error With Requests Library
29,729
Solution 1
You should remove the embedded username and password from proxyDict
, and use the auth
parameter instead.
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)
Solution 2
I've been having a similar problem on Windows and found the only way to get requests
to work was to set the proxies as environment variables before I started Python. For you this would be something like this:
set HTTP_PROXY=http://77.75.105.165
set HTTPS_PROXY=https://77.75.105.165
You might also want to check is there's a specific port required, and if so set it after the url. For example, if the port is 8443 then do:
set HTTP_PROXY=http://77.75.105.165:8443
set HTTPS_PROXY=https://77.75.105.165:8443
Author by
Mark Collier
Updated on July 09, 2022Comments
-
Mark Collier almost 2 years
I am trying to access the web via a proxy server in Python. I am using the requests library and I am having an issue with authenticating my proxy as the proxy I am using requires a password.
proxyDict = { 'http' : 'username:[email protected]', 'https' : 'username:[email protected]' } r = requests.get("http://www.google.com", proxies=proxyDict)
I am getting the following error:
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]'
How do I solve this?
Thanks in advance for your help.
-
Mark Collier over 12 yearsThanks, I tried that and it solved the error but it still isn't connecting to the proxy. When I look at the returned headers (r.headers), one of them is 'proxy-connection': 'close', which seems to mean its taking too long to connect to the proxy, is there a way to authenticate before requesting any URLs?
-
reclosedev over 12 years@MarkCollier, please try code from edited answer. It was error In first version. Added
HTTPProxyAuth
, now it should work. -
Mark Collier over 12 yearsfrom requests.auth import HTTPProxyAuth Traceback (most recent call last): File "<pyshell#8>", line 1, in <module> from requests.auth import HTTPProxyAuth ImportError: cannot import name HTTPProxyAuth
-
reclosedev over 12 years@MarkCollier, upgrade
requests
:pip install --upgrade requests
-
reclosedev over 12 years@MarkCollier, you mean proxy connection error, or cannot import name? I've tested this code on local proxy server and it works. When i'm entering wrong username or password,
r.status_code
is407
. What is yours? -
reclosedev over 12 years@MarkCollier, what is your
requests.__version__
? I have0.9.1
. Maybepip install --upgrade requests
failed, or you are testing code in interactive shell, and it has started before upgrade? Try to launch code from file. -
Juan Carlos Coto about 11 yearsIn case this helps, this worked for me, using
requests==1.1
. -
alextc over 8 yearsI have got the same error. I am with requests version 2.0.0. Any solution?
-
dmcmulle almost 7 yearsThis fixed it for me - but does anyone know why? The answer isn't very thorough.
-
raphael over 6 years