返回
拒绝困顿,拥抱智能:打造快速批量IP归属地查询小工具
后端
2024-01-17 15:55:21
快速批量查询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')
使用说明:
- 将需要查询的IP地址列表保存为txt文件,命名为“ip_list.txt”,并放在工具所在的目录。
- 运行脚本。
- 查询结果将保存在“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. 这个工具是免费的吗?
是的,该工具是完全免费的,您可以根据需要使用和修改它。