在本文中,您将学习如何在受限网络中配置并使用代理,从而实现无缝的软件包管理。
公共代理与私有代理之间的差异
选择代理时,需要确定其是公共代理还是私有代理,这一点非常重要。
公共代理
公共代理对所有人开放使用,通常不需要身份验证。尽管它能快速提供一个 IP 地址,但也存在不少缺点——速度慢、连接不稳定、可能会被 IP 封禁。由于这些代理免费且广泛可用,通常缺少代理轮换、缓存和访问控制等重要功能,因此并不适用于生产环境。
公共代理 URL 可能类似于:https://proxyserver:port
。
私有代理
私有代理需要身份验证,提供更高的安全性、稳定性和高级功能(但通常需要付费)。它们为您提供安全、快速且可靠的专用 IP 地址连接,并且支持代理身份验证和轮换等功能。
常见的做法是通过在代理 URL 前添加用户名和密码进行身份验证,例如:https://username:password@proxyserver:port
。
在 pip 中使用代理
要在 pip 中使用代理,首先需要获取代理的相关信息。下面的示例使用了一个公共代理,包含如下信息:
- 代理服务的代理地址
- 代理服务使用的端口
这个名为 proxy-list
的仓库 提供了每日测试的公共代理地址,可用于测试,但不建议在生产环境中使用。
在 proxy-list
仓库中,通过查看 proxy-list-status.txt
文件来找到可用的公共代理。可以依据该文件中带有 success
标记的条目来确定该代理正常工作:
在本教程中,使用 45.185.162.203:999
作为公共代理地址。这意味着代理服务器地址是 http://45.185.162.203:999
。
通过命令行为 pip 配置代理
为 pip 配置代理的最快方法是直接在 pip install
命令中使用 --proxy
来传入代理地址。
使用公共代理地址,测试您对该代理和相关包的访问,请使用以下命令:
# Public Proxy
pip install boto3 --proxy http://45.185.162.203:999
这种方法可以让您快速测试并验证代理,然后再进行永久性的代理配置。如果要发布 pip 包,那么通过不同 IP 验证其可用性也十分有帮助。
在 pip 配置文件中配置代理
若想为 pip 永久配置代理,可以通过编辑 pip 配置文件,这是一种简单明了的解决方案。配置文件所在的位置取决于您的操作系统,通常包括以下几种:
- Global(全局): 系统范围的配置文件,所有用户共享。
- User(用户): 针对当前用户执行 pip 进程时使用的配置文件。
- Site(环境): 针对 Python 虚拟环境使用的配置文件。
这些配置文件在不同系统中的位置如下:
Linux/macOS
在 Linux 系统中,pip 配置文件命名为 pip.conf
,可以在下列位置找到:
- Global(全局):
- Debian 系统: 在
/etc
目录中编辑或创建pip.conf
。 - macOS 系统: 在
/Library/Application Support/pip/pip.conf
位置进行编辑或创建。
- Debian 系统: 在
- User(用户):
- Debian 系统: 在
~/pip/pip.conf
位置编辑或创建。 - macOS 系统: 在
~/.config/pip/pip.conf
位置编辑或创建。
- Debian 系统: 在
- Site(环境): 在加载 Python 虚拟环境后,可以在
$VIRTUAL_ENV/pip.conf
中找到对应配置文件。
Windows
在 Windows 系统中,该文件名为 pip.ini
,存放位置如下:
- Global(全局): 可以在
C:\ProgramData\pip\pip.ini
文件中进行编辑或创建。注意,此文件在默认情况下是被隐藏的,但可进行写操作。 - User(用户): 可以在
%APPDATA%\pip\
目录下编辑或创建pip.ini
。 - Site(环境): 在加载 Python 虚拟环境后,可以在
%VIRTUAL_ENV%\pip.ini
中编辑或创建配置文件。
配置文件内容
在本示例中,我们将使用 Python 虚拟环境下的 pip 配置文件。在已激活的虚拟环境里,编辑 Debian 系统中的 $VIRTUAL_ENV/pip.conf
或 Windows 系统中的 %VIRTUAL_ENV%\pip.ini
。
在配置文件中,需要将 proxy
键更新为目标 HTTP 或 HTTPS 代理:
[global]
proxy = http://45.185.162.203:999
保存文件后,您在该虚拟环境中使用任何 pip 命令时都会自动通过该代理,无需再使用之前提到的 --proxy
参数:
(venv) $ pip install boto3
更多关于 pip 配置文件支持的选项,可以参阅 pip 官方文档。
通过环境变量配置 pip 代理
在系统层面上配置环境变量后,pip 及其他所有 HTTP 请求都会使用代理。具体做法是设置 HTTP_PROXY
和 HTTPS_PROXY
环境变量,许多软件(包括 pip)会将这些变量视为默认代理。
Linux/macOS
如果您使用 Linux,可以修改 /etc/environment
文件;如果是 macOS 用户,可以修改位于用户主目录的 .zshrc
文件,然后加入如下条目:
HTTP_PROXY=https://proxyserver:port
HTTPS_PROXY=https://proxyserver:port
当您重新启动终端或系统后,这些环境变量就会生效。
Windows
在 Windows 系统中,可以在命令提示符(cmd)下运行以下命令来设置环境变量:
setx HTTP_PROXY "https://proxyserver:port" /M
setx HTTPS_PROXY "https://proxyserver:port" /M
重新启动命令提示符后,即可使这些配置生效。
测试配置
当您在系统层面通过 pip 配置文件或环境变量启用了代理后,应当测试代理确实能够正常连接并通过网络获取数据。
Linux/macOS
在 Linux/macOS 上,可以使用如下命令进行测试:
$ python -m venv venv
$ source venve/scripts/activate
# for pip config file or environment variables
(venv) $ pip install requests
如果想在这种配置之外针对某个安装命令使用特定代理,可以使用 CLI 命令来覆盖:
# pip cli flag
(venv) $ pip install requests --proxy https://proxyserver:port
在这里,务必用您自己的代理信息替换 https://proxyserver:port
。
Windows
在 Windows 上,可以使用以下命令:
> python -m venv venv
> .\venv\Scripts\Activate.bat
(venv) > pip install requests
同样,您也可以随时使用 pip 的 CLI 命令覆盖这些设置:
# pip cli flag
(venv) $ pip install requests --proxy https://proxyserver:port
排查 pip 代理问题
当您使用 HTTP 或 HTTPS 代理 并在 pip 中进行连接时,尤其在使用私有代理或 HTTPS 代理(这类代理功能更完善)时,可能会遇到以下常见问题。
身份验证问题
如果是身份验证问题,通常会出现 407 代理身份验证要求
错误,表示该代理需要用户名和密码,但您可能没有正确提供凭证。
证书问题
当使用 HTTPS 代理时,您可能会看到 pip 报 Certificate verify failed
错误,表示代理服务器提供的证书有问题。
如果您的私有代理使用了自签名证书,pip 无法从权威 CA 处验证证书时就会抛出此错误。对此,您可以在连接特定域名时使用 --trusted-host
选项来忽略自签名证书错误。
在 pip 中使用轮换代理
轮换代理通过自动更换 IP 地址来避免 IP 封禁,并模拟多个用户访问,从而规避各种限制。
实现方法可以是根据代理列表随机选取代理。下面提供了一个简单的 Bash 脚本,通过轮换公共代理来安装 pip 包。
创建名为 rotate-proxies.sh
的脚本:
proxy_list=(
'http://45.185.162.203:999'
'http://177.23.176.58:8080'
'http://83.143.24.66:80'
)
pip_packages=(
'requests'
'numpy'
'pandas'
)
# Loop through packages and install them
for package in "${pip_packages[@]}"
do
# Randomly select a proxy from the list
proxy=${proxy_list[$RANDOM % ${#proxy_list[@]}]}
echo -e "\nInstalling $package with proxy $proxy"
pip install --proxy $proxy $package
done
创建完成后,执行该脚本即可通过随机切换代理下载并安装 pip 包。以下是脚本输出的示例内容:
$ ./rotate-proxies.sh
Installing requests with proxy http://177.23.176.58:8080
Collecting requests
Downloading requests-2.32.3-py3-none-any.whl.metadata (4.6 kB)
….
Downloading urllib3-2.3.0-py3-none-any.whl (128 kB)
Installing collected packages: urllib3, idna, charset-normalizer, certifi, requests
Successfully installed certifi-2025.1.31 charset-normalizer-3.4.1 idna-3.10 requests-2.32.3 urllib3-2.3.0
Installing six with proxy http://45.185.162.203:999
Collecting numpy
Downloading numpy-2.2.2-cp313-cp313-macosx_14_0_x86_64.whl.metadata (62 kB)
…
Installing collected packages: numpy
Successfully installed numpy-2.2.2
Installing pandas with proxy http://83.143.24.66:80
Collecting pandas
Downloading pandas-2.2.3-cp313-cp313-macosx_10_13_x86_64.whl.metadata (89 kB)
….
Installing collected packages: pytz, tzdata, six, python-dateutil, pandas
Successfully installed pandas-2.2.3 python-dateutil-2.9.0.post0 pytz-2025.1 six-1.17.0 tzdata-2025.1
在 pip 中使用代理的好处
使用代理可以帮助开发者绕过网络限制、访问被屏蔽的资源,并加快下载速度。私有代理一般可以提供缓存、快速连接和更高的安全性,能够隐藏真实 IP。
与 VPN 相比,代理是一种更轻量的解决方案。VPN 会对所有网络流量进行加密,提供更全面的隐私保护,但也会增加延迟,从而减慢包的安装速度。而代理只会针对指定流量进行转发,更加高效。
常见错误与最佳实践
在 pip 中使用代理时,需要对一些常见错误保持警惕,否则可能带来安全风险。例如,代理 URL 填写错误或协议(HTTP/HTTPS)字段缺失都可能导致无法连接到包仓库。
另一个需要注意的安全风险是将代理凭证(如用户名和密码)硬编码在源码、脚本或 CI/CD 流程定义中。如果这些代码被重新分发,可能导致代理被滥用。如果凭证泄露,不仅可能带来额外费用,还可能被不法分子利用。
为避免这些情况,应将代理凭证保存在环境变量或加密后的配置文件中,而不是直接写在代码里。此外,必须在正式使用 pip 前先测试代理连接情况,减少运行时错误。可使用 curl 或 ping 等工具来验证代理性能,确保其正常工作,从而获得更顺畅的包管理体验。
使用 Bright Data 代理
如果您正在寻找高质量且功能丰富的代理提供商,可以考虑 Bright Data。它提供各种类型的 IP 地址,包括住宅、数据中心和移动设备,并且具备专门针对数据采集和网络爬虫的高级工具,比如轮换代理和 Web Unlocker API。
Bright Data 能让您轻松为项目创建代理。下面以创建一个私有的住宅代理为例,来为 pip 提供不同的 IP 地址。
首先,注册一个免费的 Bright Data 账户,然后进入用户控制台。
在侧边菜单中,点击 Proxies & Scraping:
表单加载后,您可以配置一个新的住宅代理。如果使用默认设置,您将获得一个多个 Bright Data 用户共享的 IP:
如果您需要访问特定地区的资源,可以指定目标国家。
代理创建完成后,系统会跳转到一个管理面板,显示该代理的地址端点和认证方式。记录用户名、密码和服务器信息:
根据这些信息,您可以使用 --proxy
参数来测试:
$ pip install pandas \
--trusted-host pypi.org \
--trusted-host files.pythonhosted.org \
--proxy https://username:[email protected]:33335
由于 Bright Data 代理使用了自签名证书,您可以使用 trusted-host
参数将 pypi.org
和 files.pythonhosted.org
视为可信任域名。
总结
在 pip 中使用代理有助于提高匿名性和可控性,帮助您绕过 IP 限制和地理屏蔽。根据需求,您可以选择公共代理或私有代理。
私有代理 能带来许多优势,例如 IP 轮换、缓存加速、更快的速度和更高的稳定性,具体费用取决于 IP 资源的供应情况和地理位置。
为 pip 配置代理非常简单,您可以通过命令行参数、pip 配置文件或环境变量等多种方式来实现。不过,公共代理功能有限,正如前文所述,不适用于大规模或生产环境。若需要更可靠的方案,Bright Data 提供住宅和 数据中心 IP 选项,连接快速稳定,并拥有适用于网络爬虫和数据采集的高级功能。现在就注册免费账号开始体验吧!