基于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,remoteIp2.参照官方文档的实现
代码略长,建议横屏观看。大部分的参照官方的文档,只做了查询出数据的解析和格式化展示。

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查询的资料请关注脚本之家其它相关文章!
