代理轮换:IP 何时改变
代理轮换会改变网站接收你的流量时所看到的出口 IP。变化可以发生在新请求到来时、固定间隔结束后,或应用请求另一个地址时。合适的切换时机,可以把独立请求分散到不同 IP,同时让相关操作保持在一起。
固定地址与变化地址之间的整体选择,见静态代理与轮换代理。本文关注什么会触发变化,以及它如何影响已经进行中的请求。
轮换时改变的是什么?
使用轮换网关时,软件中填写的地址可以保持不变,而网站看到不同的出口 IP。你连接同一个主机名和端口,由服务选择用于连接网站的出口。
例如,价格监控程序可以通过 192.0.2.14 获取一个公开商品页面,再通过 198.51.100.27 获取另一个。这些都是示例地址。运行监控程序的电脑并未更换互联网连接,只是请求通过不同出口到达网站。
结果由两个独立决定共同形成:何时重新选择出口,以及从哪里取得下一个出口。计时器可能选择另一个可用代理,也可能重新连接移动调制解调器。触发方式相同,但具体操作及可能造成的中断会不同。
按请求轮换
按请求轮换时,服务会为每个能够独立路由的请求重新选择出口。这适合不需要共用 IP 的独立商品页面、公开列表或搜索查询。这里要仔细理解“请求”的含义:对于 HTTPS 和 SOCKS5 TCP 流量,轮换通常在新建目标连接时发生。
假设要采集 500 个商品页面的价格。每个页面提供一个独立结果。服务可以把请求分配到可用出口,而不是让整个任务都通过一个地址。同时运行的多个请求,也可以使用不同出口。
重新选择可能返回之前使用过的地址。可用 IP 池是有限的,选择也可能是随机的。按请求轮换本身,并不承诺 500 次请求会使用 500 个不同 IP。
请求与连接并不相同
应用可以在一条连接上发送多个 HTTP 请求。普通 HTTPS 连接通过代理时,会先建立通往目标的隧道。随后加密请求在隧道内传输,代理只转发数据,不读取每个请求。
因此,该隧道的出口保持不变。标称“按请求”轮换的服务,可能是在应用打开新隧道或目标连接时才选择另一个出口。复用现有隧道,可能继续使用原 IP。
浏览器页面可能通过多条连接加载大量资源,刷新页面也可能复用已经打开的连接。因此,轮换并不对应一次点击、一个标签页或一次完整页面加载。
按固定间隔轮换
按时间轮换时,一次 IP 分配会持续一个明确的时间窗口。窗口结束后,服务重新选择出口。只要出口仍可用,窗口内的相关请求就可以共享已分配地址。
假设一个会话在 10:00 开始,持续五分钟。测试使用同一个出口打开目录、应用筛选条件,再查看下一页结果。10:05 时分配过期;过期后建立的新连接可能获得不同地址。这里的五分钟只是示例,并非所有服务的标准间隔。
应检查计时器何时开始。它可能从会话的第一个请求开始计时,也可能按代理端口的固定计划运行。如果距离下次计划切换只剩一分钟,此刻开始任务并不会获得完整的五分钟窗口。另一个空闲超时设置,也可能提前结束分配。
这个间隔通常针对某个会话、端口或代理连接设置,并不一定同时轮换账户上的所有连接。如果多项任务需要各自独立的 IP 分配,就需要服务支持相应的隔离方式。
让多个请求保持已分配出口,通常称为粘性会话。轮换服务可以用这种模式先保持一段时间,再重新选择。
按需轮换
按需轮换由你或应用决定何时请求另一个出口。根据服务不同,控制方式可能是控制面板按钮、轮换 URL 或 API 命令。有些服务也会在你启动另一个代理会话时重新分配。
如果任务有多个相关步骤,但持续时间难以预测,这种方式就很有用。测试可能打开表单、提交内容,再等待确认页面。在整套操作中,可以保持当前出口,然后在下一项独立测试开始之前请求重新分配。
按需轮换可以自动执行:应用在任务完成后,或达到指定请求数后发送切换命令。“按需”描述的是谁决定何时切换,并不要求每次都由人按按钮。
控制范围也很重要。命令可能只影响一个会话,也可能影响整个代理端口,或被多条连接共用的物理调制解调器。如果命令改变了这些连接共同使用的分配,其他使用该资源的工作也会受到影响。
正在进行中的请求会怎样?
对于通往网站的普通 TCP 连接,出口 IP 是连接的一部分。请求与响应使用同一条已建立的连接。轮换不能简单地把尚未完成的交互转移到另一个出口 IP。
服务对轮换边界的处理方式可能不同。它可能让现有连接继续在当前出口上完成,仅对后续连接应用新分配;也可能关闭连接,要求应用重新连接。重新连接调制解调器,也可能中断通过它的流量。
假设一次下载在定时轮换前刚刚开始。如果连接保持打开,计时器到期后,下载仍可通过旧出口继续。如果连接被关闭,应用就必须重新开始下载,或在支持的情况下续传。单凭轮换间隔,无法判断正在进行的传输会怎样。
下一个 IP 从哪里来?
从 IP 池选择另一个出口
基于 IP 池的服务会选择可用出口。下一条连接可能使用同一台数据中心服务器上的不同 IP、另一台服务器、家庭连接或移动设备。从 IP 池选择出口,无需重新连接承载上一请求的设备。
如果支持位置或网络筛选,它们会限制符合条件的出口。在同一国家内选择另一个 IP,不需要更换国家。筛选范围较窄,也可能意味着可用地址更少、重复更多。
重新连接移动调制解调器
有些移动代理服务通过断开并重新建立调制解调器的蜂窝数据连接来轮换。在这个过程中,经过该连接的流量可能暂停。公网地址由运营商决定,因此重新连接也可能再次获得相同的公网 IP。
另一些移动服务则从 IP 池选择另一台可用设备。两者都属于移动代理轮换,但对进行中工作的影响可能不同。“移动轮换”这个术语本身,并不说明采用哪种机制。
谁控制切换?
使用轮换网关时,服务商按请求的模式选择出口。应用设置中的网关可以保持不变,由服务管理出口地址。
应用也可以自行轮换固定代理列表。例如,为一项任务使用第一个地址,为下一项任务使用第二个,然后继续遍历列表。它可以按顺序或随机选择,每个独立请求后切换,也可以保持同一个代理直到任务结束。
因此,一份静态数据中心代理或 ISP 代理列表,也能支持轮换工作流程。每个代理自身的 IP 保持固定,软件改变的是下一条连接由哪个代理承载。如果希望自行控制地址与任务的分配关系,这种方式很有用。
更换订阅中已购买的地址,是另一项操作。定期刷新会改变你能访问的 IP 集合,但不会自动让应用在工作过程中切换使用它们。
围绕任务选择切换时机
先确定哪些操作需要保持同一出口,再把切换安排在下一请求或任务可以使用另一个 IP 的节点。
| 任务 | 合适的时机 | 原因 |
|---|---|---|
| 采集相互独立的公开商品页面 | 每次请求或新建目标连接时 | 每个结果都可以通过单独选择的出口获取。 |
| 在已知时段内运行多项相关检查 | 使用覆盖这些检查的定时分配 | 分配仍有效时,请求可以共享一个出口。 |
| 完成持续时间不固定的操作序列 | 完成后按需切换 | 应用知道哪些步骤属于同一任务,以及它们何时全部完成。 |
对于长时间传输,如何处理现有连接,比短轮换间隔更重要。对于多项并发任务,应检查轮换控制是分别作用于每项任务,还是作用于它们共享的资源。
改变 IP 不会清除浏览器 Cookie 或账户数据。网站仍可能将请求关联到同一会话或账户。轮换可以把流量分配到不同出口,但不会重置所有限制,也不保证请求成功。
完整运行前,先用小规模测试检查所选模式。记录新连接的出口 IP 和时间,再在预期的计时器边界前后,或发送切换命令后重复检查。同时检查已打开的连接是否仍然保持。这些观测可以说明实际切换是否适合任务;仅有 IP 重复,并不能证明轮换失效。
