Skip to content

📡 ASN 字段

自治系统、组织、主机名。

🎨 一图抵千言

网络归属字段层层细化:从 ASN 编号到组织名,再到反向解析出的主机名,逐步从「数字」走向「可读实体」。

字段

ASN

go
ASN string `json:"asn"`

自治系统号。例:AS15169

Org

go
Org string `json:"org"`

组织名。例:Google LLC

Hostname

go
Hostname string `json:"hostname,omitempty"`

反向解析的主机名(可选 add-on,beta)。

💡 Hostname 是可选 add-on

hostname 在 ipapi.co 是付费 add-on,普通账户可能为空。tag 带 omitempty

📋 字段速查表

字段JSON key类型是否可选示例
ASNasnstringAS15169
OrgorgstringGoogle LLC
Hostnamehostname,omitemptystring是(add-on)dns.google

⚠️ Hostname 可能为空

由于 omitempty,未启用 add-on 时 Hostname 为空字符串。判断前先判空:if info.Hostname != ""。不要假设它一定有值,否则风控规则可能误判。

示例

go
info, _ := client.GetIPInfo(ctx, "8.8.8.8", "json")
fmt.Printf("ASN: %s 组织: %s 主机: %s\n",
	info.ASN, info.Org, info.Hostname)
// ASN: AS15169 组织: Google LLC 主机: dns.google

单字段:

go
asn, _ := client.GetField(ctx, "8.8.8.8", "asn")
org, _ := client.GetField(ctx, "8.8.8.8", "org")

用途

  • 🏢 IP 归属机构识别
  • 🛡 风控(识别云厂商/IDC 流量)
  • 🌐 网络拓扑分析
  • 🔍 反向 DNS(hostname)
🧩 进阶:识别云厂商/IDC 流量做风控
go
info, _ := client.GetIPInfo(ctx, ip, "json")
org := strings.ToLower(info.Org)
switch {
case strings.Contains(org, "google"),
     strings.Contains(org, "amazon"),
     strings.Contains(org, "microsoft"),
     strings.Contains(org, "digitalocean"):
    // 来自云厂商,可能是爬虫/机器人
    flagAsDatacenterTraffic(ip)
case info.Hostname != "" && strings.HasSuffix(info.Hostname, ".google"):
    flagAsDatacenterTraffic(ip)
default:
    // 可能是住宅 IP,放行
}

也可维护一份 ASN 黑名单(如已知代理出口 AS),直接 info.ASN 命中即拦截。

🔒 ASN 比 Org 更稳定

组织可能因收购、改名而变化(如 Google LLCGoogle LLC 历史上多次调整),但 ASN 编号相对稳定。做长期风控策略时优先用 ASN 做 key,Org 仅作展示。

下一步

基于 MIT 许可证发布