跳到主要内容
IPOK

开发者 API

免费、无需鉴权、支持跨域(CORS)。直接 GET 调用即可,返回 JSON。

接口列表

GET/api/ip?ip={ip}

IP 全量检测:归属地、ASN、IP 层风险证据、原生标签、场景参考、AI 地区快照等

GET/api/bgp?asn={asn}&ip={ip}

BGP 路由关系:公告前缀、上游/下游 ASN(数据源 RIPEstat)

GET/api/reverse-ip?ip={ip}

IP 反查域名:同 IP 上托管的域名

GET/api/batch?q={ips|cidr}

批量快速估算:用 ip-api + IPOK 离线库查询多个 IP / IPv4 CIDR;不等同单 IP 多源评分

GET/api/cidr?q={cidr}

段级信誉摘要:离线库扫描 IPv4 CIDR(单段≤/16、单请求合计≤65,536个地址),输出 VPN/Tor/滥用占比与连坐判定(零额外上游请求)

GET/api/badge?ip={ip}

SVG 风险徽章:按分档着色,可嵌入 README / 论坛;为保护上游额度,徽章不调用 Scamalytics,同一目标的分数可能与主动 /api/ip 查询略有差异。若使用超过 72 小时、最多 7 天的故障降级数据,徽章会标注“降级缓存”并改为琥珀色。超额或查询失败时以 HTTP 200 返回灰色 n/a,成功缓存 5 分钟、n/a 缓存 1 分钟

调用示例

# IP 全量检测:归属地、ASN、IP 层风险证据、原生标签、场景参考、AI 地区快照等
curl "https://ipok.io/api/ip?ip=1.1.1.1"

# BGP 路由关系:公告前缀、上游/下游 ASN(数据源 RIPEstat)
curl "https://ipok.io/api/bgp?asn=AS13335&ip=1.1.1.1"

# IP 反查域名:同 IP 上托管的域名
curl "https://ipok.io/api/reverse-ip?ip=1.1.1.1"

# 批量快速估算:用 ip-api + IPOK 离线库查询多个 IP / IPv4 CIDR;不等同单 IP 多源评分
curl "https://ipok.io/api/batch?q=1.1.1.1,8.8.8.8"

# 段级信誉摘要:离线库扫描 IPv4 CIDR(单段≤/16、单请求合计≤65,536个地址),输出 VPN/Tor/滥用占比与连坐判定(零额外上游请求)
curl "https://ipok.io/api/cidr?q=146.70.50.0/24"

# SVG 风险徽章:按分档着色,可嵌入 README / 论坛;为保护上游额度,徽章不调用 Scamalytics,同一目标的分数可能与主动 /api/ip 查询略有差异。若使用超过 72 小时、最多 7 天的故障降级数据,徽章会标注“降级缓存”并改为琥珀色。超额或查询失败时以 HTTP 200 返回灰色 n/a,成功缓存 5 分钟、n/a 缓存 1 分钟
![IP risk](https://ipok.io/api/badge?ip=1.1.1.1)

主要响应字段

{
  "geo":   { "ip", "version", "country", "city", "asn", "asName", "isp", "lat", "lon" },
  "ipType":    "residential | hosting | mobile | business | unknown",
  "usageType": "isp | dual_isp | business | hosting | mobile | education | government | unknown",
  "risk":      0,
  "riskBreakdown": {                       // how the score was computed (see /methodology)
    "contributors": [{ "source", "risk", "weight" }],
    "weightedAvg": 0,
    "floors": [{ "key": "tor", "floor": 90 }],
    "final": 0
  },
  "signals":   ["proxy", "hosting", ...],
  "blocklist": { "listed": ["SpamCop"], "checked": 5, "total": 5 },  // valid DNSBL results / planned lists, IPv4 only
  "anonAsn?":  { "asn", "name", "type" },                // known VPN/proxy provider ASN
  "nativeType": "native | broadcast | unknown",
  "sharedUsers": { "range": "1-5", "quality": "good | ok | poor | unknown" },
  "scenarios":  [{ "key": "tiktok", "stars": 3, "verdict": "try" }],
  "services":   [{ "key": "chatgpt", "status": "available" }],
  "media":      [{ "key": "netflix", "status": "unknown" }],     // known-region restriction reference, not a live unlock test
  "sources":    [{ "source": "ip-api", "risk": 10, "flags": {} }],
  "intel?":     { "asn", "company", "datacenter", "abuse" },     // ipapi.is enrichment
  "asnHistory?": [{ "asn", "firstSeen", "lastSeen" }],
  "rdap?":      { "registry", "country", "registered", "org" }   // "?" = optional, omitted when unavailable
}

状态码 / 错误

200成功
400请求参数错误:无效/私有 IP、缺少 ip/asn 等
429分钟或每日额度已用尽;按 Retry-After 重试
503额度服务或批量上游暂时不可用
502上游数据源不可用或超时

限流与缓存

额度按来源 IP(IPv6 按 /64)计算:仅 /api/ip 另有每个 Worker 实例内 30 次/分钟的突发闸;MCP、/api/ip 与 /api/badge 共用自查 20 次/UTC 日、指定目标 IP 15 次/日的日桶。Badge 超额时返回灰色 n/a 而非 429。Batch 每日最多消耗 25 个上游分块(每块最多 100 个目标);reverse-ip、whois、BGP 各 25 次/UTC 日,CIDR 10 次/日,DNS 泄露代理 40 个 HTTP 请求/日(约 20 次完整检测)。CIDR 单请求最多展开 65,536 个地址。Scamalytics 仅在显式查询且缓存未命中时尝试,受每来源 5 次/UTC 日、全站 6 次/UTC 小时及上游月额度三层约束;额度不足时若有旧缓存会明确标为降级,否则暂缺该源,整次查询仍继续。商业源(AbuseIPDB / proxycheck / ipapi.is / Scamalytics)的回源按调用方类别分池、按 UTC 小时计,自查与指定目标各一个池:本站页面发起且通过 Cloudflare Turnstile 静默验证的查询不进池(验证失败或未加载时降为 120 / 30,不拒绝);官方 App 120 / 60,浏览器扩展 120 / 30,诚实的程序化客户端(curl、脚本、MCP)100 / 30,第三方网页跨站调用 60 / 30,浏览器地址栏直接打开 30 / 10,自称浏览器却缺少浏览器必发头的请求 20 / 5。池满不拒绝:商业源只用缓存或明确标记的降级值、不再回源,其余免费源照常参与,响应带 upstream:"cached-only"、x-ipok-upstream 与 x-ipok-client 头。带着真实浏览器不可能组合的请求头(导航却带 XHR 头、页面 fetch 却带导航专属头、UA 与 client hints 的操作系统不一致)的请求直接 403——用诚实的 HTTP 客户端即可。共享缓存命中不扣对应辅助额度。超额返回 429,生产环境额度服务不可用时返回 503。高频或商用请自建缓存并联系我们。

数据引用条款

我们的接口向公众和开发者免费开放,且无需注册。但当您在网站、公开产品、应用程序或研究报告中引用或展示本站的检测数据(包括 IP 纯净度、风险得分、机房判定等)时,您必须在合适的位置明确标注数据来源为 IPOK,并提供一个指向 https://ipok.io 的可访问超链接(回链)

请合理使用;高频或商用请自建缓存,避免对上游数据源造成压力。