无需 KYC——无需身份证、无需自拍、无需证件 · 用加密货币支付:BTC, USDT, USDC, ETH, SOL, LTC · 最低充值 US$25
语言: 简体中文
查看价格

指南 · 测试

如何检查代理是否为静态:随时间变化的 IP、ASN 和位置

静态代理在整个租用期内保持相同的出口 IP、网络和国家。下面是一种可重复的验证方法,附有经过测试的 curl 和 Python 脚本。

最后更新: · 3 分钟阅读

快速回答

如何检查代理是否为静态?

要检查代理是否为静态,请在至少 24 小时内每小时通过代理请求一次 api.ipify.org 和 ipinfo.io/json。然后对比所有成功检测中的出口 IP、ASN(org 字段)和国家。每一行都是同一个 IP 和同一个 ASN,就说明代理在该时间段内保持静态。SteadyProxy 静态 IP 在每个 30 天租期内应保持固定;此测试可让你自行验证。更新于 2026 年 10 月 19 日。

该测试的关键事实有哪些?

测试端点api.ipify.org(仅出口 IP)和 ipinfo.io/json(IP、org/ASN、城市、地区、国家)
建议时间窗口24 小时,每小时检测一次(共 24 次);长期任务在第 7 天再重复一次
静态结果每次成功检测中 IP 和 ASN 都相同
轮换结果出现两个或更多不同 IP,或 ASN 发生变化
请求失败超时不是 IP 变化:只对比成功的行
城市变化数据库更新时可能发生;IP 和 ASN 是更强的信号
测试情况两个脚本均于 2026 年 10 月 19 日通过一个受密码保护的测试代理运行

静态代理上究竟哪些值应保持不变?

有三个值不能变:出口 IP、ASN 和国家。出口 IP 是网站看到的地址;api.ipify.org 只返回该值。ASN 是宣告该 IP 的网络;ipinfo.io 在 org 字段中显示它,例如 AS9009 后跟网络名称。国家来自 IP 数据库。即使 IP 保持不变,数据库更新时城市和地区也可能变动。注意,你连接的主机不一定是出口 IP:请始终通过代理读取出口 IP。

如何用 curl 检查代理?

先运行一次检测查看字段,再运行循环。将 USERNAME、PASSWORD、host 和 port 替换为仪表板中为你 IP 显示的四个值。循环每次检测向 ip-log.txt 写入一行,并在两次检测之间休眠 3,600 秒。最后两条命令统计不同 IP 和网络的数量:各只有一行说明代理在测试期间保持静态。

curl:一次检测,然后 24 次每小时检测
# One check through the proxy: IP, network (org = ASN + name), country, city
curl -s -m 30 -x "http://USERNAME:[email protected]:7777" https://ipinfo.io/json

# 24 checks, one per hour, one line per check in ip-log.txt
PROXY="http://USERNAME:[email protected]:7777"
for i in $(seq 1 24); do
  printf '%s ' "$(date -u +%Y-%m-%dT%H:%M:%SZ)" >> ip-log.txt
  curl -s -m 30 -x "$PROXY" https://ipinfo.io/json | tr -d '\n' >> ip-log.txt
  echo >> ip-log.txt
  sleep 3600
done

# Count the distinct exit IPs and networks in the log (one line each = static)
grep -o '"ip": *"[^"]*"' ip-log.txt | sort | uniq -c
grep -o '"org": *"[^"]*"' ip-log.txt | sort | uniq -c

如何用 Python 检查代理?

Python 脚本执行相同的测试,并写入可用电子表格打开的 CSV 文件。它从环境变量(PROXY_HOST、PROXY_PORT、PROXY_USER、PROXY_PASS)读取代理详情,以及两个设置:CHECKS(默认 24)和 INTERVAL_SECONDS(默认 3600)。每轮它查询两个端点,因此还能发现两者不一致。最后它打印不同 IP、网络和国家的数量,以及一行结果。我们于 2026 年 10 月 19 日使用 Python 3.14 和 Requests 2.34,通过一个需要用户名和密码的本地测试代理运行了它。

check_static.py:随时间记录 IP、ASN 和位置
"""Log the exit IP, network and location of one proxy over time.

A static IP shows the same IP, network (ASN) and country in every row.
Install: python -m pip install requests
"""
import csv
import os
import time
from datetime import datetime, timezone
from urllib.parse import quote

import requests

HOST = os.environ.get("PROXY_HOST", "gw.steadyproxy.com")
PORT = os.environ.get("PROXY_PORT", "7777")
USER = os.environ.get("PROXY_USER", "USERNAME")
PASSWORD = os.environ.get("PROXY_PASS", "PASSWORD")
CHECKS = int(os.environ.get("CHECKS", "24"))
INTERVAL = int(os.environ.get("INTERVAL_SECONDS", "3600"))
LOG_FILE = os.environ.get("LOG_FILE", "static-ip-log.csv")

PROXY = "http://" + quote(USER, safe="") + ":" + quote(PASSWORD, safe="") + "@" + HOST + ":" + PORT
PROXIES = {"http": PROXY, "https": PROXY}
FIELDS = ["time_utc", "ipify_ip", "ipinfo_ip", "org", "country", "region", "city"]


def check_once(session):
    ipify = session.get("https://api.ipify.org?format=json", proxies=PROXIES, timeout=(10, 30))
    ipify.raise_for_status()
    info = session.get("https://ipinfo.io/json", proxies=PROXIES, timeout=(10, 30))
    info.raise_for_status()
    data = info.json()
    return {
        "time_utc": datetime.now(timezone.utc).isoformat(timespec="seconds"),
        "ipify_ip": ipify.json()["ip"],
        "ipinfo_ip": data.get("ip", ""),
        "org": data.get("org", ""),
        "country": data.get("country", ""),
        "region": data.get("region", ""),
        "city": data.get("city", ""),
    }


def main():
    rows = []
    with requests.Session() as session, open(LOG_FILE, "a", newline="", encoding="utf-8") as fh:
        session.trust_env = False
        writer = csv.DictWriter(fh, fieldnames=FIELDS)
        if fh.tell() == 0:
            writer.writeheader()
        for n in range(CHECKS):
            try:
                row = check_once(session)
            except requests.RequestException as exc:
                print("check", n + 1, "failed:", type(exc).__name__)
            else:
                writer.writerow(row)
                fh.flush()
                rows.append(row)
                print(row["time_utc"], row["ipify_ip"], row["org"], row["country"], row["city"])
            if n + 1 < CHECKS:
                time.sleep(INTERVAL)

    ips = {r["ipify_ip"] for r in rows} | {r["ipinfo_ip"] for r in rows}
    orgs = {r["org"] for r in rows}
    countries = {r["country"] for r in rows}
    print("successful checks:", len(rows), "of", CHECKS)
    print("distinct IPs:", sorted(ips))
    print("distinct networks:", sorted(orgs))
    print("distinct countries:", sorted(countries))
    if len(rows) >= 2 and len(ips) == 1 and len(orgs) == 1 and len(countries) == 1:
        print("RESULT: same IP, network and country in every successful check")
    else:
        print("RESULT: not stable, or not enough data - read the log")


if __name__ == "__main__":
    main()

测试应运行多久?

至少运行 24 小时。许多轮换产品按请求、按会话或每隔固定分钟数更换 IP,因此一分钟内几次检测可能错过变化。对于每周运行的任务,7 天后再重复测试。每小时检测一次就足够,且远低于免费查询服务的使用限制。仅在短测试时使用更短的间隔,例如间隔 5 分钟共 12 次检测。

如果测试期间 IP 发生变化怎么办?

先排除设置错误。检查每次请求是否使用了相同的主机、端口和用户名:两个不同 IP 常常来自两条不同的凭据行。然后检查你机器上的系统代理或 VPN 是否接管了部分请求;Python 脚本通过 trust_env = False 忽略此类设置。如果某条 SteadyProxy 凭据行的出口 IP 确实在租期内发生变化,请将日志发送给支持团队。我们的更换规则:如果某个 IP 无法使用,请联系客服:在库存允许的情况下,我们会修复它,或用同一国家/地区的另一个 IP 替换。

为什么 IP 不变而位置会变?

因为位置是数据库的估算,而不是 IP 的属性。地理位置供应商会更新数据,静态 IP 在两次更新之间可能从一座城市移到附近城市。注册机构数据也好不到哪去:RIPE 的文档说明其国家属性不能可靠地用于将 IP 映射到国家。将城市变化视为数据库事件,将 IP 或 ASN 变化视为真实变化。我们的指南 静态住宅代理真的是住宅代理吗? 说明了如何解读这些记录。

关于测试静态代理,人们还问什么?

多少次检测能证明代理是静态的?

没有任何数字能为未来证明;测试只描述你测量的时间窗口。实践中,24 次每小时检测均为同一 IP 和同一 ASN,说明代理一天内没有轮换。一周后再重复测试并保留日志。在 SteadyProxy,每个 IP 在其 30 天租期内应保持固定。

为什么要同时使用 api.ipify.org 和 ipinfo.io?

api.ipify.org 只返回 IP,是干净的参照。ipinfo.io 增加 ASN 和组织、城市、地区和国家。如果两个服务在同一轮中报告不同 IP,你的客户端可能正通过不同路线打开多个连接。在信任任何结果之前,这值得检查。

粘性会话会在短测试中看起来像静态吗?

会。带粘性会话的轮换住宅代理会在设定时间内保持一个 IP(通常几分钟),然后更换。几分钟的测试会看起来是静态的。这就是本指南要求至少 24 小时检测的原因。真正的静态 IP 会跨天保持相同的 IP 和 ASN。

请求失败是否意味着 IP 变了?

不会。超时或代理错误只意味着那一次请求没有完成。脚本会跳过失败的轮次,只对比成功的行。连续出现大量失败就值得检查一下:核对凭据、端口和你自己的连接,如果问题仍然存在,请联系支持。

不提供 token 就把这些检查发送到 ipinfo.io 可以吗?

轻度使用的话,可以:每小时一次请求属于非常轻的流量。正如我们 2026 年 10 月 19 日的测试所示,ipinfo.io 无需 token 即可响应基本请求,同时也为更高流量提供 token。如果你要一次性测试大量 IP,请创建一个免费 token 并将其加入请求,或者单独使用 api.ipify.org。

我应该测试出口 IP 还是仪表盘中的主机?

出口 IP。你连接的主机可能是名称或地址,与网站看到的 IP 不同。请通过代理运行检查,并使用 api.ipify.org 返回的 IP。这个出口 IP 也是需要加入允许列表或在 WHOIS 中查询的那个 IP。

我可以在依赖某个 SteadyProxy IP 之前先对它进行测试吗?

可以,而且我们建议这样做。从 US$2.24 订购一个 IP,使用 30 天,运行 Python 脚本一天,然后查看日志。根据我们的退款政策,交付后 24 小时内无法正常工作、且我们无法修复或更换的 IP,会全额退还到你的余额。

本指南使用了哪些来源? (5)
  1. ipify API — ipify (2026-10-19)
  2. IPinfo 开发者文档 — IPinfo (2026-10-19)
  3. Requests 高级用法:代理与超时 — Requests (2026-10-19)
  4. curl 手册页 — curl (2026-10-19)
  5. RIPE 数据库文档:country 属性 — RIPE NCC (2026-10-19)

每个 ISP IP 低至 US$2.24 · 30 天 · 无需 KYC

查看价格