采购代理时最容易被带偏的一句话,是「短效秒换更安全」。实践里更常见的翻车是另一面:无状态价监全开粘性,流量账单上去、业务成功率几乎不动;登录态每请求换 IP,Cookie 还在、出口已跳,重试与半成品会话堆起来。根因通常不是「单价没谈下来」,而是身份寿命和任务是否跨请求共享状态没对齐。
快答:无状态、可重试的公开采集用短效(旋转);需要同一出口撑完有时限多步链路用粘性会话(sticky);同一出口要以天为单位钉住——例如长期账号、白名单对接——时用静态长效代理。先问「跨请求是否必须同一网络身份」,再定寿命;判据是任务的 Cookie/会话有没有跨请求绑定,而不是口号。
目录
- 一、短效 / 粘性 / 静态长效代理:身份寿命与可核定义
- 二、30 秒决策树:先状态,再形态
- 三、三维选型表:时长 × 风控 × 是否登录
- 四、四类错配:机制、日志信号与改法
- 五、场景对照:价监、SERP、Agent、登录态
- 六、成本口径:只用你自己的日志变量
- 七、窗口标定、路由规则与验收清单
- 常见问题
- 总结
一、短效 / 粘性 / 静态长效代理:身份寿命与可核定义
先把名词钉死:短效、粘性、静态长效代理说的是出口身份寿命,不是「谁更匿名」的排行榜。
- 短效 / 旋转(rotating):每次请求或极短间隔更换出口。目标是多样性与摊薄单 IP 负载。
- 粘性会话(sticky session):在 session id + lifetime/TTL 窗口内尽量保持同一出口,到期再换。目标是临时连续。
- 静态长效代理:同一出口按天甚至更长保持固定,计费常见按 IP 或时长。它不是「再粘久一点的 sticky」,而是按天钉住的长身份。下文「天级」指寿命按天计,不是级别高低。目标是稳定业务面与白名单一致性。
行业里怎么拆 static 和 rotating,Bright Data 这篇对照写得很清楚:固定身份和自动轮换解决的是不同约束。sticky 和 rotating 差在哪,Infatica 的会话说明也按临时连续和频繁更换拆开了。至于 sticky 的 lifetime 能不能配、配多长,ZenRows 的 sticky TTL 文档给了可操作描述:用 session 加 TTL 维持有限连续,并建议在够用的前提下把 TTL 压短。以上只证明机制存在、参数可配,并不规定所有业务统一 N 分钟;上限仍以你控制台为准。
最贵的概念混淆:粘性 ≠ 静态长效代理。 Sticky 窗口结束后 IP 通常回到共享池;静态长效代理则追求按天钉住的长周期连续。把「撑十几分钟的 sticky」当成「能用好多天的固定 IP」去扛长期账号,窗口一到就容易与业务会话错位。账号或白名单要跨多日同一出口时,应评估静态长效代理,而不是无限加长 sticky。
| 形态 | 别名 | 寿命特征 | 常见计费习惯 | 更匹配的任务 |
|---|---|---|---|---|
| 短效 | rotating | 请求级 / 极短 | 按流量(GB)居多 | 无状态公开采集 |
| 粘性 | sticky session | 有限窗口内连续 | 多在动态池按流量 | 多步、短登录、有时限会话 |
| 静态长效 | static / long-lived | 按天计固定 | 按 IP / 时长居多 | 长期账号、白名单 |
表1 定义表(机制层;具体 TTL/计费以供应商控制台为准)
正交维:机房 / 住宅 / 移动是出口类型;短效 / 粘性 / 静态长效代理是身份寿命。两维可组合,不能互相替代——别指望换池类型就能自动解决「该粘多久」的问题。出口资源怎么组池,可以先读 代理池产品与分层说明。
二、30 秒决策树:先状态,再形态
值班时别先比价,先问清:这条链路跨请求还要不要同一网络身份?要的话撑多久?最后才谈单价和池规模。
状态优先,是因为 Cookie 本来就用来在多次 HTTP 请求之间维持状态。RFC 6265 把这套模型写进了标准,MDN 的 Cookie 指南 用更口语的方式讲了同一件事。OWASP 会话管理要点 也强调会话标识要和客户端上下文对得上。所以业务一旦依赖 Cookie 或登录态,出口 IP 在链路中途一变,服务端就更容易要求重新认证或直接判异常——这是状态模型和网络身份没对齐,不是「池不够贵」。
第 1 问:跨请求是否必须同一出口身份?
- 否(单次 GET、可幂等、无会话绑定)→ 默认短效。
- 是(登录、购物车、同页子资源、Agent 多步)→ 不要默认每请求换 IP,进第 2 问。
第 2 问:同一身份要撑多久?
- 有限窗口内可跑完单次任务 → sticky,lifetime 对齐任务完成时间分布,标定方法见第七节。
- 同一出口要跨多日(按天计) → 静态长效代理;sticky 仅可作迁移过渡。
第 3 问:失败时你更怕什么?
- 更怕单点限流、多样性不足 → 倾向短效 + 退避;限流时服务端常返回 HTTP 429 一类状态码。
- 更怕会话中断、整链重跑 → 倾向 sticky,并禁止任务内 rotate。
| 判定 | 倾向 | 适用条件 |
|---|---|---|
| 无状态 + 可幂等 | 短效 | 不依赖跨请求 Cookie 绑定 |
| 有状态 + 单次任务可在窗口内结束 | sticky | lifetime ≥ 任务完成时间高分位 + 缓冲 |
| 有状态 + 出口要跨多日 | 静态长效代理 | 白名单/长期账号/固定对接 |
| 混合链路 | 按标签拆路由 | 列表与登录不要共用同一形态开关 |
表2 决策树摘要(方法论;需用你的任务标签落地)
决策树替不了合规审查,也替不了目标站条款——它只帮你把「出口身份寿命」选对。
三、三维选型表:时长 × 风控 × 是否登录
形态别靠「像不像真人」一拍脑袋。更稳的是同时看任务时长、目标风控、是否登录,三者写进工单再定短效还是粘性。
三个工单字段建议强制:
- 任务时长:单次链路墙钟(含模型停顿),用自有日志统计,而不是拍脑袋。
- 风控强度:公开低敏 / 有频控与挑战 / 登录与强校验——按目标 path 分,不按域名一刀切。
- 是否登录:无 Cookie / 短会话 / 长期账号。
| 任务时长 | 风控 | 登录 | 推荐 | 忌用 |
|---|---|---|---|---|
| 秒级单次 | 低–中 | 无 | 短效 | 静态长效代理独占公开页 |
| 高频公开铺开 | 中–高 | 无 | 短效 + 退避 | 全链路超长 sticky |
| 分钟级多步 | 中–高 | 无/弱或短会话 | sticky(窗口对齐链路) | 每请求换 IP |
| 跨多日账号/白名单 | 高 | 长期 | 静态长效代理 | 短效秒换 |
| Agent 有状态多步 | 中–高 | 视任务 | sticky 贯穿任务 | 任务内 rotate |
| 公开价监 / SERP 抽样 | 中–高 | 无 | 短效为主 | 无状态全站长粘 |
表3 三维选型(推荐/忌用为工程默认;最终以你对目标站的观测为准)
四、四类错配:机制、日志信号与改法
错配翻车,多半是任务要的状态模型和出口给的寿命对不上。下面按机制和日志信号拆,不编造营收或流量百分比。
错配 A:无状态公开采集却全开长粘性。
机制:公开价/列表通常不需要跨请求固定出口;长粘会降低出口多样性,并可能让单出口承受过高重复访问,更容易触达频控;日志里常见限流类状态码,第二节提过的 429 就是其中一种。 典型出现在:任务可幂等、无登录 Cookie 绑定、失败可安全重试。日志上常看到:业务成功率几乎不涨,但流量或重试上升;同一出口短时间命中大量无关键 URL。 改法:默认短效;只有同店连续翻页且确认绑了会话时,再开短 sticky。
错配 B:登录态或多步会话却每请求换 IP。
机制:Cookie/会话标识仍指向旧会话,网络出口身份却变了,服务端可能要求重新认证或直接拒绝。未授权时常见 HTTP 401;Cookie 跨请求怎么认人,第二节已经按 RFC 6265 讲过,这里不重复。 链路明确依赖登录态或跨请求会话时最容易中招。日志上常看到:链路前半成功、中后段 401/挑战增多;半成品会话比例上升;重试后仍从中途失败。 改法:整条任务共用 sticky,lifetime 盖住完成时间高分位,任务内不要 rotate。
错配 C:把 sticky 当静态长效代理扛长期账号。
机制:sticky lifetime 结束后出口释放,业务若仍持有旧登录态,会出现「会话还在、网络身份已变」。sticky 的界定是有时限连续,不是无限期固定,第一节 sticky/rotating 对照和 TTL 说明已经写过机制。 账号或白名单要跨多日、同一出口时,别用 sticky 硬扛。日志上常看到:失败时间与 session 到期时间对齐;白天稳定、窗口边界集中掉登录。 改法:改用静态长效代理;sticky 最多当迁移桥,并写死截止日期。
错配 D:用少量静态长效代理硬扛超高并发公开页。
机制:静态长效代理解决的是身份稳定,不是无限并发预算;公开高 QPS 更容易在单 IP 上触发限流。 任务无登录、可横向打散、目标是吞吐时,静态长效代理不是答案。日志上常看到:单 IP 429/挑战升高、队列堆积,同时固定 IP 成本不低。 改法:公开高并发走短效加退避;静态长效代理留给低并发、强身份。
| 错配 | 机制一句话 | 优先看的日志字段 | 纠正 |
|---|---|---|---|
| A 无状态长粘 | 多样性下降、单出口过热 | 出口 ID 重复率、429、业务成功率 | 改短效 |
| B 有状态短效 | 会话与出口身份不一致 | 401/挑战、会话完成率、出口是否中途变化 | 整链 sticky |
| C sticky 冒充静态长效代理 | lifetime 到期释放 | 失败是否对齐 session 到期 | 改用静态长效代理 |
| D 静态长效代理冲公开高并发 | 单 IP 限流 | 每 IP 的 429 与 QPS | 短效摊薄 |
表4 错配排查表(无虚构金额/流量;用你的字段替换)
价监场景里,更该把业务成功率、重试和出口形态写进自己的 SLA 字段,而不是只盯连通探针——具体阈值用业务日志定,不从外站抄百分比。
五、场景对照:价监、SERP、Agent、登录态
同一套短效/粘性/静态长效代理,落到价监和落到 Agent 上,默认值并不一样;有例外就写清触发条件,别靠值班口口相传。
| 场景 | 默认形态 | 允许例外 | 明确不要 | 相关依据/延伸 |
|---|---|---|---|---|
| 公开价监 | 短效 | 同店连续翻页且确认会话绑定 → 短 sticky | 无状态全站长粘 | 自建 SLA 字段看成功率/重试 |
| SERP 抽样扩量 | 短效 + 频控 | 同查询翻页需 Cookie → 短 sticky | 用超长 sticky 堆关键词 | 路径选型另议,先定形态 |
| Agent 有状态多步 | sticky 贯穿任务 | 无状态抽样可短效 | 任务内 rotate | Cookie 跨请求状态,见第二节 |
| 长期账号/白名单 | 静态长效代理 | 迁移期可用长 sticky 并设截止 | 旋转硬冲后台 | sticky ≠ 静态长效代理,见第一节 |
表5 场景默认与例外(工程默认,需按目标站观测校准)
调度标签怎么挂到资源层,按「列表→短效 / 会话→sticky / 账号→静态长效代理」拆即可,不必再堆一层新概念。
六、成本口径:只用你自己的日志变量
代理标价不是有效成本。别人文章里的百分比也替不了你的网关日志。形态错配通常会让你在「多付了多少流量」和「少拿了多少成功结果」两边同时吃亏,但这两边不要用同一套系数糊成一个假精确公式。
更稳妥、也最好审计的口径只有一个:
单次业务成功的有效成本 ≈ 同一观测窗口内的代理实付金额 ÷ 业务成功次数。实付金额来自账单或计费流水,成功次数来自业务日志,两边时间窗和业务线必须对齐。
若还要拆原因,用两个独立观察量即可,不要再乘出一个「看起来很科学」的复合式:
- 量放大:计费请求数 ÷ 业务发起次数。重试一多,这个比就上去——说明钱花在重复请求上。
- 成功折扣:业务成功次数 ÷ 业务发起次数。空壳、软封、会话中断一多,这个比就下去——说明付钱了却没换成可用结果。
注意:同一次失败既触发重试又算业务无效时,两个比值会同时变差,这是现象重叠,不是让你把两个系数再乘一遍。周报里并排看「有效成本、量放大、成功折扣」三列即可。
形态和计费习惯大致这样匹配:
| 计费习惯 | 更常匹配的形态 | 误判点 |
|---|---|---|
| 按 GB | 短效、动态 sticky | 只比单价,不看实付÷成功次数 |
| 按会话/窗口 | 强 sticky 产品 | lifetime 过长,浪费轮换面 |
| 按 IP/时长 | 静态长效代理 | 用静态长效代理冲公开高并发 |
表6 计费与形态(无行业均价)
Agent 额外成本在模型与机时重跑:中途换 IP 导致整链重来时,费用出现在云与 LLM 账单,而不是代理账单。是否发生,用「会话完成率 + 任务重跑次数」验证,而不是用拍脑袋倍数。
七、窗口标定、路由规则与验收清单
sticky 的 lifetime 应对齐你自己的任务完成时间分布再加一点缓冲,并且落在供应商允许的范围内。验收看业务是否跑通、窗口里出口有没有飘,别只看连通探针绿不绿。
窗口可以这样定,步骤都能在自己环境复现:
- 在预发或小流量抽样真实任务,记录墙钟完成时间(含模型停顿)。
- 计算高分位(常用 P95;样本覆盖主路径与高峰)。
- lifetime ≥ 高分位 + 业务缓冲,且不超过供应商控制台允许的上限。TTL 可配、宜短不宜长,第一节已经链过 sticky TTL 说明。
- 上线后监控:窗口内出口指纹是否变化;会话完成率是否达标。
标定完成后,再回控制台核对 session/TTL 是否落在允许范围;过长窗口只会浪费轮换面。
# 形态路由(示意,非SDK)
if task.needs_same_exit and task.horizon_days:
use static_long_lived # 静态长效代理
elif task.needs_same_exit:
use sticky(ttl = from_own_p95_plus_buffer)
else:
use rotating
# 禁止:同一业务 session 中途 sticky → per-request
验收时至少能导出这些字段:
| 指标 | 测法 | 通过含义 |
|---|---|---|
| 业务成功率 | 真实 URL + 业务字段校验 | 达 SLA,而非仅 TCP 通 |
| 粘性漂移 | 同 session 窗口内多次记录出口 | 无非预期换 IP |
| 会话完成率 | 多步/Agent 是否跑完 | 半成品比例可控 |
| 重试率 r | 网关计数 | 不吃掉错误预算 |
表7 验收字段(数值阈值自定;结合自有网关与业务日志)
池侧资源与形态怎么配合,回到第一节的「寿命维 × 出口类型维」即可。会话安全原则已在第二节点过,不替代目标站政策。
常见问题
什么是短效代理?和旋转代理、rotating 是一回事吗?
短效代理指出口在每次请求或极短间隔更换,中文也常叫旋转/短效秒换;英文材料多写 rotating。其产品定义是提高出口多样性,而不是保持会话连续。行业对 static 与 rotating 的分工说明见 Bright Data 的对照文;适合无状态、可重试的公开采集。多步且依赖 Cookie/登录态的链路,默认不应硬套「每请求换 IP」。
什么是粘性会话(sticky session)?和静态长效代理一样吗?
不一样。Sticky 通常指在供应商约定的时间窗口内尽量保持同一出口,窗口结束再换;静态长效代理则是按天甚至更长固定同一出口,常按 IP 或时长计费。sticky 的 lifetime 可配置、也有上下限,以控制台为准。机制见正文第一节。需要同一出口撑完一条有时限的任务链时用 sticky;别把它当成能钉住好多天的账号身份。
是不是越短效越安全、越不容易被拦?
不能这么推。短效提高的是出口轮换面;有状态链路里换出口,更容易让服务端看到会话与网络身份不一致。HTTP Cookie 本就是服务端用来维持状态的机制,正文第二节已说明。无状态公开页可以优先短效;登录、购物车、Agent 多步应先保证身份连续,再谈轮换。判据是任务是否跨请求共享 Cookie/会话,而不是「越短越安全」口号。
粘性窗口怎么定?有没有标准时长?
没有放之四海的标准分钟数。可核的做法是:用你自己的任务日志量墙钟完成时间分布,至少覆盖主路径与高峰,取高分位如 P95 再加业务缓冲;并对照供应商 sticky lifetime 的可配范围,正文第一节已给 TTL 说明入口。在满足连续性的前提下宜选更短 TTL,以保留池的轮换空间。文中不给出「行业平均窗口」——那无法代表你的链路。
只看 GB 单价够不够?形态错了账怎么算?
不够。单价只是标价。更干净的算法是:同一窗口里用代理实付金额去除以业务成功次数,得到单次成功的有效成本;再并排看「计费请求÷业务发起」和「成功÷发起」,分别反映重试是否烧量、结果是否可用。输入必须来自你的账单和业务日志,不要套用别人文章里的百分比。形态错配时,这两边往往会一起变差,用日志验证即可。
总结
说到底,短效、粘性、静态长效代理争的不是「谁更高级」,而是出口身份能活多久。开会时与其先比单价,不如先问两句:这条链路跨请求还要不要同一出口?要的话,撑几分钟就够,还是得按天钉住?Cookie 用来跨请求认人、sticky 只是窗口内的临时连续——前面已经把机制和出处写过了,这里不再重复贴链接。账单也一样:用自己网关里的标价、重试和无效请求去算,比转述别人文章里的百分比踏实。
落地时我一般就做四件事:给任务标上时长、风控、是否登录;按前面的决策树改路由,别在同一条会话里中途乱切形态;sticky 窗口用自己的完成时间高分位去定,而不是拍一个「看起来够长」的数;上线后盯业务成功率、出口有没有在窗口里飘、会话是否跑完、重试有没有把预算吃光。需要动态轮换或按天固定身份时,回到第三节提到的产品入口选型即可。
机房还是住宅、Agent 窗口怎么拉长、SERP 走自建还是 API、价监 SLA 写哪些代理指标——那些是另一张地图上的题,各自有专题。这里只把「换不换 IP、粘多久」钉清楚;这一维选对了,后面的比价和扩容才吵得到点子上。