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

Python使用requests库通过代理请求URL出现连接报错问题咨询

报错排查步骤
  • 校验代理有效性:先从代理池接口拿到代理后,手动执行命令curl -x http://[代理IP:端口] https://www.nmpa.gov.cn -I -m 10测试连通性,如果返回200/301等正常状态码说明代理可用,否则说明代理本身无效,免费公开代理的存活率通常低于10%,批量失效属于常见情况。
  • 检查代理配置逻辑:你当前代码中http和https代理分别调用两次get_random_proxy(),会导致同一会话使用两个不同的代理,同时大部分免费代理仅支持http协议,你给https代理加https://前缀会导致不支持https的代理直接连接失败。
  • 检查请求参数合规性:你填写的User-Agent值为Chrome,属于明显的伪造请求头,目标站点的反爬策略会直接拦截这类请求;同时你请求的是http://nmpa.gov.cn,站点会自动跳转至https地址,重定向过程也可能导致代理连接异常。
  • 排查本地网络限制:确认当前网络环境是否封禁了代理常用端口(如3128、8080、63123等),如果是公司/校园内网,大部分会封禁对外代理的访问权限。
对应解决方案
  1. 优化代理配置逻辑
    同一会话使用同一个代理,且https代理也用http前缀适配大部分免费代理的协议支持情况,修改代码如下:
# 原来的两行代理代码替换为
proxy_ip = get_random_proxy()
proxy = {'http': f'http://{proxy_ip}', 'https': f'http://{proxy_ip}'}
  1. 修正请求头和请求地址
    替换为完整的合法User-Agent,直接请求https的站点地址,删除容易触发反爬的请求头参数:
# 修改请求头的User-Agent
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
    'Referer': 'https://www.nmpa.gov.cn/datasearch/home-index.html',
    'Host': 'www.nmpa.gov.cn'
}
# 请求地址改为https
res = sess.get(url='https://www.nmpa.gov.cn', headers=headers, proxies=proxy, timeout=15, verify=False)
  1. 增加重试和代理校验逻辑
    给会话增加自动重试配置,拿到代理后先做有效性校验,无效直接跳过:
sess = requests.Session()
# 配置最多重试2次
sess.mount('http://', HTTPAdapter(max_retries=2))
sess.mount('https://', HTTPAdapter(max_retries=2))
sess.keep_alive = False
  1. 优化代理池质量
    如果使用免费公开代理池,持续报错属于正常情况,可更换为付费代理服务,或自行搭建私有代理池提高代理可用率。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 14:36:04