轮换代理会在你工作时提供不同的 IP 地址,可以是每次请求都更换,也可以是按设定的时间间隔更换。相比于单一地址承载全部流量,负载会分散到一个地址池中,这样就不会有单一地址积累起足以让网站注意到的请求量。
本文将介绍轮换实际是如何运作的、backconnect 的含义,以及如何配置这两者。
轮换如何运作
你不需要管理一份地址列表。你连接到一个单一的网关端点,提供商会为每次请求从地址池中分配一个地址。从你的爬虫的角度来看,请求之间没有任何变化。从目标网站的角度来看,每次请求都来自不同的访问者。
轮换有两种模式,选择哪一种是主要的配置决策。
按请求轮换每次都会发出一个新地址。分散程度最高,但没有连续性。适用于相互独立的抓取:商品页面、搜索结果、目录列表、库存查询。请求之间没有任何延续,因此地址变化不会导致任何问题。
粘性会话会在固定的时间窗口内保持同一个地址,通常为 1 到 30 分钟。适用于请求之间相互依赖的场景:通过游标翻页、登录后的任何操作、多步骤表单和结账流程。
你是在凭据中选择使用哪种模式,而不是在代码中选择。提供商会将会话信息编码在用户名中,典型配置如下所示:
# per-request rotation: a new IP for every request
curl -x gate.shifter.io:8080 -U "customer-USER:PASS" https://example.com
# sticky session: same IP for the life of session id abc123
curl -x gate.shifter.io:8080 -U "customer-USER-session-abc123:PASS" https://example.com
# sticky, geo-targeted to Germany
curl -x gate.shifter.io:8080 -U "customer-USER-country-de-session-abc123:PASS" https://example.com
更改会话 id 就会得到一个新地址。保留它则会一直保持同一个地址,直到该时间窗口到期。具体的参数名称在不同提供商之间有所差异,因此请查阅你所使用服务的文档,但其机制是一致的。
轮换过程中会话会发生什么
这一部分是大多数说明会忽略的内容,却是导致大多数轮换相关故障的原因。
已登录的会话是网站在特定地址下发给浏览器的一个 cookie。如果下一次请求携带同样的 cookie,却来自不同的国家,网站就会看到一个”瞬间移动”的会话。根据网站的严格程度,你可能会遇到需要重新认证、安全验证挑战,或者会话被完全判定为失效。
轮换并不知道也不关心你是否已登录。持有一个地址足够长的时间以满足会话需求,这是你自己的责任。如果一个流程需要四分钟,那么五分钟的粘性窗口就足够覆盖它。如果一项操作要运行数小时,轮换就不是合适的工具,拥有永久地址的ISP 代理才是正确的选择。
Backconnect 代理
Backconnect 是使轮换成为可能的网关架构。提供商不会给你一份需要自行管理的地址列表,而是给你一个端点,由它代表你反向连接到地址池中。
有必要说清楚这一点,因为这一点经常被错误陈述,包括本文的早期版本中也是如此:backconnect 并不是 residential 的同义词。 Backconnect 描述的是地址如何交付给你,residential 描述的是地址的来源。两者是相互独立的,backconnect 网关同样存在于数据中心和移动地址池中,并不只限于住宅地址池。
Backconnect 在实践中带来的好处:
- 只需配置一个端点。 你的爬虫只需指向一个主机和端口,在整个项目周期内保持不变,无论其背后的地址池如何变化。
- 自动替换。 失效或被封的地址会自动从轮换中剔除,你的代码不会察觉到这一变化。
- 通过参数进行定向。 国家、城市和 ASN 的选择是在凭据中完成的,而不需要维护单独的地址列表。
- 无需管理地址池。 你无需构建、测试或刷新代理列表。
而另一种方式,即使用一份静态的单独地址列表,则意味着你需要自己处理上述所有事务,这正是 backconnect 成为任何规模地址池的标准交付模式的原因。
轮换的适用场景
以下是轮换本身所带来的具体好处,与住宅 IP 整体带来的好处有所区别。
- 突破每个 IP 的速率限制。 每个地址每小时 60 次请求的限制,在一个大型地址池中就相当于变得不受限。这是轮换最明显的优势。
- 支撑大规模采集任务。 会耗尽单一地址的请求量,分散到成千上万个地址后就变得微不足道。
- 应对单个地址被封。 当某个地址被封时,下一次请求只需使用另一个地址即可。无需检测,也无需修复。
- 以低成本获取多地区样本。 在 20 个国家检查价格或广告,不需要按国家单独购买,只需在每次请求中更改一个参数即可。
- 减少行为模式信号。 一个地址全天每 10 秒发出一次请求,看起来就是机器行为。同样的流量分散到一个地址池中就不会呈现这种特征。
轮换无法做到的一点是让不受信任的地址变得可信。如果一个网站会根据地址归属进行分类,那么轮换数据中心 IP 对该池中的每一个地址都会失效。轮换的作用是分散流量,而不是获取信任。
何时该使用轮换,何时不该
适合使用轮换代理的场景包括: 网页抓取和价格监控、SERP 与排名跟踪、跨地区广告验证、库存和现货查询,以及用于 AI 训练或数据支撑的大规模数据采集。
适合使用静态代理或 ISP 代理的场景包括: 账号管理、任何需要长时间保持登录的操作、广告平台访问,以及任何以”被识别为同一访问者”本身为目的的操作。
接下来值得阅读的两篇文章取决于你属于哪一类情况。若想了解完整的比较,静态与轮换代理对比详细介绍了两者的权衡。若想根据目标选择代理类型,请参阅网页抓取代理。
结语
轮换是一项与会话时长相关的设置,而不是一种产品类别。按请求轮换会将相互独立的流量分散到一个地址池中,是数据采集的合适默认选择。粘性会话会在你的流程所需的时间内保持同一个地址。Backconnect 则是从单一端点同时交付这两种模式的网关。
针对具体工作把轮换间隔设置正确,大多数封锁问题都会消失。设置错了,无论方向如何,你都会打断会话,或者让流量集中在容易被察觉的地方。