代理轮换策略必须跟随“一个完整任务”的边界。依赖 Cookie、购物车或固定地区的多步骤流程,通常需要在整个过程中保持同一网络身份;互不相关的公开页面任务,才适合为每个任务分配新的合格出口。混用这两种模式会导致登录失效、地区内容不一致和基准数据失真。

稳定代理会话流程与按任务受控轮换的住宅代理流程对比

本指南不假设任何供应商的凭据格式,适用于经授权的本地化测试、广告验证、市场研究和公开网页数据采集。

什么是粘性代理会话

粘性会话要求代理服务在限定时间内,或直到会话结束前,尽量让一个逻辑会话保持同一出口身份。应用可以通过该出口发送多个请求,同时维持同一个 Cookie 容器、地区和账号状态。

“粘性”不等于永久不变。出口可能不可用,产品可能限制最长持续时间,路由条件也会变化。生产程序必须识别意外换 IP,并决定是否重启整个流程,而不是悄悄把两个身份拼在一起。

什么是轮换会话

轮换策略允许在创建新任务、连接或会话时分配新的合格出口。实际轮换可能按请求、按连接或按产品规则发生。不要假设每个请求都会获得全球唯一 IP,应使用真实产品配置验证。

轮换最适合相互独立的任务。每个任务都应有自己的超时、结果记录和重试上限,一个身份的 Cookie 或鉴权状态不得泄漏到另一个身份。

选择矩阵

工作流建议起点原因
登录、购物车、多页表单粘性应用状态和网络身份保持一致
区域商店质量测试每个区域独立粘性会话语言、货币和后续接口可比较
互不相关的公开产品页按任务轮换每页可独立测量且不共享状态
广告验证旅程完整旅程保持粘性跳转和落地页应代表同一访问者
大型目录更新检查受控轮换可分发独立项目并遵守速率限制
已登录账号操作稳定且获批准的身份异常换 IP 可能触发安全控制

显式管理会话状态

const session = {
  key: process.env.PROXY_SESSION_KEY,
  gateway: process.env.PROXY_SERVER,
  region: process.env.PROXY_REGION,
  startedAt: Date.now(),
  maxDurationMs: 10 * 60 * 1000,
  cookieJarId: crypto.randomUUID()
};

// 同一个粘性会话始终绑定同一个 Cookie 容器。
// 独立轮换任务应创建新的状态对象。

会话密钥、网关和凭据只能通过受保护的运行时秘密注入。日志只保存会话密钥的单向哈希,不能保存秘密本身。每个工作器都要知道开始时间、目标区域、Cookie 容器和最大持续时间。

放量前必须完成的五项测试

1. 会话内稳定性

通过同一会话发送短序列,确认出口、国家、ASN 和页面地区保持一致,同时记录网络身份和业务结果。

2. 会话之间的分离

创建多个独立会话,测量出口身份的变化频率。目标不是不现实的“每次全球唯一”,而是证明轮换策略符合产品说明。

3. Cookie 连续性

每个粘性会话使用独立 BrowserContext 或 Cookie 容器,确认无害偏好或授权测试会话能跨步骤保留。RFC 6265 说明 Cookie 与 Set-Cookie 如何让 HTTP 维持状态。

4. 区域一致性

同时检查 IP 地区、页面语言、货币、时区相关内容和后续接口。IP 在目标国家并不够,旧 Cookie 或账号偏好也可能改变内容。

5. 到期与恢复

让会话达到边界或模拟出口不可用,确认流程能安全停止、创建新会话并从安全检查点重启。结账或登录流程遇到无法解释的身份变化时,不应继续。

重试必须保持原定策略

粘性流程的瞬时重试通常应保留相同会话密钥和 Cookie 容器。如果身份已不可用,应使用全新状态重启完整旅程。独立轮换任务的重试可以使用新会话,但必须记录为新的尝试,避免虚增成功率。

不要把稳定复现的 401、403 或业务校验失败当成网络错误反复重试。出现 407 时检查代理凭据和产品配置;出现 429 时降低并发并遵守目标的重试提示。

并发与速率控制

应按目标、区域和逻辑会话限制并发。大量工作器共用一个粘性身份,会造成不真实行为和争用。每个会话只承载一个活动旅程,或少量明确兼容的请求。

使用带任务 ID 的队列。工作器获取会话、完成或失败一个任务、记录证据并释放资源,这样才能计算成本、重试率和可用结果率。

能够验证选择是否正确的指标

  • 按策略与区域统计的可用结果率;
  • 会话完成率和意外换 IP 率;
  • 每个完整任务的 p50/p95 耗时;
  • 挑战、407、429 与超时率;
  • 每个可用结果的重试次数和成本;
  • 地区、语言与货币准确率。

更高的原始请求成功率不一定更好。能加载页面却破坏购物车的轮换测试仍然失败;能保持状态但区域覆盖不足的粘性测试,也不适合独立采集。

常见故障

  • Cookie 跟着新出口继续使用:应用状态和网络身份没有一起隔离。
  • 旅程中途换 IP:会话到期或出口无法继续保持。
  • 所有工作器共用一个身份:错误复用了会话密钥。
  • 轮换看似无效:连接池或会话标识仍在复用。
  • 地区不一致:IP、浏览器语言、时区、Cookie 与账号设置冲突。
  • 请求指标很好但订单失败:只统计了 HTTP 响应,没有统计业务完成。

上线检查清单

  • 先定义任务边界,再决定是否轮换。
  • 代理会话与 Cookie 容器放在同一隔离边界。
  • 设置最大持续时间和安全重启点。
  • 日志对标识做哈希并删除凭据。
  • 按目标和区域限制并发。
  • 区分网络重试与业务失败。
  • 统计业务完成,不只看状态码。
  • 只访问获授权目标并遵守条款与速率限制。

选择合适的 98IP 产品

需要受控改变网络身份的任务,可评估 98IP 动态住宅代理;需要较长时间保持区域身份时,可比较 98IP 静态住宅代理。放量前应使用真实业务旅程测试。

98IP 提供上述代理服务,本文由 98IP 团队发布。代理访问不会替代授权、隐私义务、目标条款或技术速率限制。

常见问题

粘性是否代表 IP 永不变化?

不是。应把粘性视为有边界的服务行为,并为出口丢失或到期设计安全恢复。

是否应该每个请求都换 IP?

只有在请求真正独立且产品支持该轮换模型时才适合。状态型旅程通常不应这样做。

轮换后还能复用 Cookie 吗?

技术上可以,但可能产生身份和隐私信号冲突。只有授权测试明确需要时,才应有意识地迁移状态。

资料说明

本文核对了 RFC 6265 与 Playwright 的 BrowserContext、Isolation 和 APIRequestContext 官方文档,查阅日期为 2026 年 8 月 16 日。根据 98IP 零外链规则,仅以纯文本记录资料名称和日期。