IP 风险画像查询
识别代理、VPN、秒拨、云手机与数据中心 IP,返回风险评分、网络归属与区县级地理位置。风险数据每 10 秒更新。
你的 IP ·实测代理出口·公共 DNS
10 项风险信号维度
10 秒风险数据更新
区县级地理定位精度
单次查询耗时
证据新鲜度与强度
不是「是坏人的概率」
不是「是坏人的概率」
这不等于安全。它的含义是:在我们的观测范围内,最近没有抓到这个 IP
参与代理、秒拨、劫持共用等行为。我们没看到,不代表没发生。
我们看不到的,你自己的流量里能看到:潮汐 Tide 在你的环境内按资源池与时间线还原正在发生的攻击。
–
风险评分
风险信号
| 信号 | 判定 | 最近捕获 |
|---|
网络归属
地理位置
各国 IP 段与风险构成
按国家与地区拆开的 IP 段归属、住宅与机房构成、主要运营商与 ASN, 以及风险库近 14 天观测到的代理类 IP 数量。数据每日随地理库刷新。
开发者 API
同一份画像能力,供你的风控系统直接调用。无需注册即可试用,登录后创建 Key 提额。
GET
https://ip99.com/v1/ip/{ip}# 直接调用,无需 Key(未登录额度)
curl https://ip99.com/v1/ip/8.8.8.8
# 带上自助创建的 Key,额度按账户计
curl -H "X-API-Key: 你的KEY" https://ip99.com/v1/ip/8.8.8.8
响应示例
{
"ip": "1.197.213.232",
"risk": {
"score": 99, "level": "high", "tags": ["proxy", "dialup_pool"],
"tag_details": [
{ "tag": "proxy", "name": "代理", "last_seen": "2026-08-20 10:51:05" },
{ "tag": "dialup_pool", "name": "秒拨", "last_seen": "2026-08-14 10:51:05" }
]
},
"signals": { "proxy": true, "vpn": false, "dialup_pool": true, "hijacked_proxy": false,
"osint": false, "crawler": false, "cloud_service": false, "cloud_phone": false,
"hosting": false, "mobile": false },
"network": { "asn": 4134, "isp": "电信", "owner": "中国电信", "usage_type": "DYN",
"usage_type_name": "家庭宽带", "ip_type": "家庭宽带" },
"location": { "continent": "亚洲", "country": "中国", "country_code": "CN", "region": "河南省",
"city": "三门峡市", "district": "义马市", "area_code": "411281",
"latitude": 34.74509, "longitude": 111.89353, "timezone": "Asia/Shanghai" },
"meta": { "provider": "threathunter", "data_version": "risk:20260822180332 geo:20260822",
"query_ms": 0, "query_us": 58 }
}
字段怎么读——尤其是 0 分
| 字段 | 含义 |
|---|---|
risk.score | 0–100。表示可核验风险证据的新鲜度与强度,随证据年龄衰减,不是「是攻击者」的概率。 |
risk.level | high / medium / low / none。none 的意思是「我方没有当前可核验的证据」,不等于安全。0 分放行前请知道这一点。 |
evidence_state | active:有仍在计分的新鲜证据。stale:见过,但证据已过时效窗、分数为 0——可作弱特征,不宜单独作为拦截依据。none:我方从未见过——可能是覆盖盲区,不等于安全。策略平台请按这个字段分流,不要只看分数。 |
risk.tag_details[].last_seen | 该类证据最近一次捕获的时刻。标签可能仍在而分数已衰减到 0——那表示证据已过期,不表示该 IP 干净。判定时以 last_seen 距今多久为准。 |
signals.* | 布尔信号。hosting / mobile 由网络场景派生,本身不是风险;其余与 tags 一一对应。 |
| 档位 | 每日配额 | 如何获得 |
|---|---|---|
| 未登录 | — | 直接调用,无需 Key |
| 免费版 | — | 登录后自助创建 API Key |
| 专业版 | 按需定制 | 在免费版字段之上增加观测天数、独立来源数与资源池标识 (匿名句柄,同账户内稳定、跨账户不可对表),并可按历史时刻回溯评分; 捕获时刻等字段另需签署数据处理协议。联系销售开通 |
| 企业版 | 按需定制 | 联系销售 |
网页查询与 API 共用同一份每日额度。未登录按公网 IP 计,登录后按账户计。 专业版是数据档位,与配额档位相互独立:企业版不自动含专业版字段。 以上都是调用我方的公网服务;若需要装在自己的机器上、 数据完全不到我方这边,见 潮汐 Tide 或 Pulse 私有化(各自单独定价)。
响应头与错误格式
每次响应都带当日额度,不必额外查询:
| 响应头 | 含义 |
|---|---|
X-Daily-Limit | 当前档位的每日配额 |
X-Daily-Remaining | 今日剩余次数 |
X-Daily-Reset | 配额重置时间(Unix 秒,北京时间零点) |
Retry-After | 仅在 429 时出现,距可重试的秒数 |
所有错误都是同一结构,便于统一处理:
{ "error": { "code": "invalid_ip", "message": "不是合法的 IPv4/IPv6 地址:..." } }
| HTTP | code | 含义 |
|---|---|---|
| 400 | invalid_ip | 不是合法 IP |
| 400 | reserved_ip | 私有/保留地址,没有公网风险画像 |
| 401 | invalid_key | API Key 无效 |
| 401 | revoked_key | API Key 已吊销 |
| 404 | not_found | 接口路径不存在 |
| 429 | rate_limited | 超出每分钟速率 |
| 429 | quota_exceeded | 当日配额用尽(响应带 Retry-After) |
| 429 | quota_exceeded_anon | 未登录档当日配额用尽——登录后创建 Key 即提额 |
meta.query_us 是服务端查询耗时(微秒)。
query_ms 同时保留,但本站查询通常在 1 毫秒以内,它基本恒为 0。
联系销售
需要更高配额、私有化部署或定制标签,留下联系方式,我们会尽快回复。