python 实现全球IP归属地查询工具

Python 实现全球IP归属地查询工具

前言

全球IP归属地查询工具是一个通过IP地址查询该IP地址所对应的地理位置的工具。在网络安全领域有着重要的应用,比如通过归属地查询来防止恶意攻击等。

准备工作

为了实现这个功能,我们需要使用到Python的第三方库pygeoip,这个库可以从IP地址中提取有价值的信息并且根据该IP地址获取该地址的归属地。我们可以使用以下命令来安装pygeoip库:

pip install pygeoip

实现过程

步骤1:导入第三方库

首先,我们需要导入 pygeoip 库以及代码所需的所有其他通用的库。

import pygeoip
import socket

步骤2:获取IP地址

接下来要做的就是获取要查询的 IP 地址。 简单的方法是从用户输入或从上一个页面获取输入数据,这超出了本讨论的范围。 在这里,我们将在代码中直接定义 IP 地址。

ipaddr = '14.215.177.38'

步骤3:加载归属地数据库

为了使用pygeoip库,我们还需要下载一个IP地址的数据库,然后将其加载到我们的代码中。你可以选择从以下链接下载 GeoIP 数据库:https://dev.maxmind.com/geoip/geoip2/geolite2/

这里我已经预先下载了数据库,并将其存储在当前目录下。pygeoip库中的GepIP类提供了实现该功能所需的方法。在命令行上使用以下命令:

gi = pygeoip.GeoIP("GeoLiteCity.dat", pygeoip.MEMORY_CACHE)

GeoIP类接收两个参数:一个数据库文件和一个缓存标志,该标志表明我们是否想要使用动态的内存缓存。 我们将使用默认值“MEMORY_CACHE”来启用内存缓存。

步骤4:通过IP地址获取信息

现在,我们将使用刚才创建的GeoIP对象获取关于 IP 地址的信息。 获得 IP 地址信息的代码如下:

def ip_query(ipaddr):
    try:
        rec = gi.record_by_addr(ipaddr)
        city = rec['city']
        country = rec['country_name']
        longitude = rec['longitude']
        latitude = rec['latitude']
        print(f"The IP address {ipaddr} is located in {city}, {country}, Longitude: {longitude}, Latitude: {latitude}")
    except Exception as e:
        print(e)

我们使用record_by_addr()方法获取归属地信息。该方法接收一个IP地址参数,并返回一个Python字典。接下来,我们只需从字典中获取所需的所有关键信息,包括归属城市、国家、经度和纬度,并解析为一个易于阅读的字符串。

示例

该示例将查询值为14.215.177.38的IP地址的归属地信息,然后将其作为字符串输出。

import pygeoip
import socket

ipaddr = '14.215.177.38'

gi = pygeoip.GeoIP("GeoLiteCity.dat", pygeoip.MEMORY_CACHE)

def ip_query(ipaddr):
    try:
        rec = gi.record_by_addr(ipaddr)
        city = rec['city']
        country = rec['country_name']
        longitude = rec['longitude']
        latitude = rec['latitude']
        print(f"The IP address {ipaddr} is located in {city}, {country}, Longitude: {longitude}, Latitude: {latitude}")
    except Exception as e:
        print(e)

ip_query(ipaddr)

输出结果:

The IP address 14.215.177.38 is located in Beijing, China, Longitude: 116.3972282409668, Latitude: 39.92890930175781

以下示例利用一个循环,查询多个IP地址的归属地信息:

import pygeoip

ipaddr_list = ['8.8.8.8', '202.40.16.3', '157.240.15.35', '14.215.177.38']
gi = pygeoip.GeoIP("GeoLiteCity.dat", pygeoip.MEMORY_CACHE)

def ip_query(ipaddr):
    try:
        rec = gi.record_by_addr(ipaddr)
        city = rec['city']
        country = rec['country_name']
        longitude = rec['longitude']
        latitude = rec['latitude']
        print(f"The IP address {ipaddr} is located in {city}, {country}, Longitude: {longitude}, Latitude: {latitude}")
    except Exception as e:
        print(e)

for ipaddr in ipaddr_list:
    ip_query(ipaddr)

输出结果:

The IP address 8.8.8.8 is located in Ashburn, United States, Longitude: -77.4728012084961, Latitude: 39.048099517822266
The IP address 202.40.16.3 is located in Beijing, China, Longitude: 116.3972282409668, Latitude: 39.92890930175781
The IP address 157.240.15.35 is located in Ashburn, United States, Longitude: -77.4728012084961, Latitude: 39.048099517822266
The IP address 14.215.177.38 is located in Beijing, China, Longitude: 116.3972282409668, Latitude: 39.92890930175781

以上就是基于 Python 实现全球IP归属地查询工具的完整攻略。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python 实现全球IP归属地查询工具 - Python技术站

(0)
上一篇 2023年5月18日
下一篇 2023年5月18日

相关文章

  • Python判断字符串是否为合法标示符操作

    针对“Python判断字符串是否为合法标示符操作”的问题,这里为大家提供完整的攻略: 什么是标识符 在Python中,标识符指的是用来标识变量、函数、类等对象的命名。标识符必须是由下划线、数字和字母组成(第一个字符不能是数字),并且不能与Python的关键字重复。 Python判断字符串是否为合法标识符的方法 Python提供了字符串方法isidentifi…

    python 2023年6月5日
    00
  • 在 Python 和 C++ 之间传输数据而不写入文件 Windows 和 Unix

    【问题标题】:Transferring Data Between Python and C++ Without Writing To File Windows and Unix在 Python 和 C++ 之间传输数据而不写入文件 Windows 和 Unix 【发布时间】:2023-04-04 05:17:02 【问题描述】: 我有预先存在的 python…

    Python开发 2023年4月6日
    00
  • Python的三个重要函数详解

    关于“Python的三个重要函数详解”,我可以为你提供以下攻略: Python的三个重要函数详解 1. range函数 range函数是Python内置的一个函数,用于生成一个整数序列。这个函数最常用的的三个参数为range(start, stop, step),分别表示起始值、结束值和步长。其中,start是可选参数,如果不指定则默认为0;step也是可选…

    python 2023年6月5日
    00
  • python3判断url链接是否为404的方法

    判断URL链接是否为404可以通过Python的requests库来实现,具体步骤如下: 步骤一:安装requests库 确保你的电脑已经安装了Python3,并已经安装了requests库。如果你还没有安装requests库,请打开命令行工具(Windows下为cmd,Mac下为Terminal),输入以下命令: pip install requests …

    python 2023年6月3日
    00
  • Python中最强大的错误重试库(tenacity库)

    Python中最强大的错误重试库:tenacity tenacity是一个Python的错误重试库,它允许用户定义一个函数执行的重试策略,并能在函数发生可选的异常时进行重试。 使用这个库,我们可以很方便地实现对于有一定耐受性的异常的重试,比如网络连接失败,或是远程API问题等。 安装 tenacity的安装非常简单,只需在命令行中输入以下命令即可: pip …

    python 2023年6月2日
    00
  • 详解Python绘图Turtle库

    当你学习Python绘图模块时,一定会遇到Turtle库。Turtle库是一个简单而又有趣的绘图工具,它的学习起来非常容易。在本文中,我将详细讲解如何使用Turtle库进行绘图。 安装Turtle库 首先,我们需要安装Turtle库。在Python3.0版本及以后,Turtle库是默认安装的。如果你使用的是Python2.x版本,可以通过以下命令安装: pi…

    python 2023年5月30日
    00
  • python如何调用php文件中的函数详解

    来为大家详细讲解一下Python如何调用PHP文件中的函数。 前置知识 在介绍如何调用PHP函数之前,我们需要先了解一下PHP在执行时是如何工作的。在PHP的过程中,会先进行解析、编译和生成字节码,最后再执行字节码。而这个字节码本质上是一个可以在某个特定环境下运行的文件,即PHP文件。因此,要想在Python中调用PHP函数,我们需要利用PHP文件,并使用P…

    python 2023年5月20日
    00
  • Python scrapy爬取起点中文网小说榜单

    Python Scrapy 爬取起点中文网小说榜单完整攻略 1. 爬取起点中文网小说榜单的网址 首先,我们需要知道起点中文网小说榜单的网址。通过分析起点中文网小说榜单页面,我们可以得知榜单的网址为:https://www.qidian.com/rank/yuepiao。 2. 安装Scrapy Scrapy是一个Python的爬虫框架,我们需要先安装它。 p…

    python 2023年5月14日
    00
合作推广
合作推广
分享本页
返回顶部