基于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实现的数据结构与算法之链表详解

    Python实现的数据结构与算法之链表详解

    这篇文章主要介绍了Python实现的数据结构与算法之链表,详细分析了链表的概念、定义及Python实现与使用链表的相关技巧,非常具有实用价值,需要的朋友可以参考下
    2015-04-04
  • Pycharm 实现下一个文件引用另外一个文件的方法

    Pycharm 实现下一个文件引用另外一个文件的方法

    今天小编就为大家分享一篇Pycharm 实现下一个文件引用另外一个文件的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-01-01
  • python通过openpyxl生成Excel文件的方法

    python通过openpyxl生成Excel文件的方法

    这篇文章主要介绍了python通过openpyxl生成Excel文件的方法,实例分析了openpyxl的安装与使用技巧,非常具有实用价值,需要的朋友可以参考下
    2015-05-05
  • Python实现简单的可逆加密程序实例

    Python实现简单的可逆加密程序实例

    这篇文章主要介绍了Python实现简单的可逆加密程序,实例分析了Python实现可逆加密的原理与相关技巧,非常具有实用价值,需要的朋友可以参考下
    2015-03-03
  • python中bottle使用实例代码

    python中bottle使用实例代码

    这篇文章主要介绍了python bottle使用实例,主要是搞懂python中如何来组织包,如何调用包,如何读取配置文件,连接数据库,设置路由,路由分组,具体示例代码跟随小编一起看看吧
    2021-08-08
  • Python 操作文件的基本方法总结

    Python 操作文件的基本方法总结

    这篇文章主要介绍了Python 操作文件的基本方法总结的相关资料,这里说明了九种操作文件的方法,并附上实现方法,需要的朋友可以参考下
    2017-08-08
  • python利用K-Means算法实现对数据的聚类案例详解

    python利用K-Means算法实现对数据的聚类案例详解

    这篇文章主要介绍了python利用K-Means算法实现对数据的聚类,本文通过案例讲解的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-04-04
  • python中的iterator和"lazy iterator"区别介绍

    python中的iterator和"lazy iterator"区别介绍

    这篇文章主要介绍了python中的iterator和 “lazy iterator“之间有什么区别,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-04-04
  • python logging模块详解及其日志定时清理方式

    python logging模块详解及其日志定时清理方式

    这篇文章主要介绍了python logging模块详解及其日志定时清理方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-04-04
  • python单元测试之pytest的使用

    python单元测试之pytest的使用

    Pytest是Python的一种单元测试框架,与 Python 自带的 Unittest 测试框架类似,但是比 Unittest 框架使用起来更简洁,效率更高,今天给大家详细介绍一下pytest的使用,需要的朋友可以参考下
    2021-06-06

最新评论