You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Bash中用兼容POSIX的方式无API密钥查询IP对应的ASN?

无API密钥的IP到ASN查询方案(POSIX兼容)

针对VPS初始化场景,以下是无需API密钥、兼容POSIX Shell的ASN查询方法,覆盖IPv4和IPv6:

方法1:使用官方RDAP服务(推荐,无第三方依赖风险)

RDAP是WHOIS的替代标准,官方服务无需密钥。多数地区的RDAP服务会在IP查询结果中关联ASN信息,可通过POSIX工具提取:

IPv4查询命令

# 查询IPv4并提取ASN
IP="8.8.8.8"
curl -s "https://rdap.arin.net/registry/ip/$IP" | grep -o '"handle": "AS[0-9]*"' | sed 's/"handle": "AS\([0-9]*\)"/\1/'

IPv6查询命令

# 查询IPv6并提取ASN
IP="2001:4860:4860::8888"
curl -s "https://rdap.arin.net/registry/ip/$IP" | grep -o '"handle": "AS[0-9]*"' | sed 's/"handle": "AS\([0-9]*\)"/\1/'

说明:如果ARIN的RDAP未返回目标IP的ASN(比如IP归属非北美地区),可替换为对应地区的RDAP服务:

  • 欧洲:https://rdap.db.ripe.net/ip/$IP
  • 亚太:https://rdap.apnic.net/ip/$IP

若要自动适配地区,可先查询IP的注册机构,再跳转对应RDAP服务:

IP="8.8.8.8"
REGISTRY=$(curl -s "https://rdap.arin.net/registry/ip/$IP" | grep -o '"registrant": {"handle": "[A-Z]*"' | sed 's/"registrant": {"handle": "\([A-Z]*\)"/\1/')
case $REGISTRY in
    RIPE) RDAP_URL="https://rdap.db.ripe.net/ip/$IP" ;;
    APNIC) RDAP_URL="https://rdap.apnic.net/ip/$IP" ;;
    *) RDAP_URL="https://rdap.arin.net/registry/ip/$IP" ;;
esac
curl -s "$RDAP_URL" | grep -o '"handle": "AS[0-9]*"' | sed 's/"handle": "AS\([0-9]*\)"/\1/'

方法2:使用免费无密钥的第三方API(适合快速验证)

部分第三方服务提供无API密钥的IP查询接口,请求量限制足够覆盖VPS初始化场景:

通用IPv4/IPv6查询命令

IP="8.8.8.8"
curl -s "http://ip-api.com/json/$IP?fields=as" | grep -o '"as":"AS[0-9]*"' | sed 's/"as":"AS\([0-9]*\)"/\1/'

注意:该服务有请求频率限制(每分钟45次),VPS初始化单次调用完全满足需求。

方法3:纯POSIX工具提取RDAP中的ASN(无需jq)

如果系统没有jq,可通过grep和sed组合提取RDAP返回的ASN,避免依赖额外工具:

IP="8.8.8.8"
curl -s "https://rdap.arin.net/registry/ip/$IP" | awk '/"handle": "AS[0-9]+"/ {sub(/"handle": "AS/, "", $0); sub(/"/, "", $0); print $0}'

内容的提问来源于stack exchange,提问作者Pete Cooper

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 12:12:17