实操教程2026年9月29日阅读约 8 分钟

IP 纯净度检测:自己动手查一个代理 IP 的质量

IP 纯净度检测怎么做:查归属网络、查 Spamhaus 黑名单(附 dig 和 Python 脚本)、比对地理位置数据库、看懂风险评分,以及 IP 不干净时该怎么办。

IP 纯净度检测,查的是四件事:这个地址归哪个网络(ASN)、有没有上公开黑名单、各家地理位置数据库对它的国家是否说法一致、风险评分网站为什么给它打这个分。四项都能用免费工具自己查,不必只信服务商的一句“纯净 IP”。下面一步步讲,附可以直接运行的代码。

“纯净”到底指什么

“纯净 IP”是个营销词,没有统一定义。落到能查的事实上,一个代理 IP 质量好,大致意味着:

  • 标签对得上:卖给你的是住宅、ISP 还是数据中心,国家是哪里,查出来和标签一致;
  • 没有滥用记录:不在记录垃圾邮件、被入侵主机这类行为的公开黑名单上;
  • 位置说法一致:主流地理位置数据库对它在哪个国家大体没有分歧;
  • 风险评分可以解释:分数偏高时,你能说出是哪几项信号造成的。

有一点要先接受:代理 IP 本来就是代理。很多数据库会把它标成“proxy”,这不是脏,只是如实。要找的是标签错误和滥用记录,而不是一个在任何数据库里都查不出痕迹的地址。

第一步:找出口 IP,查归属网络

先通过代理问一下回显服务,看目标网站看到的是哪个地址。HOST、PORT、USERNAME 和 PASSWORD 是占位符,真实的值在控制台里每个服务的页面上。

curl -s -x http://USERNAME:PASSWORD@HOST:PORT https://api.ipify.org

拿到地址后,查它归哪个自治系统(ASN)、持有者是谁。这一步在自己查 IP 类型里有完整的脚本和判读方法,这里不重复。归属网络是后面所有判断的基础:一个标成住宅、却属于主机商的地址,后面几项查得再干净也没有意义。

第二步:查公开黑名单(Spamhaus ZEN)

Spamhaus 是最常被邮件服务器和网站引用的黑名单之一。它的 ZEN 列表把几个子列表合在一起,通过 DNS 查询:把 IP 的四段倒过来,接上 zen.spamhaus.org,查它的 A 记录。

  • 有返回、而且是 127.0.0.x:这个地址在某个子列表里;
  • 查无此名(NXDOMAIN):不在列表里。

用 dig 一行就能查。这里用 203.0.113.10 做例子,它属于专门留给文档使用的 TEST-NET 地址段,换成你自己的出口 IP 即可:

IP=203.0.113.10
dig +short "$(echo "$IP" | awk -F. '{print $4"."$3"."$2"."$1}').zen.spamhaus.org"

要批量查、或者想看到每个返回码的含义,用下面这个只依赖 Python 标准库的脚本:

import ipaddress
import socket
import sys

ZEN = {
    "127.0.0.2": "SBL: known spam source or spam operation",
    "127.0.0.3": "SBL CSS: low-reputation sending",
    "127.0.0.4": "XBL: exploited or infected host",
    "127.0.0.10": "PBL, ISP maintained: end-user range, not a mail server",
    "127.0.0.11": "PBL, Spamhaus maintained: end-user range, not a mail server",
    "127.255.255.252": "ERROR: typo in the list name",
    "127.255.255.254": "ERROR: queried through a public or open resolver",
    "127.255.255.255": "ERROR: too many queries",
}


def zen_name(ip):
    octets = str(ipaddress.IPv4Address(ip)).split(".")
    return ".".join(reversed(octets)) + ".zen.spamhaus.org"


def zen_lookup(ip):
    try:
        _, _, answers = socket.gethostbyname_ex(zen_name(ip))
    except socket.gaierror:
        return []
    return sorted(answers)


for ip in sys.argv[1:] or ["203.0.113.10"]:
    print(ip, "->", zen_name(ip))
    answers = zen_lookup(ip)
    if not answers:
        print("  no answer: not listed, or the resolver gave nothing back")
    for code in answers:
        print("  " + code, ZEN.get(code, "listed: look it up on spamhaus.org"))

保存为 zen_check.py,运行 python3 zen_check.py 查示例地址,或者 python3 zen_check.py 你的出口IP 查自己的。查询从你自己的网络发出就行,不需要走代理。

先确认你的 DNS 能查 Spamhaus

这一步最容易踩坑。Spamhaus 的公共镜像只供低流量、非商业的免费使用,而且不接受经由公共或开放 DNS 解析器转来的查询。它的原话是:通过公共解析器查询时,“我们无法判断你的查询量……因此不允许通过这种方式查询我们的 DNSBL”。

实际表现有两种:

  • 返回 127.255.255.254:这是错误码,意思是“查询经由公共或开放解析器”,和这个 IP 的名声无关;
  • 什么都不返回:看上去就像“没上榜”,这是最危险的情况,因为它会让一个脏 IP 显得干净。

所以先做一次自检。DNS 黑名单按惯例(RFC 5782)都为 127.0.0.2 留了一条测试记录:

python3 zen_check.py 127.0.0.2

能看到 127.0.0.2 等返回码,说明你的解析器拿得到真实答案。什么都没有、或者只有 127.255.255.254,就换用你的宽带运营商提供的 DNS,或者自己跑一个解析器。量大或者商业用途,Spamhaus 另有需要注册的数据查询服务(DQS),适用条件以它官网为准。只查一两个地址的话,Spamhaus 网站上的 IP 与域名信誉查询工具更省事,它本来就是为人工查询准备的。

PBL 不等于脏

上面的示例地址会返回 127.0.0.11,也就是 PBL。PBL 列的是“终端用户地址段”:家庭宽带、办公网络这类本来就不该直接发邮件的地址。运营商会主动把自己的家庭地址段登记进去。

所以,住宅或 ISP 代理出现在 PBL 里,往往恰好说明它是真正的宽带地址,而不是滥用记录。真正要在意的是 SBL、CSS 和 XBL:这些列的是垃圾邮件来源、低信誉发信和被入侵的主机。

第三步:比对地理位置数据库

把同一个 IP 丢进几家地理位置数据库(比如 ip-api、ipinfo、MaxMind 的在线演示),国家和城市常常对不上。原因很平常:

  • 各家的数据来源不同,有的以地址注册信息为主,有的加入了网络测量和用户上报;
  • 地址段会转手,新持有者把它用到另一个国家,数据库要过一段时间才跟上;
  • 城市级数据本来就粗,免费库尤其如此。

判读的办法是:看国家,别太看城市。大多数数据库都说是你下单的国家,就没问题;多数说的是另一个国家,才值得拿去问服务商。你无法知道目标网站用的是哪一家数据库,所以“多数一致”比“某一家说对了”更有参考价值。

风险评分网站是什么,为什么每家分数都不一样?

有一类网站会给 IP 打一个“欺诈分”或“风险分”。它们把多种信号加权合成一个数字:是否识别为代理或 VPN、是否属于主机商、是否在黑名单上、自己的蜜罐或客户网络最近有没有看到它作恶,以及这些记录有多新。

分数不一样,是因为每家的数据和权重都不同,而且都不公开。同一个地址,一家给高分、一家给低分,并不矛盾。几条使用建议:

  • 看原因,不只看分数。 好的评分页会列出触发了哪些信号。“识别为代理”对代理 IP 来说是预期之内;“近期有滥用报告”才需要警惕。
  • 用来横向比较。 同一家网站上,比较几个候选地址谁高谁低,比盯着某个绝对值更有用。
  • 别把低分当成目标。 为了让代理 IP 在评分网站上“看起来不像代理”而折腾,偏离了你真正需要的东西:一个标签正确、没有滥用记录的地址。

IP 纯净度检测清单:四项一览

检查项 用什么查 正常 需要追问
归属网络 RIPEstat、whois 和标签一致 标住宅,却属于主机商
Spamhaus ZEN dig 或上面的脚本 无返回,或只在 PBL SBL、CSS 或 XBL
地理位置 几家数据库对比 多数说是下单的国家 多数说是别的国家
风险评分 评分网站 高分原因只是“代理” 高分原因是近期滥用

租到的 IP 不干净,怎么办?

先把证据留好:IP、查询时间、每一项查询的原始输出。然后分两种情况。

标签错了。 国家不对,或者网络类型不对(比如住宅地址查出来属于主机商)。在我们这儿,这由实话实说页上的承诺兜底:“报告一个标错的 IP,我们把你花在它上面的流量记回你的账户,把这个 IP 从池子里撤下来,撤完了在 Discord 告诉你。”

标签没错,但上了黑名单。 地址确实是它标的那种、那个国家,只是在 SBL 或 XBL 里。把查询输出带到 Discord,我们会看,也会说明能做什么。这种情况我们没有写下固定的承诺,所以这里也不替它许诺。

两个实用的补充:

  • 按 IP 租的线路,拿到就查。 ISP 和数据中心 IP 整个租期都是你的,第一天就把上面的检查跑一遍,有问题趁早说。
  • 轮换线路,看比例。 住宅按请求轮换,一个出口上了黑名单只影响一条请求,下一条就换了地址。多取几个样本,看上榜的比例,比盯着某一个地址更能说明池子的质量。

快速问答

IP 纯净度检测免费吗? 本文用到的查询都不收费。Spamhaus 的公共镜像限于低流量、非商业使用,你的用法算不算,以它的条款为准;只查几个地址,用它网站上的查询工具最稳妥。

用 8.8.8.8 这类公共 DNS 查 Spamhaus 可以吗? 不行。Spamhaus 不接受经由公共解析器的查询,你会拿到错误码,或者什么都拿不到。先用 127.0.0.2 自检。

住宅 IP 在 PBL 里,是不是脏了? 不是。PBL 列的是本来就不该直接发邮件的终端用户地址段,家庭宽带出现在里面很正常。要在意的是 SBL、CSS 和 XBL。

为什么同一个 IP 在不同网站上风险分差很多? 每家的数据来源和权重都不同,也不公开。看它给出的原因,比看分数有用。

下一步

充一小笔,在你需要的线路上拿几个地址,把本文的检查跑一遍,结果存下来。下大单之前怎么先测一家服务商里有配套的测试方法,价格见价格页。查出不对劲的地方,把输出贴到 Discord,我们公开看。

还有后续问题?

去 Discord 问。答案还能帮到下一个读到这个帖子的人。

加入 Discorddiscord.gg/proxypanda
$5 起步去 Discord 问