如何通过Python获取包含组织联系人的完整whois域名信息
Python获取完整.fr域名WHOIS信息的解决方案
python-whois库的内置解析规则仅覆盖了通用顶级域名的常用字段,对.fr这类国别域名的专属返回字段没有做完整映射,所以会丢失所有者、组织、地址等信息,可通过以下两种方法获取完整数据:
方案1:调用系统原生whois命令自定义解析
这个方法可以获取到和公开查询站完全一致的原始WHOIS返回内容,不会丢失字段,你可以按需提取需要的信息。Colab运行环境为Debian系Linux,可直接安装使用系统whois工具:
!apt update && apt install -y whois import subprocess import re def get_full_whois(domain): # 调用系统whois命令获取原始返回 result = subprocess.run(['whois', domain], capture_output=True, text=True) raw_whois = result.stdout # 提取组织信息 org_match = re.search(r'organisation:\s*(.+)', raw_whois, re.IGNORECASE) organization = org_match.group(1).strip() if org_match else None # 可根据原始返回格式补充正则,提取地址、联系人等其他字段 return { "raw_whois": raw_whois, "organization": organization } print(get_full_whois('sommeilautop.fr'))
方案2:使用RDAP协议查询结构化域名信息
RDAP是WHOIS的替代协议,返回标准结构化JSON数据,不存在解析字段遗漏问题,.fr域名注册局已全面支持RDAP查询:
!pip install rdap from rdap import RdapClient rdap_client = RdapClient() resp = rdap_client.get_domain('sommeilautop.fr') # 注册人信息存放在entities字段的registrant角色下 registrant_info = [entity for entity in resp.data.get('entities', []) if 'registrant' in entity.get('roles', [])] print(registrant_info)
注意事项
- 无论是WHOIS还是RDAP查询,都有单IP频率限制,批量查询时建议控制请求间隔或搭配代理池使用,避免被注册局封禁。
- 部分域名开启了隐私保护,即使获取完整结果也不会显示真实所有者信息。
内容的提问来源于stack exchange,提问作者Arnaud
相关产品推荐
相关产品推荐

