如何调查一个 IP 地址:3 个真实 IP,3 种判定
用 12 个被动步骤调查 IP 地址,并在三个真实 IP 上实际运行:一个 Mullvad 出口判定为 block,一个被 Spamhaus 列入的 AhrefsBot 判定为 step up,一台服务器判定为 allow。

2026 年 10 月 19 日 05:34 UTC,我们把三个地址送入同一条流程,得到了三种不同的判定。一个 Mullvad VPN 出口评分为 100,判定为 block。一个经过验证的 AhrefsBot 地址评分为 59,判定为 step_up,因为 Spamhaus 收录了它。一台 DigitalOcean 服务器评分为 12,判定为 allow。而在十一天前,同一个 AhrefsBot 地址的评分是 23,判定为 allow。
下面按顺序介绍这十二项检查、每一步要读取的字段、我们据以行动的阈值、在哪里报告滥用,以及任何 IP 调查的法律边界。

如何调查一个 IP 地址:三个地址,三种判定
同样的十二个问题把三个地址引向了三种不同的处理方式,而在每种情况下,起决定作用的都是一个信号。以下是来自我们 API 的免密钥查询结果,按所示时间保存,数值未经编辑:
| IP | 它是什么 | 保存时间(UTC) | fraud_score、recommended_action | 起决定作用的信号 |
|---|---|---|---|---|
| 185.213.155.73 | Mullvad 服务器 de-fra-wg-001,法兰克福 | 05:34:30 | 100,block | 位于 Mullvad 自己的服务器列表中,wireguard_open 触发 |
| 5.39.1.230 | AhrefsBot,位于巴黎的 OVH | 05:34:32 | 59,step_up | 经过验证的爬虫,但被列入 Spamhaus ZEN |
| 104.248.50.21 | DigitalOcean droplet,新泽西州北伯根 | 05:34:35 | 12,allow | 只是托管,没有滥用或匿名化工具标记 |
我们的分档是:25 及以下为 allow,50 及以下为 review,75 及以下为 step_up,75 以上为 block。检查的顺序是:可路由性、所有者、网络类型、主机名、匿名化工具、爬虫或扫描器、黑名单、评分、决策、报告、有效期以及法律边界。
中间那一行就是教训所在。经过验证的爬虫仍然可能出现在黑名单上,而我们评分中的爬虫减分并没能让它保持在 allow。
开始之前:保持被动,并记录 IP 出现在哪里
在查询任何内容之前,先记下告警的上下文:带时区的时间戳、它访问的端口或路径,以及它做了什么,例如探测 /wp-admin 或 /.env,或者一连串失败的登录。这些上下文对判定的影响,不亚于任何一次查询。
保持被动:使用查询、注册管理机构和信誉网站,绝不反向扫描该地址。端口扫描可能会惊动主机的运营者,而未经许可扫描某个网络可能违法,或违反您的服务商条款。
第 1 步:它是可路由的公网地址吗?
首先确认该地址究竟能否通过互联网到达您。读取 threat.is_bogon 和 threat.is_cgnat。bogon 是绝不应出现在公共互联网上的地址,例如私有或保留地址段。如果它作为源地址出现在您的互联网边界上,那么您看到的是内部流量、配置错误的代理或伪造的数据包,本流程的其余部分就不适用了。
运营商级 NAT(CGNAT)地址是可路由的,但它是共享的。一个移动或宽带地址可以同时承载数百名用户,因此您对它做出的任何决定都会落到所有这些人身上。
我们的三个地址都返回 is_bogon 为 false、is_cgnat 为 false,因此它们继续进入流程的下一步。
第 2 步:它归谁所有?ASN 与 RDAP
所有者信息来自两条记录:宣告该地址的自治系统(AS),以及该地址块的注册记录。读取 asn.asn、asn.org 和 asn.rpki 了解路由,再读取 whois.org、whois.netname、whois.registered 和 network.abuse_contact 了解注册信息。
| IP | asn.asn、asn.org | rpki | whois.org | whois.netname | whois.registered |
|---|---|---|---|---|---|
| 185.213.155.73 | 39351, ESAB-AS - 31173 Services AB | valid | 31173 Services AB infrastructure in Frankfurt, DE. | NET-31173-185-213-155-0-24 | 2017-07-19 |
| 5.39.1.230 | 16276, OVH - OVH SAS | valid | Failover IPs | OVH-DEDICATED-FO | 2012-05-15 |
| 104.248.50.21 | 14061, DIGITALOCEAN-ASN - DigitalOcean, LLC | unknown | none | none | 2018-08-06 |
请注意这些记录没有说的内容。Mullvad 服务器的记录中没有任何地方写着"Mullvad":它写的是 31173 Services,也就是运营 Mullvad 网络的公司,而且 whois.has_vpn_keywords 为 false。DigitalOcean 的 whois.org 返回的是"none",因此在这里所有权信息由 ASN 承载。如果您需要背景知识,这里介绍了 ASN 能告诉您关于网络的哪些信息。
当存储的记录信息不足时,就去查源头。注册数据保存在五个区域互联网注册管理机构:ARIN、RIPE NCC、APNIC、LACNIC 和 AFRINIC。IANA 的 RDAP 引导文件会告诉您某个地址段由哪一家管理。RDAP 是 WHOIS 的结构化 JSON 继任者。当我们在 05:43 UTC 打开 RIPE 关于 5.39.1.230 的 RDAP 记录时,它显示的是一个更小的地址块 5.39.1.224/27,其注册组织为 Ahrefs Pte Ltd。我们存储的记录反映的是 OVH 更大的 failover 地址块。以最具体的注册记录为准。
第 3 步:它属于哪类网络?
网络类型为后续的每个信号提供框架,因此要在读取任何信誉数据之前先读取它。相关字段是 asn.asn_type、asn.user_type、asn.connection_type、detection.is_hosting 和 detection.is_mobile。
| IP | asn_type | user_type | connection_type | is_hosting | is_mobile |
|---|---|---|---|---|---|
| 185.213.155.73 | hosting | hosting | datacenter | true | false |
| 5.39.1.230 | hosting | search_engine_spider | datacenter | true | false |
| 104.248.50.21 | hosting | hosting | datacenter | true | false |
三个都是托管地址,但只有一个最终判定为 block。托管只是背景,而不是罪证:VPN 出口、爬虫以及您自己的 CI 运行器都位于数据中心。这就是为什么托管 IP 不能证明欺诈。AhrefsBot 的 user_type 为 search_engine_spider,这是第二个地址是爬虫的第一条线索。
第 4 步:它的主机名说明了什么?反向 DNS 与 FCrDNS
反向 DNS 返回地址块所有者设置的主机名,而正向确认的反向 DNS(FCrDNS)会检查该主机名能否解析回同一个 IP。读取 network.ptr_record 和 network.fcrdns_valid,然后自己运行一次检查,因为存储的 PTR 可能落后于实时 DNS。我们在 2026 年 10 月 19 日 05:42 UTC 运行了以下命令:
dig -x 185.213.155.73 +short # no answer
dig -x 5.39.1.230 +short # proxy-fr005-cip7.ahrefs.net.
dig +short proxy-fr005-cip7.ahrefs.net # 5.39.1.230
dig -x 104.248.50.21 +short # no answer
AhrefsBot 地址在实时检查中通过了 FCrDNS,而 Ahrefs 的机器人说明页面表示,其爬虫主机名总是以 ahrefs.com 或 ahrefs.net 结尾。不过,我们的 API 没有为它存储 PTR,这就是为什么后面会对它触发 no_ptr_datacenter。请以实时运行的结果为准,而不是存储的字段。
DigitalOcean 服务器展示了另一种失败情况。我们的 API 为它存储了一个属于无关第三方的主机名,fcrdns_valid 为 false,并触发了 fcrdns_mismatch 方法。而我们自己运行的 dig -x 根本没有返回 PTR,因此存储的名称已经过时。这样的不匹配是一个弱信号:它是仅有的两个触发方法之一,而该地址的评分仍然只有 12。
第 5 步:它是 VPN、代理、Tor 出口还是中继?
这一步要回答的是:是否有人藏在这个地址背后。读取 detection.is_vpn、is_proxy、is_tor、is_relay、vpn_provider、relay_provider 和 last_seen。
| IP | is_vpn | is_proxy | is_tor | is_relay | vpn_provider | last_seen |
|---|---|---|---|---|---|---|
| 185.213.155.73 | true | false | false | false | Mullvad | 2026-10-17T20:32:18.000Z |
| 5.39.1.230 | false | false | false | false | none | 2026-10-18T21:40:52.000Z |
| 104.248.50.21 | false | false | false | false | none | 2026-10-18T10:14:47.000Z |
Mullvad 服务器被标注了名称,vpn_confidence 为 95,因为它位于 Mullvad 为自家应用公布的服务器列表中。这就是 VPN IP 如何与其服务商对应,而这种方式有其局限:未被列出的 VPN 仍可能被探测捕获,但不会被标注名称。对于 Tor,请将该地址与 Tor Project 的批量出口列表进行比对,或阅读我们关于检测 Tor 出口流量的指南。iCloud Private Relay 等中继不是 VPN:它们承载的是普通浏览器用户,因此我们的评分把中继地址的上限设为 60,它永远不会达到 block。
第 6 步:它是经过验证的爬虫还是已知的扫描器?
经过验证的爬虫是指位于其运营者公布的地址段列表中的地址,而扫描器则是探测整个互联网的基础设施。读取 threat.crawler.verified、name、operator 和 verification_method,然后读取 threat.is_scanner 和 threat_types。
| IP | crawler.verified | crawler.name、operator | verification_method | is_scanner | threat_types |
|---|---|---|---|---|---|
| 185.213.155.73 | false | none | none | false | ["vpn"] |
| 5.39.1.230 | true | AhrefsBot, Ahrefs | ip_range_list | false | ["spammer","abusive"] |
| 104.248.50.21 | false | none | none | false | [] |
| 162.142.125.10 | false | none | none | true | ["scanner"] |
AhrefsBot 与 Ahrefs 公布的地址段匹配,因此它的运营者是确定的。任何 User-Agent 自称 Googlebot 的流量都应受到同样的对待:在信任之前,先验证自称 Googlebot 的 IP。更全面的介绍请参阅通过 IP 地址检测 bot。
第四行是位于安娜堡的一个 Censys 扫描器,于 05:34 UTC 查询。它返回 is_scanner 为 true,评分为 0,判定为 allow,detection_methods 列表为空。扫描器标记不会影响我们的评分,因此请直接读取它。
第 7 步:它是否在黑名单上,从什么时候开始?
黑名单记录的是曾经观察到来自某个地址的滥用,而收录日期比是否收录更重要。读取 threat.is_abusive、is_spammer、is_botnet 和 dnsbl_sources。
| IP | is_abusive | is_spammer | is_botnet | dnsbl_sources |
|---|---|---|---|---|
| 185.213.155.73 | false | false | false | [] |
| 5.39.1.230 | true | true | false | ["zen.spamhaus.org"] |
| 104.248.50.21 | false | false | false | [] |
然后以被动方式检查外部来源:
- Spamhaus。 ZEN 整合了 Spamhaus 的各个免费 IP 黑名单,其页面会引导您使用 Spamhaus 的 IP 和域名信誉检查工具查看收录详情。
- AbuseIPDB。 AbuseIPDB 展示用户提交的滥用报告。请查看它的置信度评分和最近几份报告的日期,而不是报告总数。
- VirusTotal。 VirusTotal 显示有多少安全厂商标记了该地址,以及与之关联的任何文件或 URL。
- Shodan 和 Censys。 Shodan 和 Censys 显示它们的扫描已经发现该主机上运行着什么,因此您无需触碰主机就能看到开放的服务。
时效胜过是否收录。上周的收录很重要,而六个月前的干净结果几乎无法说明今天的任何情况。
第 8 步:读取评分及触发的方法
评分是对上述所有内容的带日期汇总,而 scoring.detection_methods 会告诉您它为什么落在这个位置。下面是 AhrefsBot 的查询结果,精简到本手册用到的字段组,数值未经编辑:
curl https://api.geoiphub.com/v1/lookup/5.39.1.230 -H "x-api-key: YOUR_API_KEY"
{
"ip": "5.39.1.230",
"asn": {
"asn": 16276,
"org": "OVH - OVH SAS",
"asn_type": "hosting",
"user_type": "search_engine_spider",
"rpki": "valid"
},
"whois": {
"org": "Failover IPs",
"netname": "OVH-DEDICATED-FO",
"registered": "2012-05-15T00:00:00.000Z"
},
"network": {
"abuse_contact": "abuse@ovh.net"
},
"detection": {
"is_vpn": false,
"is_tor": false,
"is_hosting": true
},
"threat": {
"is_abusive": true,
"is_spammer": true,
"is_scanner": false,
"threat_types": ["spammer", "abusive"],
"dnsbl_sources": ["zen.spamhaus.org"],
"crawler": {
"verified": true,
"name": "AhrefsBot",
"operator": "Ahrefs",
"verification_method": "ip_range_list"
}
},
"scoring": {
"fraud_score": 59,
"confidence": 0.486,
"recommended_action": "step_up",
"detection_methods": ["abusive_listed", "datacenter_blocklisted", "no_ptr_datacenter", "verified_crawler", "known_spammer"]
},
"meta": {
"last_classified_at": "2026-10-19T05:34:32.660Z"
}
}
三个地址各自触发的方法:
| IP | 评分、处理方式 | confidence | detection_methods |
|---|---|---|---|
| 185.213.155.73 | 100,block | 0.7075 | known_vpn_server, wireguard_open, datacenter_with_vpn_proxy, no_ptr_datacenter |
| 5.39.1.230 | 59,step_up | 0.486 | abusive_listed, datacenter_blocklisted, no_ptr_datacenter, verified_crawler, known_spammer |
| 104.248.50.21 | 12,allow | 0.22 | datacenter_ip, fcrdns_mismatch |
verified_crawler 是一个开脱性信号,在我们的评分中价值减 28.5 分(置信度 0.95 时为减 30 分),但它仍不足以抵消两个黑名单方法和一个垃圾邮件收录。信誉是历史,而评分是它的一个快照;这里介绍了 IP 信誉是如何构建的。
第 9 步:决定拦截单个 IP、前缀还是 ASN
把评分档位对应到处理方式,然后选择处理范围有多大。以下是我们会据以行动的判定:
| IP | 我们的决定 | 原因 |
|---|---|---|
| Mullvad,100 | 在注册、支付和管理流程中拦截;如果您的用户正当使用 VPN,则改为 step up | 敏感流程中的匿名化工具,没有用户历史可用于权衡 |
| AhrefsBot,59 | 在速率限制下允许抓取;对任何提交表单或登录的行为执行 step up | 爬虫没有理由登录,而且它的地址段目前被收录 |
| DigitalOcean,12 | 允许并观察 | 仅仅是托管,没有其他方法触发 |
范围与处理方式同样重要。一次性事件拦截单个 IPv4 地址。对于 IPv6,拦截 IPv6 /64 而不是单个地址,因为一个客户通常控制整个 /64。只有当真实用户从不来自某个托管网络时,才拦截整个 ASN,对移动运营商或 CGNAT 地址段则绝不这样做。
优先使用速率限制和验证挑战,而不是硬性封禁:封禁也会波及下周持有该地址的人。根据日志自动封禁(例如使用 fail2ban)是另一个话题。关于哪种信号能阻止哪种攻击,请参阅哪种 IP 信号能阻止哪种攻击。
第 10 步:向网络的滥用联系人报告滥用 IP
将滥用报告发送到 network.abuse_contact 中的地址,该地址来自注册记录:
| IP | network.abuse_contact |
|---|---|
| 185.213.155.73 | abuse-cust-de@31173.se |
| 5.39.1.230 | abuse@ovh.net |
| 104.248.50.21 | abuse@digitalocean.com |
| 162.142.125.10 | scan-abuse@censys.com |
发送证据,而不是形容词:带时区的时间戳、日志行、目标主机和端口,以及这些流量做了什么。同时在 AbuseIPDB 上提交,让其他防御者也能看到。
第 11 步:一个 IP 判定能维持多久?
判定只能维持几天,而不是几个月,我们亲眼看到了一次变化。2026 年 10 月 8 日,我们为一篇关于网页抓取的文章查询了 5.39.1.230。它返回 crawler.verified 为 true、is_abusive 为 true,评分为 23,判定为 allow,触发的方法为 abusive_listed、datacenter_blocklisted、no_ptr_datacenter 和 verified_crawler。
2026 年 10 月 19 日 05:34:32 UTC,同一地址返回的评分为 59,判定为 step_up。同一个爬虫,同一个经过验证的地址段,同一个运营者。方法列表中的变化是 known_spammer 被加入,而今天的查询显示 is_spammer 为 true,且 dnsbl_sources 中包含 zen.spamhaus.org。我们在 10 月 8 日没有记录这两个字段,因此我们只知道垃圾邮件收录是新进入评分的,而不知道 Spamhaus 是哪一天收录它的。经过验证的爬虫减分依然生效,但并不足够。十一天让这个地址跨越了两个档位。
我们的威胁数据源和爬虫地址段文件都每天刷新,因此判定可能在一夜之间改变。规则是:为每个判定保存日期,对于比您的数据源更新周期更旧的判定,在采取行动之前重新运行查询。标记不是判定,而判定会过期。
第 12 步:能找到某个 IP 地址背后的人吗?
不能。IP 地址只能把您引向一个网络,而不是一个人:只有 ISP 或托管商才能把某个地址和某个时间对应到具体用户,而且它只会在法院命令等法律程序下公开这些信息,不会告诉您,也不会告诉我们。
只调查接触过您自己系统的地址,追查到网络这一层就停下,不要试图揭露或扫描任何人。地理定位同样是近似的:我们的三次查询将这些地址定位在法兰克福、巴黎和北伯根,这只能在城市级别定位到一个数据中心,绝不是街道地址。
在下一条告警上运行同样的流程
从您的告警队列中取出下一个地址,把告警上下文放在旁边,用同样的查询来运行它。要自动化这十二项检查,请从查询 API 文档开始。
不带密钥的查询上限为每分钟 30 次,而且这个上限很严格:一分钟内的第 30 次请求就已经会返回 429,并把调用方 IP 锁定两个小时。脚本请使用免费密钥:它每天提供 1,500 次查询,并包含所有字段。对于繁忙的告警队列,下一步是将查询结果大规模接入 SIEM。
常见问题
如何调查一个可疑的 IP 地址?
以被动方式按顺序进行。确认它是可路由的公网地址,查明它归谁所有、属于哪类网络,检查它的主机名、匿名化工具标记和爬虫标记,查看黑名单收录情况及其日期,然后依据评分采取行动,并记下日期。
如何检查一个 IP 地址是否恶意?
没有任何单一检查能证明这一点。查看当前的收录情况(例如 Spamhaus)、AbuseIPDB 上近期的滥用报告以及匿名化工具标记,然后将它们与该地址在您自己系统上的行为进行权衡。一个标记意味着曾经观察到来自该地址的滥用,并不意味着这次请求就是滥用。
能找到某个 IP 地址背后的人吗?
单凭您自己做不到。IP 只能指向一个网络运营商,只有该运营商才能把某个地址和某个时间对应到具体用户,而且它只会在法律程序下披露这些信息,不会告诉您。请改为向该网络的滥用联系人报告。
应该拦截单个 IP、整个前缀还是整个 ASN?
一次性事件拦截单个 IPv4 地址;IPv6 应拦截 /64,而不是单个 IPv6 地址;只有当真实用户从不来自某个托管网络时,才拦截整个 ASN。避免拦截移动网络或 CGNAT 地址段,因为一个地址可能承载许多用户。
经过验证的爬虫就一定可以放行吗?
不一定。AhrefsBot 的 5.39.1.230 在 2026 年 10 月 19 日与 Ahrefs 公布的地址段匹配,但同时也被列入 Spamhaus ZEN,评分为 59,判定为 step_up。验证只能告诉您是谁在运营该地址,并不能说明它的地址段是干净的。
IP 调查结果能保持有效多久?
以天计,而不是以月计。同一个 AhrefsBot 地址在 2026 年 10 月 8 日的评分为 23,判定为 allow;到 10 月 19 日评分为 59,判定为 step_up。在依据旧判定采取行动之前,请重新运行查询,并为每个判定保存日期。
GeoIPHub API 背后的团队
由 GeoIPHub 团队撰写,即构建 GeoIPHub IP 情报 API 及其扫描器的团队。草稿在 AI 辅助下完成,并由团队编辑;除非标注为示例,API 示例均为针对线上 API 的真实查询。


