原理讲解2026年9月29日阅读约 8 分钟

什么是ASN?买代理之前要懂的自治系统号

什么是ASN?它是标识 IP 背后那张网络的编号。本文讲 ASN 由谁分配、BGP 怎么把 IP 和 ASN 对上,以及三种免费的自治系统号查询方法。

ASN(自治系统号,Autonomous System Number)是互联网上用来标识一张网络的编号:一家家庭宽带运营商、一家主机商、一所大学、一个大型平台,各有各的号。每个公网 IP 地址都由其中某一张网络对外宣告,所以查一下 ASN,就能知道一个地址由谁负责、属于哪一类网络。

对买代理的人来说,这件事比看上去重要。代理上的“住宅”“ISP”“数据中心”标签,基本上就是根据宣告这个 IP 的网络推出来的。弄懂 ASN,你就能自己核对标签。本文讲这个编号是什么、从哪里来,以及三种免费的查询方法。

什么是自治系统?

自治系统(AS)是由同一个运营方管理、采用同一套路由策略的一组 IP 地址段。说白了,就是互联网其他部分眼中某个组织的那张网络。Cloudflare 的网络是一个 AS,Google 的是另一个,你家宽带运营商的是一个,托管你常去网站的云服务商也是一个。

互联网就是几万张这样的网络连在一起。每张网络自己决定流量怎么进出,也会告诉相邻的网络:哪些地址的流量可以交给它。

有些组织不止一个 AS:按地区各设一个,或者每收购一家公司就多继承一个。所以“一家公司一个号”可以当作入门的理解,但不是规则。

什么是ASN,由谁分配?

自治系统号就是在路由中标识一个 AS 的编号。Cloudflare 的是 13335,通常写作 AS13335;Google 的主要编号是 AS15169。

编号是一级一级分下去的:

  1. IANA 管着全球的编号池,把一段段编号交给五个地区互联网注册管理机构(RIR)。
  2. RIR 各管一片地区:AFRINIC(非洲)、APNIC(亚太)、ARIN(北美)、LACNIC(拉美和加勒比)、RIPE NCC(欧洲、中东和中亚部分地区)。
  3. 需要自己路由策略的组织,通常是因为它同时接入了不止一张别的网络,向所在地区的 RIR(或代表 RIR 的本地注册机构)申请,拿到一个 ASN。

注册记录里保存着持有者的名称,查询工具显示的“AS 名称”或“holder”就是它。ASN 最初是 16 位数字,总共不到 65,536 个;2007 年起扩展为 32 位(RFC 4893),可用数量超过四十亿。另有几段编号留给私有网络和文档示例使用,不会出现在公网路由里。

BGP 怎么把 IP 地址和 ASN 对上

网络之间用 BGP(边界网关协议)交换路由。每张网络对外宣告它能送达的地址段,也就是前缀,比如 1.1.1.0/24,覆盖 1.1.1.0 到 1.1.1.255。宣告在网络之间一路传播,每经过一张网络,就把自己的 ASN 加进一个叫 AS 路径的列表。路径最起头的那张网络,也就是最先宣告这段地址的网络,叫作源 AS(origin AS)。

所以“IP 查 ASN”的意思是:找到包含这个地址、最具体的那条已宣告前缀,读出它的源 AS。查询服务用的是路由采集器收集的 BGP 数据,这些采集器同时监听世界各地大量网络的宣告。

每个地址背后其实有两份记录,分开看会清楚很多:

  • 注册记录。 RIR 的 whois 数据库写着这段地址分配给了哪个组织。
  • 路由记录。 BGP 显示今天是哪张网络在宣告这段地址。

大多数时候两者一致,但也有不一致的:地址段可能租给了另一家公司,上游运营商可能替客户宣告地址,地址段也可能已经转手、而各个数据库还没更新。地址持有者可以发布 RPKI 记录,声明哪个 ASN 有权宣告自己的地址,这让路由这一侧更可信,但并不是人人都发布。两份记录对不上时,网站实际看到的是路由那一份。

买代理的人为什么要关心 ASN

标签来自网络

三种代理标签对应的是源网络:

  • 数据中心:宣告它的网络是主机商或云服务商。
  • ISP:宣告它的网络是家庭宽带运营商,而地址运行在服务器上。
  • 住宅:宣告它的网络是家庭宽带运营商,而地址属于某户家庭的连接。

术语表里的 ASN 词条用一句话讲了这层关系,IP 标注讲了其余部分。商业 IP 数据库也从同一个地方出发,再加上自己的标记。

网站也在看它

很多反爬系统给一个地址打分时,会参考它所属网络的类型。一条规则就能对某个主机商网络的所有地址限速或弹验证,所以数据中心 IP 往往成片被封,而家庭宽带网络的地址是一个一个判断的。如果昨天还能访问的目标今天拒绝你,爬虫为什么突然被封梳理了常见原因。

ASN 说明不了什么

ASN 告诉你的是网络。同一家家庭宽带运营商内部,它分不出家庭连接和服务器,而这正是住宅代理和 ISP 代理的区别。它也看不到租赁关系:主机商可能在宣告一段登记在电信公司名下的地址,反过来也有。把 ASN 当作最有分量的单项信号,多查几个地址,别把一次查询当成定论。

怎么查 ASN

下面三种方法都免费,也都不需要走代理。从你自己的网络查出口 IP 就行。至于怎么拿到出口 IP:通过代理向回显服务发一个请求,做法见怎么自己查 IP 类型。

在终端里用 Team Cymru 的 whois

whois -h whois.cymru.com " -v 1.1.1.1"

引号里开头的空格是查询的一部分。返回结果是每个地址一行表格:

AS      | IP               | BGP Prefix          | CC | Registry | Allocated  | AS Name
13335   | 1.1.1.1          | 1.1.1.0/24          | AU | apnic    | 2011-08-11 | CLOUDFLARENET - Cloudflare, Inc., US

1.1.1.1 是 Cloudflare 的公共 DNS 解析服务。这一行给出了源 ASN、所在的已宣告前缀、注册机构和 AS 名称。CC 一栏是地址段登记的地区,不是地址实际使用的地方:1.1.1.1 显示 AU,因为这段地址由 APNIC 分配,但 Cloudflare 在全世界用它提供服务。同样的查询对 IPv6 地址也有效。

如果系统里没有 whois,通常装一个包就有了(Debian 和 Ubuntu 上是 sudo apt install whois)。没有任何网络宣告的地址,每一栏都会返回 NA,比如文档专用地址段里的 203.0.113.10。出口 IP 查出来是 NA,多半是复制错了。

43 端口被封时,用 DNS 查

有些网络会封掉 whois 用的端口。Team Cymru 也可以通过 DNS 回答同一个问题:把 IP 的四段倒过来,后面接上 origin.asn.cymru.com,查它的 TXT 记录。再查一次,就能把 ASN 换成名称。

IP=1.1.1.1
dig +short TXT "$(echo "$IP" | awk -F. '{print $4"."$3"."$2"."$1}').origin.asn.cymru.com"
dig +short TXT AS13335.asn.cymru.com
"13335 | 1.1.1.0/24 | AU | apnic | 2011-08-11"
"13335 | US | arin | 2010-07-14 | CLOUDFLARENET - Cloudflare, Inc., US"

用 RIPEstat,浏览器或脚本都行

RIPEstat 由 RIPE NCC 运营,能查全世界的地址,不管是哪家注册机构分配的。在浏览器里打开下面的地址,或者在代码里调用:

curl -s "https://stat.ripe.net/data/prefix-overview/data.json?resource=1.1.1.1"

返回的是 JSON。只留有用的部分:

{
  "status": "ok",
  "data": {
    "announced": true,
    "asns": [{ "asn": 13335, "holder": "CLOUDFLARENET - Cloudflare, Inc." }],
    "resource": "1.1.1.0/24",
    "block": { "resource": "1.0.0.0/8", "desc": "APNIC (Status: ALLOCATED)" }
  }
}

announced 表示有没有网络在路由这个地址,asns 给出源 AS,resource 是地址所在的前缀。没被宣告的地址,announced 是 false,asns 为空。

一次查二十个出口

一个地址说明不了一个池子,二十个就能说明很多。对轮换型产品,比如设为“随机 IP”的住宅线路,先收集一批出口:

for i in $(seq 1 20); do
  curl -s -x http://USERNAME:PASSWORD@HOST:PORT https://api.ipify.org; echo
done > exit-ips.txt

HOST、PORT、USERNAME 和 PASSWORD 是占位符,真实的值在控制台每个服务的页面上。然后用 Team Cymru 的批量模式一次查完,只用 Python 标准库:

import socket
import sys
from collections import Counter


def cymru_bulk(ips):
    query = "begin\nverbose\n" + "\n".join(ips) + "\nend\n"
    with socket.create_connection(("whois.cymru.com", 43), timeout=30) as conn:
        conn.sendall(query.encode())
        reply = b""
        while chunk := conn.recv(4096):
            reply += chunk
    rows = []
    for line in reply.decode().splitlines():
        parts = [part.strip() for part in line.split("|")]
        if len(parts) == 7 and parts[0] != "AS":
            rows.append(parts)
    return rows


ips = [line.strip() for line in open(sys.argv[1]) if line.strip()]
rows = cymru_bulk(ips)
for asn, ip, prefix, cc, registry, allocated, name in rows:
    print(f"{ip:<16} {prefix:<18} AS{asn:<8} {name}")

print()
networks = Counter(f"AS{row[0]}  {row[6]}" for row in rows)
for network, count in networks.most_common():
    print(f"{count:>4}  {network}")

保存为 asn_bulk.py,运行 python3 asn_bulk.py exit-ips.txt。第一段逐个列出地址,第二段按网络统计地址数量,最多的排在前面。

怎么看统计结果

  • 按住宅卖的:应该分散在多家家庭宽带运营商。二十个出口都来自一两家主机商,就是被重新贴了标签的池子。
  • 按 ISP 或数据中心卖的:只有少数几个网络是正常的,因为静态 IP 是成段来的。持有者名称要和标签对得上:ISP 应该是家庭宽带运营商,数据中心应该是主机商或云服务商。ISP 还是数据中心代理讲了你需要哪一种。
  • 持有者名称没见过:在 RIPEstat 或 PeeringDB 上搜这个 ASN。很多网络在 PeeringDB 上自己填了类型,比如“Cable/DSL/ISP”或“Content”。这是自报的信息,当作参考就好。

标签对不上时,把输出保存下来。在我们的线路上,标错的 IP 由实话实说页上的承诺兜底。ASN 也是怎么自己检查代理 IP 质量里四项检查的第一项,那篇还讲了黑名单和地理位置。

常见问题

ASN 和 IP 地址是一回事吗? 不是。IP 地址标识一个连接点;ASN 标识宣告一段地址的网络,一个 ASN 可以宣告几百万个地址。

一家公司可以有多个 ASN 吗? 可以。大运营商常常有好几个,按地区划分,或者来自收购的公司。名称相近的两个 ASN,通常属于同一个集团。

ASN 能告诉我 IP 在哪里吗? 不太可靠。查询结果里的国家,是地址段或网络登记的地方;地址实际在哪里使用,可能完全是另一回事。

代理服务商能伪造 ASN 吗? 路由数据伪造不了。哪张网络在宣告一个地址来自 BGP,服务商改不了自己不负责路由的地址。服务商能决定的是地址从哪里来,所以多取样本才重要。

下一步

从你在考虑的线路上取几个出口,用上面的方法查一遍,把输出保存下来。一笔小额充值就够了,价格见价格页。如果某个持有者名称让你摸不着头脑,把查询结果贴到 Discord,我们和你一起看。

还有后续问题?

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

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