粘性会话

粘性会话

粘性会话要求代理服务为相关请求保持一个出口 IP。只要分配仍有效且出口仍可用,应用就可以通过该地址打开页面、发送数据并接收结果。任务结束后,应用可以为下一项任务启动独立会话。

这通常是访问轮换 IP 池的一种模式。更全面的比较见静态代理与轮换代理。本文关注如何为一项任务保持地址、分配持续多久,以及什么可能中断它。

服务如何保持所选 IP

服务需要识别哪些连接属于同一任务。常见方法是在代理设置中加入会话标识符。首次连接时,服务选择出口并将其关联到该标识符。之后使用相同会话设置的连接,只要会话仍有效,就会使用已分配出口。

例如,浏览器测试使用会话名称 task1。首次连接获得示例出口 IP 198.51.100.27。通过同一有效分配打开下一页、提交表单时,也使用该地址。名称标识的是分配关系,并不包含 IP 编码,也不会永久保留它。

会话标识符可以添加到代理用户名中、通过 API 选择,或由配置好的端口表示。有些服务还提供无需单独名称的默认会话。这些都是管理分配的不同方式,因此粘性访问没有通用的用户名格式或端口号。

粘性会话可以覆盖多条网络连接。这与仅仅复用一条已打开连接不同:同一条普通 TCP 连接内的请求,本来就会保持其出口 IP。要确认会话是否能跨连接保持地址,关键是观察以相同会话设置打开新连接时会发生什么。

同一个应用的三条独立连接,携带相同的会话名称 task1。网关复用指向 198.51.100.27 的有效分配。目标看到三条连接都来自这个示例 IP。

何时多个请求需要一个 IP

多步骤浏览器测试就是明确的例子:先登录,再打开设置页、提交修改并检查结果。保持源 IP 稳定,可以消除测试中不必要的变化,尤其当网站将地址作为会话检查的一项依据时。

购物或预订测试也可能依赖一致的区域体验。应用通过同一出口搜索、选择选项,并检查下一阶段。这有助于保持各步骤间的网络位置一致,尽管网站也可能根据账户设置、配送信息或 Cookie 决定显示内容。

另一种场景是连续调用 API,目标服务要求相关操作来自一致的源地址。分配应覆盖整个序列,包括暂停和重试。相比之下,不相关的公共页面查询不一定需要同一个 IP。任务需要连续性时,保持地址才有用;它本身不会改善地址信誉,也不保证网站接受请求。

账户测试中的四个连续操作:登录、打开设置、保存修改和验证结果。粘性分配有效期间,每一步都使用相同的示例出口 IP 198.51.100.27。

代理会话不会维持网站登录状态

代理服务控制出口地址。网站控制自己的会话:登录状态、购物车或表单填写进度。浏览器或 HTTP 客户端通常通过 Cookie 或身份验证令牌携带这些状态。两套系统都可能使用“会话”一词,但保存的信息不同。

因此,出口 IP 保持不变时,登录仍可能过期。清除 Cookie 也可能让网站无法再识别用户,但不影响代理分配。反过来也可能发生:IP 变化后,网站仍可能接受有效登录。具体行为取决于网站自身规则。

HTTP 库中的会话对象,通常保存 Cookie 并复用连接。创建该对象,并不会自动在代理服务上启用粘性访问。完整工作流程需要应用同时维护网站状态和预期的代理分配。如果不同任务不能共享 Cookie,仍需要使用独立浏览器配置文件或隔离的客户端状态。

同一个浏览器使用出口 IP 198.51.100.27 时的两种状态。删除 Cookie 前,账户已登录;删除后,示例网站要求重新登录,但代理 IP 保持不变。

会话时长究竟意味着什么

两种计时器都可能被称为会话时长。固定有效期限制分配从起点开始能够存在多久;空闲超时限制最后一次符合条件的请求之后可以暂停多久。新请求可以重启空闲计时器,但不会延长另行设置的固定有效期。

限制什么启动倒计时再次请求的作用
固定有效期按服务定义,从创建分配或首次使用开始原过期时间保持不变
空闲超时从上次请求,或服务认可的其他活动开始请求符合活动条件时,重新启动空闲倒计时

以两个限制均为十分钟的示例会话为例。两者都在 14:00 开始,并在 14:08 收到另一个请求。固定有效期的截止时间仍是 14:10;空闲超时则因该请求将空闲截止时间推迟到 14:18。因此,相同的标称时长,在活跃任务中可能产生非常不同的行为。

服务可以同时执行这两种限制。此时,任一限制达到,分配就会结束。常规默认值也可能不同于设置中允许的最长时长。持续发送流量可能避免空闲过期,但不能消除另行设置的最长有效期。

过期意味着与旧出口的分配关系结束。即使会话名称相同,后续连接也可能获得另一个地址。服务可能允许已打开的连接完成,也可能将其关闭。计时器不会把尚未完成的 TCP 交互转移到不同 IP。

应选择覆盖整个任务、慢响应和预期暂停的时间窗口。如果在旧分配即将结束时启动新流程,剩余时间会短于配置时长所暗示的时间。仅为保持空闲会话而发送的请求,也仍是真实流量,可能计入服务的请求或流量额度。

隔离并行任务

当各项独立任务都需要稳定地址时,为每项任务分配自己的会话标识符,并在所有步骤中保持它。加载下一页的进程应复用任务会话,而不是每次请求都生成新名称。同一任务内的重试,也不应悄然切换到无关的代理设置。

假设两个浏览器测试同时运行。第一个使用 task1,第二个使用 task2,并各自保持独立 Cookie。如果给两个测试分配相同会话名称,在其他设置也相同时,就相当于要求服务共享一次分配。打开一个普通新标签页,本身不会创建独立代理设置或独立 Cookie 存储。

不同标识符请求的是独立分配,但并不普遍保证不同出口 IP。服务是否承诺地址不同,是另一项产品属性。粘性访问也不会让出口由你的账户独享:如果地址属于共享池,其他客户仍可以使用。

如果服务支持,多条连接可以同时使用同一个会话。它们共享出口,并继续受账户连接数和用量限制约束。更多会话名称不会提高这些限制。完整运行前,应同时检查并行任务数量,以及每项任务打开的连接数量。

两个并行浏览器配置文件保持各自独立的 Cookie。配置文件 A 使用会话 task1,图示出口为 198.51.100.27;配置文件 B 使用 task2,图示出口为 203.0.113.42。每项任务复用自己的分配;不同会话名称并不普遍保证不同 IP 地址。

地址为什么可能比预期更早变化

有效的计时器无法让不可用的出口继续工作。住宅设备可能离线,移动连接可能获得不同公网 IP,服务器也可能变得不可达。请求的时长描述分配的时间规则,本身并不保证原出口始终可用。

失去出口后,可能有两种响应。服务可以选择替代出口,让后续请求继续;也可以返回错误,保持必须使用原出口的要求。有些产品允许你选择。自动替换优先保证还能建立下一条连接;返回错误则让应用有机会在换地址继续之前停下来。

名称未变,并不能证明其余会话设置也未变。转到另一个网关或更改国家筛选条件,可能创建不同分配。具体范围取决于服务:会话可能属于特定账户、产品或入口服务器,而不是只要同名就能随处使用。

任务中途地址变化后,接下来要决定如何处理任务状态。只读步骤可能可以安全重试。提交订单或修改数据的操作则要更谨慎:响应丢失,并不能证明操作失败。通过另一个出口重启或继续之前,应先确认哪些操作已经完成。

粘性会话 task1 仍在有效期内,但原示例出口 198.51.100.27 已不可用。一种服务模式选择替代出口 203.0.113.42;另一种模式返回错误,不选择其他 IP。这是两种可选行为,并非两个连续步骤。

何时暂时的连续性就已足够

如果任务有明确起止,且仅在这次运行中需要一个 IP,粘性访问就很适合。应测试三点:分配能否跨越预期暂停、能否覆盖整个任务,以及失去出口时的处理是否符合要求。测试应包括正常暂停后建立新连接;在一条已打开连接中的活动,并不能证明分配会延续到下一条连接。

如果相同地址必须持续保留在服务器允许访问列表中,或明天仍需再次使用,应选择为此提供固定分配的服务。粘性会话过期后复用名称,并不能可靠地找回原地址。暂时保持地址与长期分配 IP,解决的是不同的连续性要求。

返回知识库