You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Python Requests时代理服务器未更换公网IP的问题排查

排查requests代理未生效的问题

让我帮你一步步排查这个问题——这种情况通常是代理配置没生效或者代理本身存在问题,咱们来逐个分析可能的原因:

1. 代理协议与目标地址不匹配

你当前请求的是http://ipinfo.io/ip,但很多公共代理可能只支持HTTPS,或者需要同时配置HTTP和HTTPS的代理映射。试试把请求地址换成HTTPS版本,同时完善代理字典:

import requests
proxyDict = {
    "http": 'http://81.93.73.28:8081',
    "https": 'http://81.93.73.28:8081'  # 多数HTTP代理也能处理HTTPS请求
}
r = requests.get('https://ipinfo.io/ip', proxies=proxyDict)
print(r.text)

如果是SOCKS5类型的代理,你需要先安装依赖:pip install requests[socks],再修改协议:

proxyDict = {
    "http": 'socks5://81.93.73.28:8081',
    "https": 'socks5://81.93.73.28:8081'
}

2. 代理本身不可用或为透明代理

很多公共代理要么已经失效,要么属于透明代理——这类代理会把你的真实IP暴露给目标服务器,所以你看到的还是自己的公网IP。可以先通过curl验证代理有效性:

curl -x http://81.93.73.28:8081 https://ipinfo.io/ip

如果返回的还是你的IP,说明这个代理本身无法隐藏你的真实地址,建议更换匿名或高匿类型的代理。

3. 系统环境代理覆盖了手动配置

requests默认会读取系统的代理环境变量(比如HTTP_PROXY、HTTPS_PROXY),如果这些变量存在,可能会覆盖你手动设置的proxyDict。你可以强制禁用系统代理来测试:

r = requests.get('https://ipinfo.io/ip', proxies=proxyDict, verify=False)
# verify=False 用于跳过SSL证书验证,部分代理需要这个设置

或者先测试无代理的情况,确认基础IP:

r = requests.get('https://ipinfo.io/ip', proxies={"http": None, "https": None})
print(r.text)

4. 代理需要身份认证

有些代理服务器要求用户名和密码才能使用,你的配置里缺少认证信息,导致代理拒绝转发请求,requests自动 fallback 到直接连接。如果是这种情况,需要修改代理格式:

proxyDict = {
    "http": 'http://your_username:your_password@81.93.73.28:8081',
    "https": 'http://your_username:your_password@81.93.73.28:8081'
}

5. 本地网络存在限制

你的本地网络(比如公司、校园防火墙)可能拦截了代理请求,导致无法连接到代理服务器,只能直接访问目标地址。可以尝试换一个网络环境(比如手机热点)测试,或者检查本地防火墙是否限制了代理端口的访问。

内容的提问来源于stack exchange,提问作者stkvtflw

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 14:37:49