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

Python Requests设置代理后IP未变更的问题咨询

解决Requests设置代理后IP未变更的问题

你的问题核心是代理配置与请求协议不匹配,加上代理地址格式不规范,导致代理未生效。以下是具体原因和修复方案:

问题原因

  1. 协议不匹配:你请求的是HTTPS地址(https://www.myip.com/),但仅配置了http字段的代理。Requests会根据请求的URL协议选择对应代理,HTTPS请求会忽略http代理,直接使用本地IP发起请求。
  2. 代理地址缺少协议前缀:代理地址需要明确指定协议(http://或https://),否则Requests无法正确解析代理地址,导致代理失效。
  3. 代理可用性问题:如果代理IP/端口失效、网络不通,或者需要身份认证但未配置,也会导致代理不生效。

正确配置示例

针对你的需求,将代理配置为同时支持HTTP和HTTPS请求,并补充协议前缀,示例代码如下:

import requests

response = requests.get(
    url="https://www.myip.com/",
    proxies={
        # HTTP请求用该代理
        "http": "http://100.100.100.100:8080",
        # HTTPS请求必须配置对应的代理(多数HTTP代理可转发HTTPS请求)
        "https": "http://100.100.100.100:8080",
    },
    headers={
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36",
    }
)

# 验证IP是否变更
print(response.text)

如果代理需要用户名和密码认证,格式如下:

proxies={
    "http": "http://username:password@100.100.100.100:8080",
    "https": "http://username:password@100.100.100.100:8080",
}

额外排查要点

  • 先测试代理可用性:用curl命令验证代理是否能正常访问目标网站,比如 curl -x http://100.100.100.100:8080 https://www.myip.com/
  • 关闭系统全局代理:避免系统代理覆盖代码中的配置
  • 临时关闭证书验证(仅测试用):如果代理存在证书问题,可添加verify=False参数(生产环境不建议)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 00:25:19