Python requests 代理设置
在 Python requests 里使用 HTTP 和 SOCKS5 代理:示例、超时和 IP 检查。
让 pip 通过代理下载包:单条命令、保存的设置、环境变量、它们被读取的顺序、怎么关掉,以及怎么确认真的在用。
代理只改变你的电脑到包索引之间的网络路径,不改变 pip 从哪个索引下载:那是单独的 --index-url 设置,所以代理和镜像是两回事。本文讲 pip 命令本身;如果要在使用 requests 库的 Python 代码里用代理,请看 requests 那篇指南。
pip 配置文档给出的顺序是:命令行选项最优先,其次是环境变量,最后是配置文件。在配置文件里,针对单个命令的小节(比如 [install])会覆盖 [global] 里的同名设置。所以命令行里写的 --proxy 总是胜过文件里保存的代理。临时试一下用命令行,日常使用写进文件。
pip 用户指南把 --proxy 的写法定为 scheme://[user:passwd@]proxy.server:port。用 Proxy302 的 HTTP 端口时 scheme 写 http。用户指南里运行 pip 的方式是 python -m pip,这样能确保用的是那个 Python 自带的 pip;Windows 上用 py 启动器同理(py -m pip)。什么都不会保存:下一条命令又会直连。
python -m pip install --proxy http://USERNAME:PASSWORD@HOST:PORT requests请把 HOST、PORT、USERNAME 和 PASSWORD 换成「我的资产」里的值。
如果账号或密码里有 @、:、/ 这类字符,要写成百分号编码:@ 写成 %40,: 写成 %3A,/ 写成 %2F。pip 的文档没有说明这条规则,所以请用下面的方法验证。直接从「我的资产」复制比手打更稳妥。写在命令里的密码会留在终端历史里,写在配置文件里的密码,能读到那个文件的人都能看到。
最简单的办法是 pip config 命令:pip config set global.proxy ... 会替你写好,pip config unset global.proxy 则删除。不加 --user、--global 或 --site 时,如果当前有虚拟环境且它的配置文件存在,pip 用那个文件,否则用用户级文件。想手动编辑的话,用户级文件在 Linux 上是 $HOME/.config/pip/pip.conf,Windows 上是 %APPDATA%\pip\pip.ini,macOS 上如果存在 $HOME/Library/Application Support/pip 文件夹就用其中的文件,否则是 $HOME/.config/pip/pip.conf。文件里的选项名就是长选项名去掉前面的短横线,所以 --proxy 写成 proxy。pip config debug 会列出哪些文件存在以及每个文件里的值,是找到这个文件最快的办法。
python -m pip config set global.proxy http://USERNAME:PASSWORD@HOST:PORT
python -m pip config list请把 HOST、PORT、USERNAME 和 PASSWORD 换成「我的资产」里的值。
[global]
proxy = http://USERNAME:PASSWORD@HOST:PORT请把 HOST、PORT、USERNAME 和 PASSWORD 换成「我的资产」里的值。
用户指南列出了标准变量 http_proxy、https_proxy 和 no_proxy。配置文档还说明,任何选项都可以写成 PIP_ 加大写的选项名,所以 PIP_PROXY 也行。如果环境里已经设了代理,而你希望 pip 不理它,加上 --no-proxy-env,pip 就不会从环境变量读取代理配置。Windows 命令提示符里用 set,不用 export。
export https_proxy=http://USERNAME:PASSWORD@HOST:PORT
export http_proxy=http://USERNAME:PASSWORD@HOST:PORT
export no_proxy=localhost,127.0.0.1
python -m pip install requests请把 HOST、PORT、USERNAME 和 PASSWORD 换成「我的资产」里的值。
--proxy 改变路径,--index-url 改变 pip 去问的地址。配置文档就用 pip config set global.index-url 作为后者的示例。两者可以同时使用,各设各的。如果不用代理 pip 就能连上你要的索引,那根本不需要代理。
pip 用户指南和命令行参考只给出了 scheme://[user:passwd@]proxy.server:port 这一种写法,没有说 pip 接受哪些 scheme,也没有说 SOCKS 是否需要额外安装包。所以本文只用 HTTP。生成 Proxy302 代理时协议请选 HTTP。
运行 pip config unset global.proxy(小节名要和你设置时一致),再用 pip config list 看还剩什么。如果代理仍然生效,在这个终端里取消 http_proxy 和 https_proxy 变量。只想这一次不用、又不想改任何东西,就加 --no-proxy-env 忽略这些变量。按配置文档的说法,把 PIP_CONFIG_FILE 设成 os.devnull 会禁用所有配置文件的加载,用来测试不带你已保存设置的情形很方便。
运行 python -m pip config list,它会显示当前生效的配置;python -m pip config debug 会显示哪些文件存在、每个文件里有什么。
下面的第二条命令会显示网站通过同一个代理看到的 IP、国家和网络。
加上 -v 会输出更多内容(最多可以用三次)。设了代理能下载,把代理地址故意写错就失败,说明 pip 确实在用它。
python -m pip config list
curl -x http://USERNAME:PASSWORD@HOST:PORT https://ipinfo.io/json
python -m pip download six --no-deps -d ./pip-test -v请把 HOST、PORT、USERNAME 和 PASSWORD 换成「我的资产」里的值。
• 407 Proxy Authentication Required:代理拒绝了账号或密码。请重新复制,并检查百分号编码。
• ProxyError,或者连接超时:HOST 或 PORT 不对,或者租期已结束。用上面的 curl 命令测同一个地址。pip 参考文档写明默认套接字超时是 15 秒、重试 5 次,可以用 --timeout 和 --retries 修改。
• pip 不理这个设置:运行 pip config list,看看是不是命令行里的 --proxy、PIP_PROXY 变量,或 [install] 小节覆盖了你改的那一处。
• 公司自己的索引里的包装不上:把它的主机加进 no_proxy 变量,让 pip 直接连。
这里的每条命令都只需要 Proxy302 代理的主机、端口、账号和密码。pip 用的是 HTTP 地址,所以生成代理时协议选 HTTP。动态住宅流量按 GB 计费,出口国家在生成代理时设置;HTTP 在 proxy.proxy302.com 的 2222 端口,SOCKS5 在 3333 端口。静态 ISP IP 在整个租期内固定、不轮换,适合希望每次都从同一个地址出去的工具。HTTP 还是 SOCKS5 在购买时选择,一个 IP 只带一种协议。
打开动态住宅页面,选择线路,「协议」保持 HTTP,然后点击「确认费用并生成」。
打开「我的资产」(控制台里放着你买到的全部代理),复制 HOST(地址)、PORT(端口)、USERNAME(账号)和 PASSWORD(密码)。「连接工具」页里有填好你自己连接信息的现成示例。
把这些值填进上面的命令。
通过代理访问 https://ipinfo.io/json 确认出口。
在中国大陆,先在「连接工具」页打开辅助工具,使用代理期间保持开着。
低价线路每 GB 收费 US$1.50,100 GB 套餐每 GB US$1.35,300 GB 每 GB US$1.20。静态 ISP IP 一天 US$0.50,30 天 US$7.99。不提供免费试用,最小购买单位为 1 GB,或一个 IP 一天。可用的出口位置每天都会变化。
不是。代理改变网络路径,--index-url 改变 pip 下载的地址。两者分别设置,可以一起用。
按 pip 配置文档,命令行最优先,其次环境变量,最后配置文件。
激活该项目的虚拟环境,再运行 pip config set --site global.proxy ...:--site 把修改限定在当前环境的配置文件里。
我们读过的 pip 文档没有写 SOCKS。请使用 HTTP 代理地址。
官方文档 · 确认日期:
Read on 2 November 2026: the Proxy Server section says to use --proxy in the form scheme://[user:passwd@]proxy.server:port, or proxy in a configuration file, or the standard environment variables http_proxy, https_proxy and no_proxy, and --no-proxy-env to ignore proxies set through them; pip is run as python -m pip.
SOCKS is not mentioned. Configuration details are only pointers to the Configuration page.
官方文档 · 确认日期:
Read on 2 November 2026: file locations per system, loading order (global, user, site, then PIP_CONFIG_FILE); a command section such as [install] overrides [global]; precedence command line, then environment variables, then configuration files; file keys are long option names without the leading dashes; environment variables are PIP_ plus the upper-case name; PIP_CONFIG_FILE=os.devnull disables loading all configuration files.
官方文档 · 确认日期:
Read on 2 November 2026: --proxy "Specify a proxy in the form scheme://[user:passwd@]proxy.server:port"; --no-proxy-env "Do not read proxy configuration from environment variables"; --timeout (default 15 seconds); --retries (default 5); -v can be used up to 3 times.
The page does not list the accepted schemes and does not mention percent-encoding.
官方文档 · 确认日期:
Read on 2 November 2026: list shows the active configuration; debug shows which configuration files exist and the values in each; set and unset take command.option keys (example: pip config set global.index-url ...); --user, --global and --site pick the file; without them the virtual environment file is used if active and present, otherwise the user file.
产品观察 · 确认日期:
Product facts file of the site (values checked against the console, the backend and the price table on 18-19 October 2026): products, prices in US$ (1 PTC = US$1), lease terms, protocols and ports, countries, quantity limits, no free trial.
注册账号、充值一次,就能选动态住宅、静态 ISP 或数据中心 IP,几分钟配进你的浏览器。