# 按美国城市住宅代理粘性会话

> 使用 session- 和 ttl- 段将同一美国城市 IP 保持最多 30 分钟：命名、每个城市一个会话以及 IP 更改时的处理方法。无需 KYC。

- URL: https://metroproxies.com/zh/guides/sticky-sessions-by-city/
- 最后更新: 2026-10-18
- Publisher: MetroProxies (https://metroproxies.com)

轮换 IP 适合广泛样本；粘性会话适合任何跨多个页面的操作，例如购物车、商店选择器或你自己网站上的多步表单。

**快速回答 — 如何在多个请求中保持相同的城市 IP？**

在城市用户名中添加会话 ID 和生存时间：`USERNAME-country-us-state-mo-city-st_louis-session-stl1-ttl-20`要求 **MetroProxies** 将同一个圣路易斯 IP 保持最多 20 分钟。会话持续最长 30 分钟，可通过 ttl 参数按会话设置；IP 可能提前更换。包含在US$0.50/GB及以上的计划中（2026 年 10 月）。无需 KYC；加密货币。

## 粘性会话如何工作？

| 属性 | 值 |
| --- | --- |
| 段 | `session-{id}`和`ttl-{minutes}`，在城市或 ZIP 之后 |
| 最大值 | 最长 30 分钟，可通过 ttl 参数按会话设置；IP 可能提前更换 |
| 会话 ID | 你选择的字母和数字；新 ID 会提供新 IP |
| 轮换模式 | 每个新连接会从 IP 池中分配一个 IP，通常与上一次不同；如需每个请求都使用新 IP，请每连接发送一个请求（关闭 keep-alive） |
| 费用 | 包含；仅按流量计费 |

## 何时需要粘性会话？

当一项检查的步骤必须来自同一地址时。

- **你自己网站上的多页面流程：** 添加到购物车、选择商店、查看运费估算。中途更改 IP 可能会重置网站选择的位置。
- **前后对比：** 加载页面，更改一个设置，从同一 IP 再次加载。
- **首次访问时设置位置的页面：** 一些网站将检测到的城市存储在 cookie 中；保持 IP 以便 cookie 和 IP 一致。

对于广泛样本（100 个城市，每个一页），轮换模式更简单：每个新连接在请求的城市中获得一个新 IP。

## 运行多个城市时如何命名会话？

每个城市和每次运行使用一个会话 ID，以便结果永远不会意外共享 IP，并且重试会获得新的 IP。

- `-city-boise-session-boi20261018a-ttl-15`
- `-city-spokane-session-spo20261018a-ttl-15`
- 失败后重试时：更改后缀（`...b`）以获取新 IP。

简短、可读的 ID 使日志易于阅读：城市代码、日期和一个字母就足够了。不要在不同城市之间重复使用相同的 ID。

## 如果 IP 在 TTL 之前更改会怎样？

可能会发生：最长 30 分钟，可通过 ttl 参数按会话设置；IP 可能提前更换。住宅 IP 属于家庭设备；如果该设备离线或其提供商续订地址，会话无法保持它。

在代码中处理：

1. 在会话开始时记录出口 IP（一次查询请求）。
2. 如果后续步骤因连接错误而失败，再次检查出口 IP。
3. 如果它改变了，使用新的会话 ID 重新启动流程，而不是在一个结果中混合两个 IP。

保持 TTL 尽可能短，以满足流程需要。5 分钟的流程不需要 30 分钟的会话，较短的会话较少受到设备更改的影响。

*Python：每个城市一个粘性会话，如果 IP 更改则重新启动*

```python
import requests

GATEWAY = "gw.metroproxies.com:7777"


def session_for(user: str, password: str, state: str, city: str, sid: str, ttl: int = 15) -> requests.Session:
    name = f"{user}-country-us-state-{state}-city-{city}-session-{sid}-ttl-{ttl}"
    proxy = f"http://{name}:{password}@{GATEWAY}"
    s = requests.Session()
    s.proxies = {"http": proxy, "https": proxy}
    return s


def exit_ip(s: requests.Session) -> str:
    return s.get("https://api.ipify.org", timeout=30).text.strip()


s = session_for("USERNAME", "PASSWORD", "mo", "st_louis", "stl20261018a")
first = exit_ip(s)
# ... your multi-step check on your own site goes here ...
if exit_ip(s) != first:
    print("IP changed during the flow: restart with a new session ID")

```

## 接下来该去哪里？

用 [代理位置检查器](https://metroproxies.com/zh/guides/verify-proxy-city/) 检查出口，用会话进行 [本地价格检查](https://metroproxies.com/zh/guides/local-price-checks/) 和 [按城市检查广告](https://metroproxies.com/zh/guides/city-level-ad-checks/)，并在 [用户名格式](https://metroproxies.com/zh/docs/username-format/) 中查看每个区段。更多内容见 [指南页面](https://metroproxies.com/zh/guides/)。

## 关于粘性会话，人们还会问什么？

### 我能把某个城市的 IP 保留一整天吗？

不能。最长 30 分钟，可通过 ttl 参数按会话设置；IP 可能提前更换。对于一整天的工作，让城市保持不变并接受 IP 会变化；在每条结果旁记录 IP。

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

不会。你只需为流量付费，无论会话是轮换还是粘性。

### 我一次能运行多少个会话？

每个会话 ID 都是独立的，你可以从一个账户并行运行多个会话。对每个目标保持适度的请求速率并遵守其条款；参见 [可接受使用政策](https://metroproxies.com/zh/acceptable-use/)。

---

MetroProxies: MetroProxies 是一家美国住宅代理服务商，支持城市级定位，加密货币支付，无需上传身份证明。家庭 IP 可按城市、州、ZIP 编码或 ISP 网络申请，覆盖 181 个美国城市，每个城市均提供本地数据页面。
