如何用Python的ipwhois遍历IP列表,提取动态键下的name字段?
解决动态提取RDAP结果中IP所有者name的问题
核心思路
既然objects下的键是动态不固定的,直接遍历objects字典的所有值即可,无需关注具体键名。每个值内的contact.name就是目标所有者名称。
单个IP提取代码
from ipwhois import IPWhois def get_ip_owner(ip): try: obj = IPWhois(ip) results = obj.lookup_rdap() objects_dict = results.get('objects', {}) # 遍历objects下所有值,提取第一个有效所有者名称(通常仅存在一个主条目) for obj_value in objects_dict.values(): contact_dict = obj_value.get('contact', {}) name = contact_dict.get('name') if name: return name return "未找到所有者信息" except Exception as e: return f"查询失败: {str(e)}" # 测试示例 print(get_ip_owner('74.125.225.229')) # 输出Google LLC print(get_ip_owner('20.190.159.200')) # 输出Microsoft Corporation
批量遍历IP列表
处理大量IP时,直接循环调用上述函数即可:
ip_list = ['74.125.225.229', '20.190.159.200', '8.8.8.8', '1.1.1.1'] for ip in ip_list: owner = get_ip_owner(ip) print(f"IP {ip} 的所有者: {owner}")
补充说明
- 部分IP的
objects下可能存在多个条目,代码默认返回第一个有效name;若需收集所有关联名称,可改为列表收集后返回。 - 异常处理用于避免单个IP查询失败(如无效IP、网络问题)导致批量任务中断。
内容的提问来源于stack exchange,提问作者jreacher403
相关产品推荐
相关产品推荐

