news 2026/8/22 15:23:54

ipwhois返回结果字段速查:一文读懂RDAP与Legacy Whois的完整数据结构

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
ipwhois返回结果字段速查:一文读懂RDAP与Legacy Whois的完整数据结构

ipwhois返回结果字段速查:一文读懂RDAP与Legacy Whois的完整数据结构

【免费下载链接】ipwhoisRetrieve and parse whois data for IPv4 and IPv6 addresses项目地址: https://gitcode.com/gh_mirrors/ip/ipwhois

ipwhois 是一款专注于IPv4 与 IPv6 whois 数据查询与解析的 Python 库,它会把各注册局(RIR)返回的原始报文,统一解析成结构清晰的标准字典。拿到一个results字典却不知如何下手?本文提供一份ipwhois 返回结果字段速查表,帮你一文读懂 RDAP 与 Legacy Whois 两种查询方式下的完整数据结构。📋

两种查询方法:RDAP 与 Legacy Whois 怎么选?

ipwhois 通过 ipwhois/ipwhois.py 中的IPWhois类提供两种主要查询方法:

方法说明返回格式
lookup_rdap()✅ 官方推荐的 RDAP(基于 HTTP 的 whois 协议)查询结构化字典,含网络、组织、联系人实体
lookup_whois()传统 whois 协议查询(lookup()自 v0.12.0 起已废弃)网络列表 + 可选 referral 转介信息

RDAP 的优势在于数据结构更好:可以解析出用户、组织、分组的联系人信息,并提供更详细的网络数据。Legacy Whois 则在 RDAP 不可用时作为兜底方案。

公共顶层字段:ASN 系列速查表

两种查询方式的返回字典都包含同一组asn字段*,由 ipwhois/asn.py 中的IPASN模块生成(通过 DNS、whois、HTTP 三种方式依次尝试):

字段类型含义
querystr你查询的 IP 地址
asnstr自治系统编号(Autonomous System Number)
asn_cidrstr分配给该 ASN 的路由网段
asn_country_codestrASN 分配国家码(ISO 3166-1 格式)
asn_datestrASN 分配日期(ISO 8601 格式)
asn_registrystr分配该 ASN 的注册局(arin / ripe / apnic / lacnic / afrinic)
asn_descriptionstrASN 描述,如"GOOGLE, US"

💡注意asn_country_code来自 Cymru 数据,反映的是 ASN 的注册地,不等于 IP 实际地理位置,请勿当作 GeoIP 使用。

RDAP 返回字段完整拆解

RDAP 结果字典(lookup_rdap()输出)的顶层结构如下:

字段类型含义
query/asn*str同上节公共字段
networkdict该 IP 所属的注册网络(可能是父或子网络),见下表
entitieslist网络引用的对象(组织/联系人)名称列表
objectsdict各实体对象的详细信息,键为实体名
nirdict日韩国家注册局补充信息(见下文)
rawdict原始 RDAP JSON(需设置inc_raw=True

🌐 network 网络字典

字段类型含义
cidrstrIP 所属的路由网段,如74.125.0.0/16
countrystr注册国家码(ISO 3166-1)
start_address/end_addressstr网段的起止 IP 地址
eventslist事件列表(注册、最后变更等),每项含actiontimestampactor
handle/parent_handlestr该注册对象的唯一标识 / 父网络标识
ip_versionstr协议版本(v4v6
namestr网络注册名称,如GOOGLE
notices/remarkslist通知与备注列表,每项含titledescriptionlinks
linkslist注册局提供的 HTTP/HTTPS 链接
statuslist注册对象状态,如["active"]
typestrRIR 分类,如DIRECT ALLOCATION

🏢 objects 实体字典(含联系人)

objects中每个键(如GOGLABUSE5250-ARIN)对应一个实体对象:

字段类型含义
handlestr实体唯一标识
roleslist角色,如registrant(注册人)、abuse(滥用投诉)、technical/administrative
contactdict联系人信息,见下表
entitieslist该实体引用的下级实体名称
events/notices/remarks/links/statuslist含义同 network 字典

其中contact 联系人字典是 RDAP 的精华所在,由 ipwhois/rdap.py 中的 vCard 解析器生成:

字段类型含义
namestr联系人名称,如Google LLC
kindstr类型:individual(个人)/group(分组)/org(组织)
addresslist邮政地址列表(type + value)
emaillist邮箱列表,如network-abuse@google.com
phonelist电话列表,type 可为workvoicefax
title/rolestr职位 / 角色

🔍depth参数控制实体解析深度:depth=0只查网络层引用的实体;每加深一层,都会向注册局发起更多查询,耗时也随之增加。批量查询时建议配合调低rate_limit_timeout、调小retry_count来规避注册局限速。

Legacy Whois 返回字段完整拆解

lookup_whois()的结果字典(解析逻辑见 ipwhois/whois.py)与 RDAP 的差异主要在网络信息部分:

顶层字段类型含义
query/asn*str公共字段(同上)
netslist网络字典列表(一个 IP 可能有多个父/子网络)
referraldict转介 whois 信息(需get_referral=True
raw/raw_referralstr原始 whois 文本(需inc_raw=True
nirdict日韩注册局补充信息(同 RDAP)

nets 网络字典的字段比 RDAP 更"扁平化":

字段类型含义
cidr/rangestr路由网段 / IP 区间,如74.125.0.0 - 74.125.255.255
name/handlestr网络名称 / 唯一标识
descriptionstr网络描述,如Google Inc.
country/state/citystr国家码 / 州省 / 城市
address/postal_codestr邮寄地址 / 邮编
emailslist邮箱地址列表
created/updatedstr注册日期 / 更新日期(ISO 8601)

💡 两个实用细节:当 whois 报文列出多个同名连续字段(如多个Description:)时,解析器会用\n拼接其值;一个网络含多个 CIDR 时会用", "分隔。

NIR 字段:日本与韩国的"加餐"数据 🇯🇵🇰🇷

对于 JPNIC(日本)和 KRNIC(韩国)管理的 IP,区域注册局会屏蔽部分详细信息。ipwhois 内置 NIR 支持(ipwhois/nir.py),默认开启(inc_nir=True),结果挂在顶层nir键下:

  • nir.nets:网络列表,字段与 Legacy Whois 的 nets 类似,额外提供nameservers(域名服务器列表)
  • nir.nets[].contacts:含admin/tech两个联系人,各有nameorganizationemailphonefaxtitle等字段
  • nir.raw:原始 NIR whois 文本(需inc_raw=True

例如查询大阪大学的 IP 时,nets只能看到 JPNIC 的笼统信息,而nir里能拿到具体的行政/技术联系人。

上手示例:3 行代码看懂字段

from ipwhois import IPWhois from pprint import pprint obj = IPWhois('74.125.225.229') pprint(obj.lookup_rdap(depth=1)) # 推荐:RDAP 完整结构 pprint(obj.lookup_whois()) # 备选:Legacy Whois 结构

完整示例输出可参考测试数据文件 ipwhois/tests/rdap.json 和 ipwhois/tests/whois.json,它们分别记录了同一 IP 的 RDAP 与 Whois 原始响应。

相关文档与源码文件一览

资源路径
主入口(IPWhois类)ipwhois/ipwhois.py
RDAP 解析实现ipwhois/rdap.py
Legacy Whois 解析实现ipwhois/whois.py
ASN 查询实现ipwhois/asn.py
NIR 国家注册局解析ipwhois/nir.py
RDAP 字段官方文档RDAP.rst
Legacy Whois 字段官方文档WHOIS.rst
NIR 字段官方文档NIR.rst
ASN 查询文档ASN.rst
CLI 命令行工具(可读化输出字段)ipwhois/scripts/ipwhois_cli.py

常见疑问速答 🧭

Q1:为什么某些字段是None注册局未提供该数据(如 RDAP 中很多country为空),不代表查询失败。

Q2:raw字段什么时候有值?默认不返回,需要显式传入inc_raw=True。RDAP 返回的是 JSON 字典,Legacy Whois 返回的是原始文本。

Q3:查询慢/被限速怎么办?批量查询时把rate_limit_timeout调小,或设置bootstrap=True走 ARIN 引导解析(代价是不返回 asn* 字段);也可以试试实验性批量接口(见 EXPERIMENTAL.rst)。

Q4:如何把字段名翻译成可读文案?使用 ipwhois/hr.py 中的人读字段映射,或直接用附带颜色输出的 CLI 工具查看结果。

掌握本文的字段速查表后,你就能快速定位 RDAP 与 Legacy Whois 返回字典中的任何一个字段,把 whois 数据真正用起来!🚀

【免费下载链接】ipwhoisRetrieve and parse whois data for IPv4 and IPv6 addresses项目地址: https://gitcode.com/gh_mirrors/ip/ipwhois

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/22 15:21:21

vaststars科技树实现解析:techtree与laboratory研究队列系统全攻略

vaststars科技树实现解析:techtree与laboratory研究队列系统全攻略 【免费下载链接】vaststars A game demo for Ant engine 项目地址: https://gitcode.com/gh_mirrors/va/vaststars vaststars 是一款基于 Ant 引擎的火星工厂模拟游戏,其科技树系…

作者头像 李华