根本原因是requests默认tls指纹与浏览器不一致,服务器在tcp层即拦截并返回403;2026年京东、知乎等站普遍启用ja3/ja4检测,仅换ua无效,须改用curl_cffi等库模拟真实浏览器tls行为。

根本原因不是“请求太多”,而是你的 requests 发出的 TLS 握手指纹和浏览器完全不一致,服务器在 TCP 层就直接 403 拦截了——换多少代理都没用。
requests 默认 TLS 指纹暴露问题(JA3/JA4 检测)
2026 年主流站点(京东、知乎、贝壳等)已普遍启用 JA3/JA4 指纹检测。你 UA 换得再像 Chrome,requests 默认的 TLS 扩展顺序、ALPN 值、密钥交换参数一发出去,服务器就知道是 Python 脚本。
- 现象:刚发 2–3 个请求就返回
403 Forbidden,且httpbin.org/ip显示代理生效了——说明不是代理问题,是 TLS 指纹被识破 - 不要自己拼
headers+requests,那只是“看起来像”,不是“行为像” - 真正可行的方案是换底层 HTTP 客户端:用
curl_cffi替代requests - 示例:
from curl_cffi import requests session = requests.Session(impersonate="chrome120") resp = session.get("https://example.com")这行代码会复用 Chrome 120 的完整 TLS 指纹,包括 SNI、ALPN、扩展顺序等
proxy 参数协议不匹配导致代理静默失效
很多人写 proxies={"https": "http://x.x.x.x:8080"} 就以为 HTTPS 请求走代理了,实际完全没走——requests 不会自动把 http:// 代理升级为 HTTPS 流量。
华为云 Python SDK 查询工具。自动发现已安装 SDK 的服务包、Client类、API 方法、入参详情、类信息(__init__ 参数、属性、类型、描述),支持关键字搜索,快速定位目标 API 使用方法。
- 必须严格按协议配对:
{"http": "http://ip:port", "https": "https://ip:port"};若代理本身只支持 HTTP 协议,则"https"字段也得填http://(不是 typo,是规范要求) - 带认证的代理必须写全:
"http://user:pass@ip:port",漏掉@或冒号位置错,会静默回退到直连 - 验证是否真走代理:调
requests.get("http://httpbin.org/ip"),检查响应 JSON 中origin字段是否等于你填的代理 IP 字符串
代理池未做三步验证就塞进 Session 导致雪崩
从 API 拿回来的代理列表,90% 在 5 分钟内失效。直接赋值给 session.proxies,后续所有请求卡在 ProxyError 或超时,整个 Session 废掉。
- 轻量验证只做三件事:能连通 +
status_code == 200+ 响应 JSON 的origin包含该代理 IP - 超时必须设为
timeout=3,加stream=True避免读响应体拖慢验证 - 失败代理立刻丢弃,别 retry、别缓存——污染池子比没池子更糟
- 多线程/异步下禁止共享
current_proxy变量;改用itertools.cycle(proxy_list)确保每次取都是独立副本
重试时只对代理相关异常换 IP,其他错误不该动
把 HTTPError 和 ProxyError 混在一起处理,会导致 404 页面反复换代理重试,浪费资源还暴露更多 IP。
- 只对以下异常触发换代理重试:
requests.exceptions.ProxyError、requests.exceptions.ConnectTimeout、requests.exceptions.ReadTimeout -
requests.exceptions.HTTPError且response.status_code == 404或502,说明是目标页问题,不该换代理 - 封装一个
fetch_with_retry(url, proxies, max_retries=3)函数,在每次重试前从验证过的池子里取新代理(推荐用queue.Queue+ 锁) - 代理池耗尽时要有兜底:比如降级为本地 IP + 加大延时,或抛出明确异常中断任务,别死循环空转
最易被忽略的是 TLS 指纹和代理协议匹配这两点——它们不报错,但让所有后续优化(延时、UA 轮换、Session 复用)全部失效。先解决这两个,再谈轮换逻辑。
Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!










