基于Python制作简单的IP查询工具

 更新时间:2024年03月01日 10:24:09   作者:shigen01  
这篇文章主要为大家详细介绍了如何基于Python制作一个简单的IP查询工具,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下

hello,今天shigen给大家分享一下如何优雅的查询IP的工具。我们先看一下效果:

shigen在以前服务器被攻击或者我的COS流量被盗刷的时候,经常这样用。很是方便的展示了ip对应的地理位置,帮我快速的定位了攻击的源头。

我们接触的也有很多的在线的API,提供ip的地理位置解析,我们也可以自定义一个脚本,调用远端的API,获得数据。

那知道shigen的都知道,我比较喜欢离线的数据,这意味着我摆脱了对于三方服务的依赖。如:对方的服务突然挂了,对方的服务限流了,对方的服务需要认证了,这都是麻烦事情。所以本着爹有娘有,不如自己有,我选择了一款包含离线数据库的Ip2regionIp2region的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查询的资料请关注脚本之家其它相关文章!

相关文章

  • Python中网络请求中Retry策略实现方式

    Python中网络请求中Retry策略实现方式

    这篇文章主要介绍了Python中网络请求中Retry策略实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06
  • 在Django的session中使用User对象的方法

    在Django的session中使用User对象的方法

    这篇文章主要介绍了在Django的session中使用User对象的方法,Django是众Python web开发框架中人气最高的一个,需要的朋友可以参考下
    2015-07-07
  • Python实现批量将word转html并将html内容发布至网站的方法

    Python实现批量将word转html并将html内容发布至网站的方法

    这篇文章主要介绍了Python实现批量将word转html并将html内容发布至网站的方法,涉及Python调用第三方接口进行文件转换及操作数据库等相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-07-07
  • Python OpenCV 图像平移的实现示例

    Python OpenCV 图像平移的实现示例

    本篇博客学习OpenCV 中关于图像平移的方法,核心学习到的方法是warpAffine,需要的朋友们下面随着小编来一起学习学习吧
    2021-06-06
  • Python爬虫之Selenium警告框(弹窗)处理

    Python爬虫之Selenium警告框(弹窗)处理

    这篇文章主要介绍了Python爬虫之Selenium警告框(弹窗)处理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • PyQt5爬取12306车票信息程序的实现

    PyQt5爬取12306车票信息程序的实现

    12306是学习爬虫的比较好的一个练手网站。本文主要实现了PyQt5爬取12306车票信息程序,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-05-05
  • 对python读写文件去重、RE、set的使用详解

    对python读写文件去重、RE、set的使用详解

    今天小编就为大家分享一篇对python读写文件去重、RE、set的使用详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-12-12
  • pyqt5之将textBrowser的内容写入txt文档的方法

    pyqt5之将textBrowser的内容写入txt文档的方法

    今天小编就为大家分享一篇pyqt5之将textBrowser的内容写入txt文档的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-06-06
  • Python面向对象程序设计类的多态用法详解

    Python面向对象程序设计类的多态用法详解

    这篇文章主要介绍了Python面向对象程序设计类的多态用法,结合实例形式详细分析了Python面向对象程序设计中类的多态概念、原理、用法及相关操作注意事项,需要的朋友可以参考下
    2019-04-04
  • python字典的常用方法总结

    python字典的常用方法总结

    在本篇文章里小编给大家整理的是关于python字典的常用方法以及相关知识点内容,需要的朋友们参考下。
    2019-07-07

最新评论