每次都是同一个 IP
检查 你用的是同一个 Session / Client,还是生成代理时选了粘性模式?
处理 每个请求新开 Session / Client,或重新生成“每个新连接换 IP”的代理。
停止条件 新 Client 仍是同一个 IP,就用 curl -x 单独测一下,分清是代码还是代理的问题。
为什么 Session 一直是同一个 IP,怎样拿到新 IP,怎样在一个短任务里保持同一个 IP。
动态机房代理的出口 IP 在建立连接时决定。如果代码把连接保持着反复用,IP 就不会变。
Requests 文档写明:Session 使用 urllib3 连接池,同一主机的多次请求会复用底层 TCP 连接。HTTPX 对 Client 的说法一样,而它的顶层函数(如 httpx.get)每个请求都新建连接。IP 什么时候换,就取决于这一点。
| 项目 | requests | httpx |
|---|---|---|
| 每个请求换 IP | 每个请求新建 Session(或直接 requests.get) | 每个请求新建 Client(或直接 httpx.get) |
| 几个请求用同一个 IP | 同一个 Session,或粘性模式的代理 | 同一个 Client,或粘性模式的代理 |
| SOCKS5 | pip install "requests[socks]",用 socks5h:// | pip install "httpx[socks]",用 socks5:// |
| 默认超时 | 没有,要自己设 | 网络无响应 5 秒 |
来源:Requests 与 HTTPX 官方文档,2026-11-12 阅读。requests.get() 每次调用都会临时建一个 Session。
# pip install requests
import requests
PROXY = "http://LOGIN:PASSWORD@HOST:PORT" # from My assets
PROXIES = {"http": PROXY, "https": PROXY}
URL = "https://ipinfo.io/ip"
def ip_on_new_connection():
# A fresh Session has an empty connection pool, so it opens a new connection.
with requests.Session() as s:
return s.get(URL, proxies=PROXIES, timeout=(5, 20)).text.strip()
print("new connection each time:", [ip_on_new_connection() for _ in range(5)])
with requests.Session() as s:
print("one Session:", [s.get(URL, proxies=PROXIES, timeout=(5, 20)).text.strip() for _ in range(5)])仅为示例:把 HOST、PORT、LOGIN、PASSWORD 换成“我的资产”里的值。轮换模式下首个列表应逐次变化;第二个列表通常重复,因为 Session 复用了同一条连接。
# pip install httpx
import httpx
PROXY = "http://LOGIN:PASSWORD@HOST:PORT" # from My assets
URL = "https://ipinfo.io/ip"
TIMEOUT = httpx.Timeout(20.0, connect=10.0)
def ip_on_new_connection():
# A new Client has its own empty connection pool.
with httpx.Client(proxy=PROXY, timeout=TIMEOUT) as client:
return client.get(URL).text.strip()
print("new connection each time:", [ip_on_new_connection() for _ in range(5)])
with httpx.Client(proxy=PROXY, timeout=TIMEOUT) as client:
print("one Client:", [client.get(URL).text.strip() for _ in range(5)])仅为示例,逻辑同上:新 Client 开新连接,同一个 Client 复用连接。
有的服务商把会话写进用户名。Proxy302 是在生成代理时选:在动态机房页选“保持同一个 IP 约 10 分钟”,而不是“每个新连接换 IP”。这样 IP 会保持约 10 分钟,之后或空闲约 60 秒后换新。
登录、多页流程、必须同一地址的下载,用粘性模式。已经生成的代理不会随模式切换而改变,需要另一种行为就再生成一个。
# pip install "requests[socks]" "httpx[socks]"
import requests, httpx
PROXY = "socks5h://LOGIN:PASSWORD@HOST:PORT" # requests: socks5h resolves names on the proxy
print(requests.get("https://ipinfo.io/ip", proxies={"http": PROXY, "https": PROXY}, timeout=(5, 20)).text)
PROXY_HTTPX = "socks5://LOGIN:PASSWORD@HOST:PORT" # httpx accepts a socks5:// URL
with httpx.Client(proxy=PROXY_HTTPX, timeout=20.0) as client:
print(client.get("https://ipinfo.io/ip").text)仅为示例。先把代理生成为 SOCKS5,每个 IP 资产只有一种协议。requests 里 socks5 在本机解析域名,socks5h 在代理端解析。
import time
import httpx
import requests
from requests.adapters import HTTPAdapter
from urllib3.util import Retry
# requests: retry on a Session, as in the Requests documentation
s = requests.Session()
retries = Retry(total=3, backoff_factor=0.5, status_forcelist=[429, 502, 503, 504])
s.mount("https://", HTTPAdapter(max_retries=retries))
# httpx: a plain retry loop with a growing pause
def get_with_retry(client, url, tries=3):
for n in range(tries):
try:
r = client.get(url)
if r.status_code not in (429, 502, 503, 504):
return r
except httpx.TransportError:
pass
time.sleep(2 ** n)
raise RuntimeError("gave up after %d tries" % tries)仅为示例。只重试可以安全重复的请求,两次之间要停一下。轮换代理上的重试可能从另一个 IP 出去。
出口只有美国。选模式(每个新连接换 IP,或同一 IP 约 10 分钟)和协议 HTTP / SOCKS5。
按流量从钱包扣费,US$0.40/GB,没有流量包。在“我的资产”里复制地址、端口、账号、密码。
把信息填进 requests 或 httpx 示例并运行。
预期结果 轮换模式下,“新连接”那一行会出现不同的美国 IP;“同一个 Session”那一行可能重复同一个。
这条线路只有美国出口,网站能识别出这些地址是机房地址。适合遵守目标网站条款的数据采集、监控和接口调用。注册账号、开店、投放广告这类账号任务,请改用住宅或静态 ISP IP。
检查 你用的是同一个 Session / Client,还是生成代理时选了粘性模式?
处理 每个请求新开 Session / Client,或重新生成“每个新连接换 IP”的代理。
停止条件 新 Client 仍是同一个 IP,就用 curl -x 单独测一下,分清是代码还是代理的问题。
检查 看是连接超时还是读取超时,以及目标网站本身的速度。
处理 把读取超时适当调大,连接超时保持较短,并加上带间隔的重试。
停止条件 代理一直连不上:回“我的资产”核对地址、端口、账号、密码。
检查 确认装了 requests[socks] 或 httpx[socks],且代理是按 SOCKS5 生成的。
处理 安装对应的额外依赖、用对 URL 协议头,或改用 HTTP 代理。
每次都用新连接:每个请求新建 requests.Session 或 httpx.Client,或直接用 requests.get / httpx.get(不复用连接池)。在循环里用同一个 Session 或 Client,会复用连接、IP 不变。
因为 Session 复用了到同一主机的 TCP 连接。每个请求新建 Session,或用“每个新连接换 IP”的代理并让每次调用用新连接。
可以。生成代理时选“保持同一个 IP 约 10 分钟”,约 10 分钟后或空闲约 60 秒后会换。
能,前提是生成时选了 SOCKS5。安装 requests[socks] 或 httpx[socks],用 socks5:// 或 socks5h:// 地址。
钱包按流量扣,US$0.40/GB,没有流量包,没有免费试用。
产品观察 · 确认日期:
站内产品事实表,2026-11-12 核对:动态机房线路只有美国出口,钱包按 GB 扣费 US$0.40/GB,支持 HTTP 或 SOCKS5,默认每个新连接换 IP,或同一 IP 保持约 10 分钟(超过约 10 分钟或空闲约 60 秒会换),无免费试用。
官方文档 · 确认日期:
2026-11-12 阅读:Session 用 urllib3 连接池,同一主机的请求复用 TCP 连接;SOCKS 需安装 requests[socks];socks5 在本机解析域名、socks5h 在代理端解析;不设置就没有超时;重试用 urllib3 的 Retry 挂到 HTTPAdapter。
官方文档 · 确认日期:
2026-11-12 阅读:proxy 参数可用于 Client 和顶层函数;账号密码写在 URL 里;SOCKS 需安装 httpx[socks] 并用 socks5:// 地址。
官方文档 · 确认日期:
2026-11-12 阅读:顶层 API 每个请求都新建连接;Client 使用连接池,可以复用同一条 TCP 连接。
官方文档 · 确认日期:
2026-11-12 阅读:默认网络无响应 5 秒后抛出 TimeoutException;有 connect、read、write、pool 四种超时;写法 httpx.Timeout(10.0, connect=60.0)。
注册账号、充值一次,就能选动态住宅、静态 ISP 或数据中心 IP,几分钟配进你的浏览器。