基于Python制作简单的IP查询工具
作者:shigen01
这篇文章主要为大家详细介绍了如何基于Python制作一个简单的IP查询工具,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
hello,今天shigen
给大家分享一下如何优雅的查询IP的工具。我们先看一下效果:
shigen
在以前服务器被攻击或者我的COS流量被盗刷的时候,经常这样用。很是方便的展示了ip对应的地理位置,帮我快速的定位了攻击的源头。
我们接触的也有很多的在线的API,提供ip的地理位置解析,我们也可以自定义一个脚本,调用远端的API,获得数据。
那知道shigen
的都知道,我比较喜欢离线的数据,这意味着我摆脱了对于三方服务的依赖。如:对方的服务突然挂了,对方的服务限流了,对方的服务需要认证了,这都是麻烦事情。所以本着爹有娘有,不如自己有,我选择了一款包含离线数据库的Ip2region
。Ip2region的gitee地址,而我选的语言是python
,具体的python
代码书写我们参考官方的文档。
其它编程语言都有支持,感兴趣的伙伴可以自行了解。
那shigen
开始实现了。
首先,需要下载xdb文件。链接放在这里了,它放在了我的data
文件夹里。
接下来核心的部分,代码的实现。
1.获得本地和远程的IP地址
def getLocalAndRemoteIp()-> tuple: import socket, requests s=socket.socket(socket.AF_INET, socket.SOCK_DGRAM) s.connect(('8.8.8.8',80)) localIp =s.getsockname()[0] remoteIp = requests.get('http://ifconfig.me/ip', timeout=1).text.strip() return localIp,remoteIp
2.参照官方文档的实现
代码略长,建议横屏观看。大部分的参照官方的文档,只做了查询出数据的解析和格式化展示。
3.main函数
if __name__=='__main__': localIp,remoteIp=XdbSearcher.getLocalAndRemoteIp() print(f'localIp: {localIp},remoteIp: {remoteIp}') # cmd line arguments parser = argparse.ArgumentParser('a shell script which is executed to analyze the ip information') parser.add_argument('-ip','--ip',type=str,help='ipaddress', default=remoteIp) args = parser.parse_args() #1.缓存 dbPath = os.path.join(os.path.dirname(__file__),'./data/ip2region.xdb') cb =XdbSearcher.loadContentFromFile(dbfile=dbPath) # 2.创建查询对象 searcher =XdbSearcher(contentBuff=cb) # 3.执行查询 region_str=searcher.searchByIPStr(args.ip) print(region_str) searcher.close()
4.运行测试
配置一个alias
即可实现查询IP自由。
怎么样,这个技巧,你get到了吗?
以上就是基于Python制作简单的IP查询工具的详细内容,更多关于Python IP查询的资料请关注脚本之家其它相关文章!