文章内容

2024/9/20 1:18:56,作 者: 黄兵

Python 判断 IP 是否输入某个 ASN

判断某个 IP 是否属于某个自治系统(AS,Autonomous System),通常需要借助第三方 API 或数据库来查询 AS 信息。以下是使用 Python 进行这项任务的步骤:

  1. 获取 IP 的 AS 信息:通常借助公共资源如 whois 或专门的 IP-AS 数据库(如 MaxMind、IPinfo、RIPE 等),来查询 IP 所属的 AS 信息。
  2. 比较结果:将返回的 AS 信息与目标 AS 进行比较,判断 IP 是否属于该 AS。

下面是一个使用 whois 库来查询 IP 的自治系统信息的示例:

import ipwhois

def is_ip_in_asn(ip, target_asn):
    try:
        # 查询 IP 的 WHOIS 信息
        obj = ipwhois.IPWhois(ip)
        result = obj.lookup_rdap(depth=1)

        # 获取自治系统编号
        asn = result['asn']
        
        # 判断 IP 是否在指定的 ASN 中
        return asn == str(target_asn)
    except Exception as e:
        print(f"Error occurred: {e}")
        return False

# 示例用法
ip = "8.8.8.8"  # 你想查询的IP
target_asn = 15169  # 你想判断的AS号 (Google)
is_in_asn = is_ip_in_asn(ip, target_asn)

if is_in_asn:
    print(f"The IP {ip} is in AS{target_asn}.")
else:
    print(f"The IP {ip} is not in AS{target_asn}.")

关键步骤:

  • ipwhois 库用于查询 IP 的 AS 信息。
  • lookup_rdap 方法返回 IP 所属的自治系统号(ASN)。
  • 将返回的 ASN 与目标 AS 进行比较,判断是否匹配。

依赖安装:

你可能需要安装 ipwhois 库,可以通过以下命令安装:

pip install ipwhois
分享到:

发表评论

评论列表