# 轮换会话与粘性会话：如何按请求选择

住宅网关默认进行轮换；粘性会话是需要主动指定的例外。为每个请求选择正确模式，决定了流程是顺畅运行，还是不断把自己登出。


## 一句话规则

每个请求相互独立时使用轮换；目标会关联多个请求（登录、购物车、分页搜索、多步骤表单）或检查一致性时，则使用粘性会话。


## 决策表

| 任务 | 模式 | 用户名 |
| --- | --- | --- |
| 按 URL 收集商品页面 | 轮换 | USER-cc-de |
| 搜索后打开三个结果页面 | 粘性，5 分钟 | USER-cc-de-sid-q17-ttl-5m |
| 加入购物车、结账并确认 | 粘性，30 分钟 | USER-cc-us-sid-order42-ttl-30m |
| 登录并以同一用户身份操作一天 | 粘性，24 小时 | USER-cc-gb-sid-acct9-ttl-24h |
| 连续数周保持同一地址 | 不使用会话：改用 ISP 代理 | 列表中的 ip:8000 |
| 从多个城市抽样搜索结果页 | 轮换，每个请求指定城市 | USER-cc-us-city-chicago |


## 网关如何决定出口

- 没有 `-sid-`：每个新的 TCP 连接都会获得新出口。
- `-sid-X`：所有携带 X 的连接共享一个出口，直到 `-ttl-` 到期（默认 10 分钟，最长 24 小时）。
- 更改 X 会立即获得新出口；TTL 到期后再次使用 X，同样会获得新出口。
- 如果 X 对应的家庭住宅离线，会话会迁移到同一位置的另一个出口；请将失败的请求重试一次。


## 连接保持陷阱

HTTP 客户端会复用连接。即使没有会话 ID，你仍可能在多个请求中看到相同 IP，因为这些请求共用了同一连接；这并非粘性，而是连接复用，连接池回收该连接时就会结束。若需要固定一个出口，请使用 `-sid-` 明确指定；若每次请求都需要新出口，请关闭连接或为每个请求使用新的会话 ID。


## 重试

在轮换任务中，遇到 403 或 429 后重试会成为新的访问者：成本低且有效。在粘性任务中，跨出口重试会破坏流程，而且看起来正像网站要识别的自动化行为；请在同一会话中退避后重试，仅当出口本身失效时才启动新会话。


## 并行处理

各个粘性会话彼此独立。用一百个 ID 运行一百个会话，就相当于拥有一百位行为一致的访问者；每个会话都在自身有效期内保持独立出口。ProxShift 不限制并发，因此制约因素是目标城市的代理池规模，而不是网关。


## 问题

**粘性会话更贵吗？**

不会。无论出口是否轮换，每 GB 流量的价格都相同；会话 ID 只改变路由，不改变价格。

**可以让会话持续超过 24 小时吗？**

住宅代理池不支持。若地址必须连续数周保持固定，请租用 ISP 代理：静态、独享且流量不限。

来源：https://proxshift.com/zh/guides/rotating-vs-sticky-sessions
