利用python来跟踪ip地址的方法

 更新时间:2023年06月21日 10:48:43   作者:程序员学长  
今天来介绍一个流行的 python库 ip2geotools,使用它可以确定 IP地址 对应的 国家、地区、城市、纬度和经度等,文中通过代码示例介绍了如何使用python来跟踪ip地址,需要的朋友可以参考下

根据 IP 地址获取位置

导入必要的库

import socket
import requests
from ip2geotools.databases.noncommercial import DbIpCity
from geopy.distance import distance

下面的函数用于打印IP地址、城市、国家、坐标等的详细信息。

def printDetails(ip):
    res = DbIpCity.get(ip, api_key="free")
    print(f"IP Address: {res.ip_address}")
    print(f"Location: {res.city}, {res.region}, {res.country}")
    print(f"Coordinates: (Lat: {res.latitude}, Lng: {res.longitude})")

从IP地址获取位置

ip_add = input("Enter IP: ")  # 198.35.26.96
printDetails(ip_add)

输出:

IP Address: 198.35.26.96
Location: San Jose, California, US
Coordinates: (Lat: 37.3361663, Lng: -121.890591)

从 URL 获取位置

url = input("Enter URL: ")  # www.youtube.com
ip_add = socket.gethostbyname(url)
printDetails(ip_add)

输出:

IP Address: 142.250.66.142
Location: Hong Kong, Central and Western, HK
Coordinates: (Lat: 22.2850394, Lng: 114.1583819)

一些常见的用例

在这里,我们讨论它的一些用例,

例如阻止某些特定国家/地区的 IP 地址或计算两个 IP 地址之间的距离等。

1.根据位置阻止某些 IP 地址

下面的代码查找 IP 地址的位置,然后检查该位置的国家/地区是否在被阻止国家/地区列表中。

def is_country_blocked(ip_address):
    blocked_countries = ["China", "Canada", "India"]
    location = DbIpCity.get(ip_address)
    if location.country in blocked_countries:
        return True
    else:
        return False
ip_add = input("Enter IP: ")  # 198.35.26.96
if is_country_blocked(ip_add) is True:
    print(f"IP Address: {ip_add} is blocked")
else:
    print(f"IP Address: {ip_add} is allowed")

输出:

Enter the IP Address: 198.35.26.96
IP Address: 198.35.26.96 is allowed

2.计算两个IP地址之间的距离

下面的代码将计算两个 IP 地址位置之间的距离(以公里为单位)。

def calculate_distance(ip1, ip2):
    res1 = DbIpCity.get(ip1)
    res2 = DbIpCity.get(ip2)
    lat1, lon1 = res1.latitude, res1.longitude
    lat2, lon2 = res2.latitude, res2.longitude
    return distance((lat1, lon1), (lat2, lon2)).km
# Input two IP addresses
ip_add_1 = input("1st IP: ")  # 198.35.26.96
ip_add_2 = input("2nd IP: ")  # 220.158.144.59
dist = calculate_distance(ip_add_1, ip_add_2)
print(f"Distance between them is {str(dist)}km")

输出:

Enter 1st IP Address: 198.35.26.96
Enter 2nd IP Address: 220.158.144.59
Distance between them is 12790.62320788363km

3.计算你当前位置和服务器之间的距离

下面的代码将计算你当前位置与给定 IP 地址位置之间的距离(以公里为单位)。

def get_distance_from_location(ip, lat, lon):
    res = DbIpCity.get(ip)
    ip_lat, ip_lon = res.latitude, res.longitude
    return distance((ip_lat, ip_lon), (lat, lon)).km
server_ip = input("Server's IP: ")
lat = float(input("Your Latitude: "))
lng = float(input("Your Longitude: "))
dist = get_distance_from_location(server_ip, lat, lng)
print(f"Distance between the server and your location is {str(dist)}km")

输出:

Enter your server's IP Address: 208.80.152.201
Enter your current location (Latitude): 26.4710
Enter your current location (Longitude): 73.1134
Distance between the server and your location is 12183.275099919923km

结论

跟踪 IP 地址的位置有几个好处,

例如企业可以根据用户的位置向用户投放有针对性的广告。这可以带来更有效的营销活动、更高的转化率和个性化的用户体验。

此外,它还有助于欺诈检测,例如阻止来自某些特定国家/地区的 IP 地址,还可以验证 IP 地址以确保它们的格式正确。

到此这篇关于利用python来跟踪ip地址的方法的文章就介绍到这了,更多相关python 跟踪ip地址内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python实现二次元图片展示(屏保)

    python实现二次元图片展示(屏保)

    这篇文章主要介绍了python实现二次元图片展示,用了API端口相关的知识实现,下面详细的文章内容需要的小伙伴可以参考一下
    2022-02-02
  • 利用Python实现文件读取与输入以及数据存储与读取的常用命令

    利用Python实现文件读取与输入以及数据存储与读取的常用命令

    这篇文章主要给大家介绍了关于利用Python实现文件读取与输入以及数据存储与读取的常用命令,文中还介绍了用python循环保存文件并循环读取文件的方法,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-11-11
  • 详解在Anaconda环境下Python安装pydot与graphviz的方法

    详解在Anaconda环境下Python安装pydot与graphviz的方法

    这篇文章主要为大家详细介绍了在Anaconda环境中,安装Python语言pydot与graphviz两个模块的方法,文中的安装方法讲解详细,感兴趣 的可以了解一下
    2023-02-02
  • 使用python加密主机文件几种方法实现

    使用python加密主机文件几种方法实现

    本文主要介绍了使用python加密主机文件几种方法实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-02-02
  • Python读取Excel数据实现批量生成PPT

    Python读取Excel数据实现批量生成PPT

    我们常常面临着大量的重复性工作,通过人工方式处理往往耗时耗力易出错。而Python在办公自动化方面具有天然优势。本文将利用读取Excel数据并实现批量生成PPT,需要的可以参考一下
    2022-05-05
  • Python arrow 更好的日期时间模块

    Python arrow 更好的日期时间模块

    这篇文章主要为大家介绍Python的arrow日期时间模块,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2021-11-11
  • Python图片的横坐标汉字实例

    Python图片的横坐标汉字实例

    今天小编就为大家分享一篇Python图片的横坐标汉字实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12
  • 如何用Pythony验证万物归一(考拉咨猜想)

    如何用Pythony验证万物归一(考拉咨猜想)

    考拉咨猜想简单的来说,就是你随便给我一个整数,我最后都是会通过固定的规则演变成"1",万物归一.今天我们就用那Python验证一下这个猜想
    2021-06-06
  • python列表元素拼接成字符串的4种方法

    python列表元素拼接成字符串的4种方法

    本文主要介绍了python列表元素拼接成字符串的4种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-02-02
  • 如何使用Python实现斐波那契数列

    如何使用Python实现斐波那契数列

    这篇文章主要介绍了如何使用Python实现斐波那契数列,斐波那契数列(Fibonacci)最早由印度数学家Gopala提出,而第一个真正研究斐波那契数列的是意大利数学家 Leonardo Fibonacci,需要的朋友可以参考下
    2019-07-07

最新评论