【自制小工具】快速批量查询IP归属地(自动去重、按国内外汇总,并智能识别出错误IP)
作者:Eason_LYC
不放弃,不为别的,只想活成自己心中的样子~
领域:WEB安全、网络攻防
关注WEB安全、网络攻防。我的专栏文章知识点全面细致,逻辑清晰、结合实战,让你在学习路上事半功倍,少走弯路!
博客描述:
一个人的价值,在于他所拥有的,而不是他会的。所以可以不学无数,但不能一无所有!
个人社区:极乐世界-技术至上
我们追求技术至上,这是我们理想中的极乐世界~(关注我即可加入社区)
文章目录
- 背景
- 成果
- 如何使用
- 使用查询库文件
- 工具代码分析
- 不足之处
- 视频演示(各位看官如满意请对视频三连支持,您的三连是我创作下去的动力!)
背景
如何才能快速提升自己的编写脚本的能力呢,我之前文章中说过“为了学习而学习,永远学不好”。所以本文以我在实际工作中的真实场景为例,讲解自制小工具的思路。
每个人在生活中都会遇到各种问题,将问题抽象梳理出来,利用已掌握或临时自学拼凑的编程知识,来实现自己的目标,你将事半功倍,能力提升水到渠成。
在实际安全工作中,经常会从各种渠道获取大量IP,在进行分析前,首先需要对IP进行如下几项处理
- IP是否有重复
- IP是否有错误
- IP归属地是哪里
- IP有多少国内或者国外的
- …
上述几件事看上去很简单,网上也有现成的工具或网站可以使用。但是在实际工作中往往IP数量少则上万个,多则十几万,甚至是几十万。而且往往要半小时内出结果。面对这样的实际工作场景,人工或利用半成品工具明显不再合适。
为了在单位继续干下去,也不想累的的猝死,只能自己动手开发了一个小工具。下面就将这个小工具介绍给大家。
成果
是的,没有看错,先看成果,大家才有继续看下去的动力不是?
一共7万多个原始IP,下面几个数据一加等于去重后的IP数。详细功能数据如下:
- 软件自动去重
- 查询归属地
- 按国内国外分类汇总
- 对未查询到和错误IP进行汇总
- 结果自动保存为xlsx格式,方便直接汇报
- 总耗时20s,这是封装exe可执行文件后的运行时间,脚本直接运行,相同数据10s左右能完成。
最终excel成果:
以上就是软件的最终成果,不知各位看官是否满意,至少自制这个小工具后,让我工作轻松不少。
如何使用
工具设计之出就明确,一定要非常容易使用,力求0门槛傻瓜式使用。
打开工具,仅有三个文件,一个程序,一个使用说明,一个文件夹,作用见下图
使用的要求只有如下两条:
- 将你需要处理的大量IP,在txt格式文件中保存为一列即可,名字最好取
ip.txt
,然后放到db文件夹中就好了。如下图
2. 双击exe运行程序,结果会自动生成result.xlsx
。双击后运行界面如下
运行过程中的界面
结果生成界面
步骤已经设计的很简略了,方便易上手有没有
使用查询库文件
本文使用归属地查询的库,是qqwry。这个可以手动从github上下载最新的版本,替换即可。
其实有更好的库,但是qqwry真的很稳,综合考虑就用这个了。
其实软件自带的这个,已经满足日常使用了。
工具代码分析
本工具使用python编写,后续使用Pyinstaller工具,将脚本生成exe可执行程序。
- 原始脚本中,引用的库只有3个
from qqwry import QQwry # 归属地查询库,实现核心功能
import xlsxwriter # 生成、操作xlsx的库,将结果归类汇总,已特定字段输出到文档中,形成最终成果。
import time # 用于计时,统计执行一次任务运行的时间
- 根据上文的梳理,我们的需求很明确。所以实现方法和思路如下:
def input_txt():"""获取输入IP源文件1、文件路径,默认为.\db\ip.txt2、打开文件,以行形式读取内容(单个ip)raw_ip,另外统计原始行数 raw_num3、初步过滤,去掉每行ip首位多余的空格,去重,统计去重后行数 file_numreturn raw_ip, raw_num, file_num"""passdef check_input(raw_ip):"""对各种异常输入的处理,并将异常IP统计到error_ip列表中。目前能是别的异常情况如下【根据实际,持续更新】1、IP组成不是4个数2、任意一个数字出现4位数3、任意一位数出现异常(非数字,0-255之外,非整数...)过滤后再对所有结果进行去重,无问题IP放到ip列表中return ip, error_ip """passdef output_excel(list_home, list_foreign, list_unknown, list_error):"""xlsxwriter这个库使用方式比较固定,根据自己需要设置excel各字段内容和排版 """passdef ip_search():"""主程序,逻辑是调用上述各方法,获取正常ip后,再调用qqwry库,查询ip归属地查询。另外,cmd中输出内容和格式我也在这里进行的定制。"""passif __name__ == '__main__':start = time.time()ip_search()end = time.time()print('耗时: ', round(end - start, 0))input("please input any key to exit!")
整个脚本算上空行,一共才164行,真是短小精悍。但是在工作中真的管用。
就像我之前文章中说过的那句话“学以致用才是关键,为了学习而学习,永远学不好”。
不足之处
自己写的软件,不足之处简直太了解了,那我就自爆家丑了。
- 无法识别IPv6
- 错误处理中,如原IP文件中出现中文句号
。
则会出现错误不再执行,这个我后续完善下 - 归属地查询库只适用单一的qqwry,太low了
- 不支持自动更新查询库,这个主要考虑网安工作环境往往不允许连外网,小工具安全起见也不要有连接外网的功能。
反思下上面的问题,其实都应该早早修正。对异常输入不断优化,增加稳定性;库改为多个常用主流查询库,可根据实际情况选择用哪个;自动更新\手动更新,可人工选择。
视频演示(各位看官如满意请对视频三连支持,您的三连是我创作下去的动力!)
【自制小工具】快速批量查询IP归属地(自动去重、按国内外汇总,并智能识别出错误IP)
【自制小工具】快速批量查询IP归属地(自动去重、按国内外汇总,并智能识别出错误IP)相关推荐
- 韵达详细物流用这个工具能批量查询
想要查询大量的韵达快递,有没有什么好用的查询工具?很多小伙伴还没找到适合自己的工具,那今天小编就来给大家推荐一个可以快速批量查询大量快递详细信息的工具,感兴趣的就进来seesee吧! 操作前我们先来看 ...
- Excel如何批量查询手机号归属地等信息?
今天跟大家分享一下Excel如何批量查询手机号归属地等信息? 1.打开演示文件如下图,要求我们快速查询手机号码归属地 2.选中手机号码单元格区域 3.点击[DIY工具箱] 4.点击[手机号]选 ...
- 视频裁剪小工具(批量)
视频裁剪小工具(批量) 一.代码 import csv import os from moviepy.editor import * import logging# 错误日志 logger = log ...
- 小工具:天气查询 Vs自定义设置 DevGridControl中GridView排序问题 小工具:火车票查询 小工具:邮件发送 小工具:截图简单图像处理...
小工具:天气查询 开发一个天气查询的工具主要由两步构成,一是数据的获取,二是数据的展示. 一.数据获取 数据获取又可以分为使用其它公司提供的API和手动抓取其它网站数据. 1. 某公司提供的API ...
- 一个快速批量查询快递物流数据的小工具,可同时多种快递物流信息跟踪查件
前几天写了一个用于快递批量查询并分类的小工具,适合快递网点或者商家用于物流或者问题件的状态跟踪. 支持批量查询,支持不同快递单号混合一起查询.方便物流跟踪查件,本程序仅一个程序文件绿色免安装下载解压即 ...
- 快速批量查询快递物流数据的工具,51Tracking可同时多种快递物流信息跟踪查件
这是我给公司写的API文档,注册账号每天可以免费批量查询100个单号 51Tracking用于快递批量查询并分类的工具,适合快递网点或者商家用于物流或者问题件的状态跟踪. 提供快递物流查询API接口: ...
- 快递查询工具,批量查询快递物流,并给部分单号标记颜色
在什么样的情况下才需要一次性查询多家快递的物流,并给单号标记颜色呢?小编猜想,存在这个问题的一般是商家或者快递行业之类的,下面随小编一起用这个技巧来快速查询试试. 需要哪些工具? 快递单号 怎么快速查 ...
- 用什么工具可以批量查询韵达快递
众所周知,如果手动地逐个查询多个快递单号的话,会浪费很多的时间跟精力,而想要做好快递的跟踪的话,就需要我们快速地批量查询快递单号.有没有什么办法可以一次性批量查询快递单号呢?接下来小编就带来如何一键批 ...
- 手机号批量查询归属地方法及其简介批量查询号码归属地方法
在某些情况下需要将手机号归属地进行批量查询,一个一个查询太麻烦了,有没有批量查询的办法呢?当然是有的,我介绍一个很好的工具可以完全完成这个任务 这个工具还是蛮有用的,不过得收费,毕竟别人花了时间写的, ...
最新文章
- Spring注入---实例工厂
- 17. javacript高级程序设计-错误处理与调试
- 第三章 用户界面设计
- 新手入门之j2me学习方法总结--摘录篇
- java heap space flex_Flash builder 4内存优化之java heap space解决办法
- 面试官系统精讲Java源码及大厂真题 - 20 SynchronousQueue 源码解析
- Linux CPU占用率监控工具小结
- 光线跟踪的几种常见求交运算
- 万物皆可Graph | 当推荐系统遇上图神经网络(三)
- Android修行手册-TextView常用属性篇
- 用递归调用函数来把存在父子级别的数据封装成一个树状结构
- 【Java二十周年】十年,二十年
- 程序员增加收入的实用之道
- P1282 多米诺骨牌
- SQL复杂查询 高速数目和城市数目
- 更多内容请移步GitHub
- 海龟交易法则(中译文)
- 2021巢湖学院高考成绩查询,2021年巢湖学院录取结果查询网址入口及录取结果公布时间...
- 弘辽科技:拼多多专属推广怎么设置时间。
- 2015-8-29阿里校园招聘研发project师笔试题
热门文章
- Soul聊天记录备份和恢复(旧机迁移至新机)
- 超细节的对比学习和SimCSE知识点
- 域名解析为什么不生效?域名解析不生效常见问题汇总
- 计算机二级java大纲,计算机二级Java考试内容大纲
- Android 一个改善的okHttp封装库
- C++学习8——菜鸟教程自学
- 电子计算机怎么按不了数字,计算器失灵按不出数字
- mysql8.0源码分析——文件管理fil_system
- 律师学python有什么用呢_《律》字意思读音、组词解释及笔画数 - 新华字典 - 911查询...
- Mac下使用Mounty挂载NTFS出现了文件不能拷贝的解决办法