# 会话控制

动态住宅代理有两种会话模式:轮换(默认)和粘性。模式通过 username 参数切换,无需任何后台设置。

## 轮换模式(默认)

不带会话参数时,**每次连接请求自动分配一个新 IP**:

```bash
curl -x proxy.eproxies.net:23333 -U "USERNAME-pool-flow-region-US:PASSWORD" https://ipinfo.io
# 连续执行两次,返回的 IP 不同
```

适合:数据采集、价格监控、广告验证等希望每个请求来自不同 IP 的场景。

## 粘性模式

追加 `-sid-{8位随机}-ttl-{分钟}`,同一 `sid` 在 `ttl` 时间内复用同一 IP:

```bash
curl -x proxy.eproxies.net:23333 -U "USERNAME-pool-flow-region-US-sid-a1b2c3d4-ttl-30:PASSWORD" https://ipinfo.io
# 30 分钟内用同一 sid 重复请求,返回同一 IP
```

| 参数 | 说明 |
| --- | --- |
| `sid` | 会话标识,8 位随机字母数字,由你自行生成;每个 sid 对应一个独立会话 |
| `ttl` | IP 保持时长(分钟),**1–120** |

适合:账号登录、多步骤表单、购物车流程等需要会话持久性的操作。

## 会话管理技巧

**主动换 IP**:换一个新的 `sid` 即立刻获得新 IP,不必等 ttl 到期。

**并行多会话**:不同 `sid` 互相独立,可同时维持任意多个固定 IP 的并行会话:

```python
import random, string, requests

def make_session_proxy(country: str) -> dict:
    sid = "".join(random.choices(string.ascii_lowercase + string.digits, k=8))
    url = (
        f"http://USERNAME-pool-flow-region-{country}-sid-{sid}-ttl-30:PASSWORD"
        "@proxy.eproxies.net:23333"
    )
    return {"http": url, "https": url}

# 10 个互相独立的美国固定 IP 会话
sessions = [make_session_proxy("US") for _ in range(10)]
for proxies in sessions:
    print(requests.get("https://ipinfo.io", proxies=proxies, timeout=30).json()["ip"])
```

> 住宅 IP 来自真实设备,粘性会话期间设备下线可能导致 IP 更换。对可靠性要求高的流程建议在业务层校验出口 IP 是否变化。
