API 说明
本站当前基于公开 IP 信息接口提供查询能力。以下整理两类推荐接口的调用方式,便于集成到你的脚本与业务系统中。
1. ipwho.is(推荐,HTTPS + 免费额度)
# 查询指定 IP
curl https://ipwho.is/8.8.8.8
# 查询调用方自己的出口 IP(不带参数)
curl https://ipwho.is/
关键字段:ip、country / country_code、region / city、connection.isp / org / asn、timezone.id、latitude / longitude。查询失败时返回 success: false 与 message。
2. ipapi.co(备选)
curl https://ipapi.co/8.8.8.8/json/
curl https://ipapi.co/json/ # 本机出口 IP
字段:ip、country_name、region、city、org、asn、timezone、latitude / longitude。免费额度按 IP 限次,超限返回 429。
3. 使用建议
- 生产环境务必做双源容灾:主接口失败自动切换备用接口(本站首页即此策略);
- 免费接口均有频率限制,高频场景请控制 QPS 并缓存结果(同一 IP 结果可缓存 1-7 天);
- IPv6 地址直接作为路径参数传入即可;
- 归属地为运营商注册地推断,精度到市级即可满足绝大多数风控/统计需求。
4. Python 调用示例
import requests
def lookup(ip=""):
r = requests.get("https://ipwho.is/" + ip, timeout=10)
j = r.json()
if not j.get("success", True):
raise RuntimeError(j.get("message", "query failed"))
return {
"ip": j["ip"],
"loc": "{}/{} {}".format(j.get("country",""), j.get("region",""), j.get("city","")),
"isp": (j.get("connection") or {}).get("isp", ""),
"asn": (j.get("connection") or {}).get("asn", ""),
}
print(lookup("8.8.8.8"))
后续本站计划提供自有缓存网关接口(统一入口 + 更高配额),进展将在合作分享页公布。