请求库的 Python 代理错误

问题描述 投票:0回答:4

我正在尝试通过 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]'

我该如何解决这个问题?

预先感谢您的帮助。

python http proxy python-requests proxies
4个回答
17
投票

您应该从

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)

3
投票

我在 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

1
投票

您可以使用

urllib
库来实现此目的。

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

0
投票

最简单的方法有以下三个步骤:

  1. 搜索:在 pypi.org 中搜索你想要的包

  2. 下载软件包:搜索并选择所需的软件包后,从左侧图标中选择“下载文件”,然后选择与您的操作系统兼容的所需版本,然后下载.whl格式的软件包。例如,对于 pytorch 软件包,选择并下载与 PC 操作系统兼容的“torch-2.5.0-cp312-cp312-win_amd64.whl”。

  3. 安装:将下载的包放入桌面上名为Repository的文件夹中,然后在该文件夹中运行cmd并写入以下命令:

pip安装tensorflow-2.17.0-cp312-cp312-win_amd64.whl -f ./ --no-index --no-deps

提示1:不要输入命令的“tensorflow-2.17.0-cp312-cp312-win_amd64.whl”部分,而是输入下载包的完整名称。

提示2:要在您想要的文件夹中运行cmd,只需在该文件夹的地址栏中写入cmd即可。

此方法安装你想要的包,你将不再有ProxyError。

再见。

© www.soinside.com 2019 - 2024. All rights reserved.