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

简介: 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=" + ip
    try:
        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 requests
 
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
 
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=" + ip
    try:
        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
 
if __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地址归属地的方法。

相关文章
|
12天前
|
Python
python代理ip关于设置proxies的问题
python代理ip关于设置proxies的问题
|
12天前
|
数据采集 API Python
python关于ip代理池的获取和随机生成
python关于ip代理池的获取和随机生成
|
9月前
|
Linux Python
【从零学习python 】71. 网络端口及其作用
【从零学习python 】71. 网络端口及其作用
54 0
|
9月前
|
Python
【从零学习python 】69. 网络通信及IP地址分类解析
【从零学习python 】69. 网络通信及IP地址分类解析
79 2
|
网络协议 程序员 Python
1行Python代码,获取对方的IP地址
如何验证域名和服务器IP是否绑定成功呢?
130 0
1行Python代码,获取对方的IP地址
|
Python
Python 优雅获取本机 IP 方法
见过很多获取服务器本地IP的代码,个人觉得都不是很好,例如以下这些 不推荐:靠猜测去获取本地IP方法 #!/usr/bin/env python # -*- coding: utf-8 -*- import socket import fcntl import struct def get_ip_address(ifname): s = socket.
3427 0
|
API 定位技术 Python
Python获取IP地址对应的地理位置信息!
开发工具 Python版本:3.6.4相关模块:IPy模块;argparse模块;requests模块;以及一些Python自带的模块。 环境搭建 安装Python并添加到环境变量,pip安装需要的相关模块即可。
4168 0
|
Python 程序员
Python | 判定IP地址合法性的三种方法
      IP合法性校验是开发中非常常用的,看起来很简单的判断,作用确很大,写起来比较容易出错,今天我们来总结一下,看一下3种常用的IP地址合法性校验的方法。 IPv4的ip地址格式:(1~255).(0~255).(0~255).(0~255) 正则表达式判定法 最简单的实现方法是构造一个正则表达式。
3058 0
|
Python Windows
Python基础系列-判断字段是否IP
版权声明:如需转载,请注明转载地址。 https://blog.csdn.net/oJohnny123/article/details/82116511 代码是从某开源项目中找到的,忘了出处,侵删。
1040 0