一个价格监控脚本每晚检查数百个商品页面,几个月一直正常。后来频率提高,又添加一家零售商,日志便充满 429 响应和 CAPTCHA 页面。论坛通常建议使用轮换代理。其逻辑是 IP 越多、封锁越少,但这只对了一半。
轮换代理通过固定网关后的不同 IP 发送请求,分散流量以低于按 IP 计算的限制。但地址也可能在登录过程中变化,已登录会话往往无法继续。轮换解决一个问题,又制造另一个问题。
简短版本
- 轮换代理提供一个由主机和端口组成的网关,从地址池选择出口 IP 转发请求,并由轮换规则决定何时更换。
- 逐请求轮换适合抓取公开页面等无状态任务。登录和购物车宜用粘性会话或静态代理,尤其在网站检查 IP 连续性时。
- 地址池即使正常轮换也可能失败,因为其他客户会消耗共享 IP 的信誉。池大小不如地址对目标的新鲜程度和共享程度能说明请求成功率。
- 轮换无法解决按账户、令牌或 Cookie 限流。低流量任务应先降速,并遵守指示等待时间的
Retry-After响应头。
什么是轮换代理?

轮换代理通过单一网关,从池中选择出口 IP 转发请求。规则决定逐请求、定时或按会话更换。你始终连接相同主机和端口,由网关决定目标看到的地址。
跟随一个请求经过网关:
- 客户端始终向网关的同一主机和端口发送请求。
- 网关应用轮换规则,从池中选择出口 IP。
- 请求从该 IP 发出并到达目标网站。
- 目标将出口 IP 视为来源。除非网关通过
X-Forwarded-For等转发头传递,否则你的地址不会显示。
地址池、健康检查和故障转移都由供应商管理,脚本只需知道一个主机和端口。这种便利解释了轮换为何作为服务出售。但自建代理不等于免费轮换:单个自建代理通常只有一个稳定的出口 IP;你付费的正是由他人维护地址池。
供应商把网关加地址池称为回连代理。MDN 的代理服务器指南将“网关”列为正向代理的另一个、更直白的名称。地址属于住宅、数据中心还是移动网络,与其更换频率是两回事。
什么决定轮换代理何时更换 IP?
轮换规则决定出口 IP 的更换。选项随供应商而异:每个请求或连接更换、固定时间窗,或显式命令。客户端或代理管理器也可在重试失败或被阻止的请求前更换。务必确认“逐请求”的含义:多个 HTTPS 请求可能共用一个隧道,因此共用一个 IP。转发加密 HTTPS 的网关通常无法读取目标状态码来自行触发轮换。
| 轮换触发条件 | 代价 |
|---|---|
| 每个请求 | 优先分散而非连续性。搜索与第二页结果可能由无关 IP 发出。 |
| 每 N 个请求 | 将若干请求分组,但计数器可能在五步流程的第三、四步之间触发切换。 |
| 定时 | 固定窗口内保持 IP,到时切换,可能正处于多步骤操作中。 |
| 失败时 | 从新 IP 重试被阻止或返回 429 的请求。虽可提高容错性,但若目标拒绝所有 IP,任务可能悄然耗尽地址。 |
把表格理解为资源分配:分散让每个 IP 低于阈值,连续性让网站将一连串请求认作同一访客。逐请求轮换完全优先分散。失败时轮换看似折中且有韧性,实际最能掩盖代价:日志显示重试成功,直到所有尝试都失败。粘性会话则反过来,在固定时间窗内保持一个 IP。
粘性会话与轮换、静态代理有何不同?

粘性会话暂时保留池中的一个 IP,让请求看起来来自同一访客,随后释放。静态代理在你保有它期间提供固定 IP。逐请求轮换不保留地址。选择取决于网站是否需要跨请求识别你。
| 功能 | 逐请求轮换 | 粘性会话 | 静态代理 |
|---|---|---|---|
| 出口 IP 何时变化 | 按供应商规定,逐请求或逐连接 | 窗口结束、会话结束或出口故障时 | 分配期间通常保持固定 |
| 会话能否继续? | 网站检查 IP 连续性时可能失败 | IP 保持时可继续,但不保证 | 可继续,但其他会话检查仍然适用 |
| 请求如何分散 | 分散到整个池 | 每个会话一个 IP,可并行多个会话 | 全部使用一个 IP |
| 适用场景 | 无状态抓取公开页面 | 需要数分钟连续性的多步骤流程 | 需要数天保持同一身份的账户操作 |
| 主要风险 | 破坏有状态流程 | 窗口太短时会话在任务中途结束 | 一个 IP 承受全部限流和封锁 |
逐请求轮换通常用于无状态抓取;需要登录时,选择缩小到两种保留 IP 的方式,由时长决定。粘性会话从共享池借用地址,窗口结束归还;静态代理则持续分配,每天从同一地址登录更像回访用户。各供应商的窗口不同,应与最长操作流程比较。还需检查出口离线时的行为:有的提前换 IP,严格单 IP 模式则让请求失败。窗口足够长本身并不保证连续性。
IP 轮换何时会破坏任务?
若 IP 在网站需要记住的流程中变化,如登录、2FA、购物车、结账或多步骤表单,任务可能中断。会话 Cookie 并不天然因换 IP 失效,但将会话绑定 IP 或检查网络变化以防欺诈的网站,可能登出、重新验证或标记会话。
我不认为这是针对代理,而是网站在履行职责。Cookie 声称自己是一分钟前登录的同一浏览器,连接 IP 是服务器可核对的证据。已认证会话中途换网络,看起来像被盗 Cookie 在别处重放,正是反欺诈系统要识别的情况。登出和 2FA 提示是相称的响应。
OWASP 的会话管理指南说明可检查会话中 IP 和 User-Agent 等客户端属性的变化。根据网站控制措施,意外变化可能触发警报或终止会话。
只问:网站需要在这次与下次请求之间记住你吗?需要就为整个流程保留一个 IP,否则可轮换。夜间检查公开商品价格不需要;登录控制台导出报告则需要从头到尾使用一个出口 IP。
实用建议:拆分混合任务:无状态数据获取使用轮换池,登录及认证后操作使用粘性或静态 IP。两类任务需求相反,不应共享轮换规则。
为什么轮换池几天后就不好用了?
即使轮换正常,池也可能失效:轮换改变所用 IP,不改变信誉。共享 IP 继承此前用户的活动,同一网站上的大量复用会导致标记和成功率下降。
共享池像有限的公共资源:它在网站眼中的信誉就是储备,每位客户都在消耗。其他客户用相同地址访问你的目标时,代价表现为你的 CAPTCHA 和封锁。在支持工作中,我见过 IP 信誉如同网站与封锁名单组成的生态,各自回应从地址观察到的活动。
因此,最易印在价目表上的池大小,预测力比看上去弱。能否通过取决于:
- 最近何时访问同一目标。其他客户一小时前使用的 IP,到达时已有计数。
- 多少客户共享。任务越多,地址消耗越快。
- 网络多样性。集中于少数地址段的 IP 可被范围规则一起封锁。
- 是否已经标记。池若保留被判定滥用的 IP,仍会照常分配。
大量复用的大池可能不如对目标较新的小池。应持续比较自己目标上的成功率;首次测试成功不等于长期性能。
你真的需要轮换代理吗?
轮换代理可分散按 IP 限制的请求,但不能代替遵守目标限额与重试指示。根据 MDN 的 429 参考,限流通常按 IP,但认证或带 Cookie 的请求也可能按用户或应用限制。账户限额不因新 IP 改变;低流量任务应先遵守 Retry-After。
对应标准是定义 429 状态码的 RFC 6585。它规定 429 可以带有指示等待时间的 Retry-After,并未限定用户识别与请求计数方式。其示例指出可通过认证凭据或有状态 Cookie 识别用户。
三种情况不值得买:账户、API 令牌或 Cookie 限额下,所有 IP 仍消耗同一配额,429 继续;小任务可将每晚数百页面分散,等待 Retry-After,免费按指数退避重试;已登录任务需要稳定身份和固定出口。
当限制按 IP、任务价值依赖数量、请求独立且处于目标允许的使用范围时,轮换才有作用。即便如此,网站条款仍然适用。网站还看连接层客户端特征和请求节奏,因此仅靠轮换不能保证访问。
购买前检查目标限流文档和响应头。同类认证请求收到 429,而同 IP 的匿名请求成功,只是暗示账户或认证限额,并不能证明。两者都失败也可能是按 IP、资源或全服务器限制。保持端点和速率可比,再次测试前遵守 Retry-After。
常见问题
轮换代理和 VPN 一样吗?
不一样。VPN 通常将整个设备流量通过通往单个服务器的加密隧道发送,连接期间保持出口 IP。轮换代理按应用或请求设置,依规则换 IP,一个脚本可以使用多个地址。
轮换代理能让你匿名吗?
不能完全匿名。它向目标隐藏 IP,但供应商的网关仍看得到你的地址和访问站点。登录或发送存储的 Cookie 后,网站可据账户或 Cookie 识别你,与出口 IP 无关。
网站能封锁轮换代理吗?
能。逐个封 IP 可能无效,正如讨论代理镜像网站的 Hacker News 帖子中运营者发现的:请求来源 IP 不断变化。回复转向封锁整网和地址段。网站也可在单 IP 规则之外使用判断请求模式的 WAF。
应该多频繁轮换 IP?
没有通用间隔,取决于每个目标的 IP 限额。无状态请求只在需要时轮换;必须持续的登录或结账会话内不要轮换。
讨论
评论
登录后参与讨论。