当前位置: 首页 > news >正文

python判断ip所属地区 python 判断ip 网段

前言

IP地址是互联网中唯一标识一个设备的地址,有时候需要判断一个IP地址所属的地区,这就需要用到IP地址归属查询。本文将介绍Python如何通过IP地址查询所属地区并展示代码。

 

一、 IP地址归属查询

IP地址归属查询又称IP地址归属地查询、IP地址归属地定位、IP地址查询、IP地址定位等,是通过查询互联网上公共的IP数据库,来得到一个IP地址所属的地理位置、运营商等信息。

二、 IP地址的分类

IP地址分为IPv4和IPv6两种,IPv4是32位地址,IPv6是128位地址。通常我们使用的是IPv4地址, 其中一个IPv4地址由4个数字组成,每个数字之间用点号“.”隔开,每个数字的取值范围为0~255。例如: 192.168.1.1。

三、 IP地址转二进制

IP地址在计算机中以二进制表示,需要将IP地址转为二进制数,这就需要用到位运算符。在Python中,使用bin()函数将十进制数转为二进制数。例如:

ip = "192.168.1.1"
binary_ip = ".".join([bin(int(x)+256)[3:] for x in ip.split(".")])
print(binary_ip)

输出结果为:11000000.10101000.00000001.00000001

四、 IP地址归属地查询库

在Python中,有多个第三方库可以使用,例如pygeoip、maxminddb等。在本文中,我们将使用淘宝IP地址库,淘宝IP地址库是淘宝开放平台提供的免费IP地址库,包括IPv4和IPv6地址库。我们只需通过HTTP请求即可获取到所需的IP地址信息。

五、 Python代码实现

接下来,我们将通过Python代码来实现IP地址归属地查询。代码分为两部分:第一部分是将IP地址转换为二进制位,第二部分是通过HTTP请求查询IP地址归属地。

首先,我们需要导入所需的库:

import requests

然后,实现将IP地址转为二进制:

def get_binary_ip(ip):"""将IP地址转为二进制:param ip: IP地址,例如:"192.168.1.1":return: IP地址的二进制表示,例如:"11000000.10101000.00000001.00000001""""binary_ip = ".".join([bin(int(x) + 256)[3:] for x in ip.split(".")])return binary_ip

接下来,实现通过HTTP请求查询IP地址归属地:

def get_location_by_ip(ip):"""通过HTTP请求查询IP地址归属地:param ip: IP地址,例如:"192.168.1.1":return: IP地址的归属地,例如:"广东省深圳市""""url = "http://ip.taobao.com/service/getIpInfo.php?ip=" + iptry:response = requests.get(url, timeout=5)data = response.json()if data["code"] == 0:location = data["data"]["region"] + data["data"]["city"]else:location = "未知"except Exception as e:print(e)location = "未知"return location

最后,我们将两个函数结合起来,实现完整功能:

import requestsdef get_binary_ip(ip):"""将IP地址转为二进制:param ip: IP地址,例如:"192.168.1.1":return: IP地址的二进制表示,例如:"11000000.10101000.00000001.00000001""""binary_ip = ".".join([bin(int(x) + 256)[3:] for x in ip.split(".")])return binary_ipdef get_location_by_ip(ip):"""通过HTTP请求查询IP地址归属地:param ip: IP地址,例如:"192.168.1.1":return: IP地址的归属地,例如:"广东省深圳市""""url = "http://ip.taobao.com/service/getIpInfo.php?ip=" + iptry:response = requests.get(url, timeout=5)data = response.json()if data["code"] == 0:location = data["data"]["region"] + data["data"]["city"]else:location = "未知"except Exception as e:print(e)location = "未知"return locationif __name__ == "__main__":ip = "192.168.1.1"binary_ip = get_binary_ip(ip)location = get_location_by_ip(ip)print("IP地址:{}的归属地是:{}".format(ip, location))

六、 总结

本文介绍了Python如何通过IP地址查询所属地区并展示了代码实现。通过学习本文,你可以掌握将IP地址转为二进制数和通过HTTP请求查询IP地址归属地的方法。

http://www.lryc.cn/news/135763.html

相关文章:

  • 大数据分析案例-基于LightGBM算法构建糖尿病确诊预测模型
  • Mysql查询重复数据常用方法
  • Go framework-GORM
  • FirmAE 工具安装(解决克隆失败 网络问题解决)
  • css实现九宫格布局
  • linux下系统问题排查基本套路
  • 想解锁禁用的iPhone?除了可以使用电脑之外,这里还有不需要电脑的方法!
  • 基于Springboot+Thymeleaf学生在线考试管理系统——LW模板
  • STM32f103c6t6/STM32f103c8t6寄存器开发
  • MySQL Connection not available.
  • PHP反序列化 字符串逃逸
  • DockerFile解析
  • 斯坦福大学医学院教授:几年内ChatGPT之类的AI将纳入日常医学实践
  • golang 命令行 command line (flag,os,arg,args)
  • Shell语法揭秘:深入探讨常见Linux Shell之间的语法转换
  • Python3 基础语法
  • spring boot分装通用的查询+分页接口
  • 【OpenCV】OpenCV环境搭建,Mac系统,C++开发环境
  • node安装node-sass依赖失败(版本不一致)
  • 联想小新Pro 16笔记本键盘失灵处理方法
  • python 连接Redis 数据库
  • 使用 wxPython 和 pymupdf进行 PDF 加密
  • Mysql性能优化:什么是索引下推?
  • Pytorch建立MyDataLoader过程详解
  • 十问华为云 Toolkit:开发插件如何提升云上开发效能
  • NO.06 自定义映射resultMap
  • 国产精品:讯飞星火最新大模型V2.0
  • 网络综合布线实训室方案(2023版)
  • Qt应用开发(基础篇)——文本编辑窗口 QTextEdit
  • NineData中标移动云数据库传输项目(2023)