返回

拒绝困顿,拥抱智能:打造快速批量IP归属地查询小工具

后端

快速批量查询IP归属地信息的实用工具

背景

安全工作中,分析海量IP地址是至关重要的。获取IP归属地信息是关键一步,但手动查询极其耗时费力。为了提高效率,我开发了一个小工具,可以快速批量查询IP归属地信息。

工具设计

功能需求:

  • 批量查询IP归属地信息
  • 自动去重,避免重复查询
  • 按国内外汇总,便于后续分析
  • 智能识别错误IP,防止影响分析
  • 操作简单,可快速处理海量数据

技术选型:

  • 编程语言:Python(简单、强大、可移植性强)
  • 第三方库:ipwhois(用于查询IP归属地信息)

工具实现

导入必要的Python库:

import ipwhois
import csv

加载IP地址列表:

ip_list = []
with open('ip_list.txt', 'r') as f:
    for line in f:
        ip_list.append(line.strip())

定义查询IP归属地信息的函数:

def get_ip_info(ip):
    try:
        ip_info = ipwhois.IPWhois(ip).lookup()
        return ip_info.country, ip_info.city
    except:
        return None, None

批量查询IP归属地信息:

ip_info_list = []
for ip in ip_list:
    country, city = get_ip_info(ip)
    ip_info_list.append([ip, country, city])

自动去重:

ip_info_list = list(set(ip_info_list))

按国内外汇总:

domestic_ip_list = [ip_info for ip_info in ip_info_list if ip_info[1] == '中国']
foreign_ip_list = [ip_info for ip_info in ip_info_list if ip_info[1] != '中国']

智能识别错误IP:

error_ip_list = [ip_info[0] for ip_info in ip_info_list if ip_info[1] is None or ip_info[2] is None]

输出结果:

with open('ip_info.csv', 'w', newline='') as f:
    csv_writer = csv.writer(f)
    csv_writer.writerow(['IP', '国家', '城市'])
    for ip_info in ip_info_list:
        csv_writer.writerow(ip_info)

with open('error_ip.txt', 'w') as f:
    for error_ip in error_ip_list:
        f.write(error_ip + '\n')

使用说明:

  1. 将需要查询的IP地址列表保存为txt文件,命名为“ip_list.txt”,并放在工具所在的目录。
  2. 运行脚本。
  3. 查询结果将保存在“ip_info.csv”文件中,错误的IP地址将保存在“error_ip.txt”文件中。

结语

这个小工具可以快速批量查询IP归属地信息,极大地提高了工作效率。它不仅操作简单,还具有自动去重、按国内外汇总和智能识别错误IP等功能,满足了安全工作中对IP归属地信息查询的需求。

常见问题解答

1. 这个工具支持查询哪些类型的IP地址?

支持查询IPv4和IPv6地址。

2. 我可以查询海量IP地址吗?

是的,该工具可以处理海量IP地址,具体数量取决于您的系统资源。

3. 如何处理错误的IP地址?

工具会识别错误的IP地址并将其输出到“error_ip.txt”文件中。您可以手动检查这些IP地址或将它们排除在外。

4. 查询结果准确吗?

工具使用ipwhois库查询IP归属地信息,该库的数据来源是各国的网络信息中心,因此查询结果一般是准确的。但由于网络变化或其他原因,可能会出现个别查询结果不准确的情况。

5. 这个工具是免费的吗?

是的,该工具是完全免费的,您可以根据需要使用和修改它。