# 按城市粘性住宅代理

> 按城市粘性会话：用 -session-id-ttl-10 让一个里昂或克拉科夫 IP 保持最多 30 分钟。1 GB US$0.95，无需 KYC，支持加密货币。

- URL: https://eurocityproxies.com/zh/guides/city-sessions/
- 最后更新: 2026-10-18
- Publisher: EuroCity Proxies (https://eurocityproxies.com)

一次城市核查往往要发多个请求：一个首页、一个产品、一个配送时段。粘性会话让这些请求在该城市保持同一个家庭 IP，时长由你设定。

**快速解答 — 如何让多个请求保持同一个城市 IP？**

**EuroCity Proxies** 粘性会话保持一个出口 IP 最长 30 分钟（IP 可能提前更换，例如住宅设备离线时）。在城市用户名后加 `-session-<id>-ttl-<minutes>`，例如 `USERNAME-country-fr-city-lyon-session-lyon1-ttl-10`。截至 2026 年 10 月，ttl 最高可设为 30。每个城市、每个任务用一个会话 ID。

## 轮换用户名和粘性用户名有什么区别？

| 模式 | 用户名示例 | 出口 IP 行为 | 适用场景 |
| --- | --- | --- | --- |
| 轮换 | `USERNAME-country-pl-city-krakow` | 新连接通常会获得该城市中的不同 IP | 相互独立的页面加载，每个连接一个 |
| 粘性，10 分钟 | `USERNAME-country-pl-city-krakow-session-krk1-ttl-10` | 同一 IP 保持最多 10 分钟，即使跨新连接 | 短时核查：一个页面、两次点击、一张截图 |
| 粘性，30 分钟 | `USERNAME-country-pl-city-krakow-session-krk2-ttl-30` | 同一 IP 保持最多 30 分钟 | 对自有网站进行更长时间的测试，例如测试模式下的结账流程 |

## 粘性会话有什么用？

粘性会话会在设定时间内把会话 ID 绑定到一个出口 IP。所有使用相同用户名（包括相同 ID）的连接都会通过该 IP 发出，直到 TTL 到期。IP 也可能提前变化，例如其背后的家庭设备离线时。

没有会话 ID 时，网关以轮换模式工作。每个新连接都会从 IP 池分配一个 IP，通常是不同的 IP；如需每个请求都使用新 IP，请每个连接只发送一个请求（关闭 keep-alive）。轮换适合独立请求。粘性会话适合被视为来自同一地点的同一访客的一系列请求。例如，商店把你的配送区域保存在 cookie 中。

会话会保留你在[城市列表](https://eurocityproxies.com/zh/cities/)上选择的城市；把它们与 [ASN 定向](https://eurocityproxies.com/zh/targeting/asn/) 结合使用，并用[代理城市检查器](https://eurocityproxies.com/zh/guides/verify-exit-city/)检查出口。套餐见[定价页面](https://eurocityproxies.com/zh/pricing/)。

## 为什么每个城市、每个任务使用一个会话？

因为这样每个任务都有明确的开始、已知的出口和干净的结束。用城市和任务来命名 ID：`lyon1` 用于第一次 Lyon 检查，`krk2` 用于第二次 Kraków 检查。会话 ID 接受 1 到 32 个字母或数字。

这样结果更易读。当 Lyon 页面看起来不对时，你知道是哪个出口提供的，并能检查该 IP。它还能防止一个长期会话在同一地址上混合多个检查、cookie 和购物车。任务结束时，关闭其客户端，并用新 ID 开始下一个任务。

## 我应该选 ttl-10 还是 ttl-30？

选择覆盖任务的最短 TTL：大多数检查用 `ttl-10`，只有长时间流程用 `ttl-30`。对城市页面、产品和配送时段的检查通常十分钟内完成。对自有结账流程（含表单和测试模式支付步骤）的测试可能需要三十分钟。

不要按完整 TTL 来规划。在任务开始和结束时读取出口 IP。如果它变了，说明设备离线；用新 ID 重试一次任务。最长为 30 分钟，所以把更长的工作拆成多个任务。

## keep-alive 如何改变出口 IP？

Keep-alive 保持一个连接打开，而一个连接保持一个出口。根据 RFC 9112，HTTP/1.1 连接默认是持久的，所以客户端会复用它们，除非被告知关闭。

- **requests**：`Session` 会复用其连接池中的连接。Requests 文档将 keep-alive 描述为会话内自动进行。
- **httpx**：`Client` 以同样方式保持连接打开。
- **undici (Node.js)**：空闲套接字默认保持打开 4 秒（`keepAliveTimeout`），如果服务器发送 keep-alive 提示则更长。

使用粘性会话时这无关紧要：ID 即使在新连接上也能保持 IP。使用轮换用户名时则有影响。通过一个打开的连接发送的请求共享一个出口。要每个请求一个新 IP，请关闭连接或每次打开新客户端。

*每个城市、每个任务一个粘性会话（Python 3.9 或更高版本）*

```python
# pip install requests
from urllib.parse import quote

import requests

HOST = "gw.eurocityproxies.com"
PORT = 7777
PASSWORD = quote("PASSWORD", safe="")


def session_for(country: str, city: str, task: str, ttl: int = 10) -> requests.Session:
    user = f"USERNAME-country-{country}-city-{city}-session-{task}-ttl-{ttl}"
    proxy = f"http://{user}:{PASSWORD}@{HOST}:{PORT}"
    s = requests.Session()
    s.trust_env = False  # ignore HTTP_PROXY / HTTPS_PROXY set on your machine
    s.proxies = {"http": proxy, "https": proxy}
    return s


def exit_ip(s: requests.Session) -> str:
    return s.get("https://ipinfo.io/json", timeout=30).json()["ip"]


tasks = [("fr", "lyon", "lyon1"), ("pl", "krakow", "krk1"), ("nl", "the_hague", "hag1")]
for country, city, task in tasks:
    with session_for(country, city, task) as s:
        start = exit_ip(s)
        page = s.get("https://YOUR-SITE.example/", timeout=30)
        end = exit_ip(s)
        note = "same exit" if start == end else "exit changed: repeat once with a new id"
        print(city, start, page.status_code, note)
```

## 会话能绕过网站的速率限制吗？

不能。会话和轮换决定你的请求来自哪里；它们不改变网站允许的内容。每个城市、每次运行使用一个会话，速率适中。轮换不是绕过网站速率限制的方法。

如果页面失败，等待并稍后重试一次。如果网站持续拒绝，请停止并使用其官方途径，例如 API 或数据合作伙伴。[可接受使用政策](https://eurocityproxies.com/zh/acceptable-use/)列出了该服务不得用于的用途。

## 粘性会话消耗多少流量？

会话本身不产生费用：你只为发送和接收的数据付费。用量统计通过代理发送和接收的所有数据（上传和下载，包括标头）。1 GB = 1,000,000,000 字节。在到达目标之前失败的连接尝试不计入。用一个页面和两次 IP 查询进行的简短城市检查通常消耗几兆字节或更少，取决于页面。

流量在你的账户的所有城市和会话之间共享。预付费住宅代理和轮换移动代理流量永不过期：未使用的 GB 会保留在您的账户中，直到您使用。套餐起价为 US$0.95 1 GB，见[定价页面](https://eurocityproxies.com/zh/pricing/)。

## 粘性会话：常见问题

### 最长的粘性会话是多久？

三十分钟。在用户名中设置 `-ttl-30`。如果其背后的家庭设备离线，IP 仍可能提前变化。在每个任务开始和结束时读取出口 IP。

### 如何在同一城市获得新 IP？

更改会话 ID，例如从 `lyon1` 改为 `lyon2`，并保持用户名其余部分不变。使用轮换用户名时，改为打开新连接。

### 两个脚本能共享一个会话吗？

会话由用户名、ID 和 TTL 标识，因此发送完全相同值的两个脚本请求的是同一个粘性会话。在每个脚本中依赖它之前检查出口 IP，并为不同任务使用单独的 ID。

### 粘性会话会保持同一城市吗？

会。城市是用户名的一部分，会话会保持来自该城市定向的一个出口 IP。城市可用性各不相同；结账页面会显示哪些在线。

### 为什么使用 ttl-10 时我的 IP 两分钟后就变了？

家庭连接会离线：路由器重启、设备休眠、提供商重新分配地址。会话随后会获得新的出口。用新 ID 重试一次任务；如果每个任务都发生，请写信给支持并附上时间和 IP。

### 粘性会话比轮换会话更贵吗？

不贵。两者使用相同的每 GB 流量计费。所有套餐均可按国家/城市定向；美国还支持州和 ZIP 邮编定向；ASN 定向不额外收费。可用城市会有变化。

## 来源

1. [RFC 9112 HTTP/1.1，第 9.3 节 持久性](https://www.rfc-editor.org/rfc/rfc9112.html) — IETF (June 2022, checked 2026-10-18)
2. [Requests：高级用法、Session 对象与 Keep-Alive](https://requests.readthedocs.io/en/latest/user/advanced/) — Requests (checked 2026-10-18)
3. [undici Client：keepAliveTimeout（默认 4e3 毫秒）](https://github.com/nodejs/undici/blob/main/docs/docs/api/Client.md) — Node.js project (checked 2026-10-18)
4. [HTTPX：代理](https://www.python-httpx.org/advanced/proxies/) — Encode (checked 2026-10-18)
5. [IPinfo JSON 端点](https://ipinfo.io/json) — IPinfo (checked 2026-10-18)

---

EuroCity Proxies: EuroCity Proxies 是一家住宅代理服务商，提供覆盖欧洲的城市级定位，支持加密货币支付、无需上传身份证件：家庭宽带 IP 按 GB 计费，并为 35 个国家/地区的 103 个城市各提供一页本地数据。
