请求库中出现Python代理错误

请求库中出现Python代理错误,python,http,proxy,python-requests,proxies,Python,Http,Proxy,Python Requests,Proxies,我试图通过Python中的代理服务器访问web。我正在使用请求库,我在验证我的代理时遇到问题,因为我使用的代理需要密码 proxyDict = { 'http' : 'username:mypassword@77.75.105.165', 'https' : 'username:mypassword@77.75.105.165' } r = requests.get("http://www.google.com", proxies=p

我试图通过Python中的代理服务器访问web。我正在使用请求库,我在验证我的代理时遇到问题,因为我使用的代理需要密码

proxyDict = { 
          'http'  : 'username:mypassword@77.75.105.165', 
          'https' : 'username:mypassword@77.75.105.165'
        }
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: 'h6f2v6jh5dsxa@77.75.105.165'
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
r=请求。获取(“http://www.google.com,代理=proxyDict)
get中第78行的文件“C:\Python27\lib\site packages\requests\api.py”
:param url:url用于新的:class:`Request`对象。
文件“C:\Python27\lib\site packages\requests\api.py”,第65行,在请求中
“”“发送POST请求。返回:类:`Response`对象。
文件“C:\Python27\lib\site packages\requests\sessions.py”,请求中第187行
def头(自身,url,**kwargs):
文件“C:\Python27\lib\site packages\requests\models.py”,第407行,在send中
"""
文件“C:\Python27\lib\site packages\requests\packages\urllib3\poolmanager.py”,第127行,位于proxy\u from\u url中
文件“C:\Python27\lib\site packages\requests\packages\urllib3\connectionpool.py”,第521行,在\u url的连接中
文件“C:\Python27\lib\site packages\requests\packages\urllib3\connectionpool.py”,第497行,在get\u主机中
ValueError:基数为10的int()的文本无效:'h6f2v6jh5dsxa@77.75.105.165'
我如何解决这个问题


提前感谢您的帮助。

您应该从
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)

您可以为此使用
urllib

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

我在Windows上也遇到了类似的问题,发现让
请求
工作的唯一方法是在启动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

谢谢,我试过了,它解决了错误,但它仍然没有连接到代理。当我查看返回的标题(r.headers)时,其中一个是“代理连接”:“关闭”,这似乎意味着连接到代理需要花费太长时间,在请求任何URL之前是否有方法进行身份验证?@MarkCollier,请尝试编辑答案中的代码。这是第一个版本中的错误。添加了
HTTPProxyAuth
,现在它应该可以工作了。从请求中。auth导入HTTPProxyAuth回溯(最近一次调用):文件“”,第1行,从请求中。auth导入HTTPProxyAuth导入错误:无法导入名称HTTPProxyAuth@MarkCollier,升级
请求
pip安装--升级请求
@MarkCollier,您的意思是代理连接错误,或者无法导入名称?我已经在本地代理服务器上测试了这段代码,它可以正常工作。当我输入错误的用户名或密码时,
r.status\u code
407
。你的答案是什么?把正确的答案标记为正确是很有礼貌的