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地址归属地的方法。

python判断ip所属地区 python 判断ip 网段的更多相关文章

  1. PHP获取IP及地区信息(纯真IP数据库)

    昨天在写程序的时候,发现在用户的时候记录IP和地区信息也许以后用得上,去网上找了找,发现实现的方式有好多好多,因为我用的ThinkPHP,后来又去TP官网找了找,最后采用了下面这种方法. <?p ...

  2. python代理池的构建1——代理IP类的构建,以及配置文件、日志文件、requests请求头

    一.整体结构 二.代理IP类的构建(domain.py文件) ''' 实现_ init_ 方法, 负责初始化,包含如下字段: ip: 代理的IP地址 port:代理IP的端口号 protocol: 代 ...

  3. python实现判断一个字符串是否是合法IP地址

    #!usr/bin/env python #encoding:utf-8 ''''' __Author__:沂水寒城 功能:判断一个字符串是否是合法IP地址 ''' import re def jud ...

  4. python实现ip地址的包含关系判断

    python的IPy模块虽然可以实现一些ip地址的判断,但是不是很完美,有些场景根本判断不出来,还会抛出异常,比如一个地址范围和一个ip/掩码,这种不同类型就无法判断. 对此通过自己写函数来实现ip地 ...

  5. python --- 19 判断对象所属,区分函数和对象, 反射

    一.判断对象所属 isinstance, type , issubclass 1.issubclass(x,y)    判断x是否是y 的子类 2.type(x)  精准返回x 的数据类型 3.isi ...

  6. python扫描proxy并获取可用代理ip列表

    mac或linux下可以work的代码如下: # coding=utf-8 import requests import re from bs4 import BeautifulSoup as bs ...

  7. Python基础(三):简化除法判断、分析apache访问日志、扫描存活主机、利用多线程实现ssh并发访问

    一.简化除法判断 目标: 编写mydiv.py脚本,主要要求如下: 提示用户输入一个数字作为除数 如果用户按下Ctrl+C或Ctrl+D则退出程序 如果用户输入非数字字符,提示用户应该输入数字 如果用 ...

  8. python代理池的构建2——代理ip是否可用的处理和检查

    上一篇博客地址:python代理池的构建1--代理IP类的构建,以及配置文件.日志文件.requests请求头 一.代理ip是否可用的处理(httpbin_validator.py) #-*-codi ...

  9. ip校验方法:判断ip是否位于指定的范围内

    import java.util.ArrayList;import java.util.List;import java.util.regex.Matcher;import java.util.reg ...

  10. python扫描proxy并获取可用代理ip

    今天咱写一个挺实用的工具,就是扫描并获取可用的proxy 首先呢,我先百度找了一个网站:http://www.xicidaili.com 作为例子 这个网站里公布了许多的国内外可用的代理的ip和端口 ...

随机推荐

  1. 生物信息学 Python 入门之源码安装

    编程,作为生物信息学的一个基础性技能,是任何一个生信工程师都无法绕开话题.也许有些人还在纠结 Perl 和 Python 到底应该学习哪一个,但作为目前最火最流行的编程语言 Python 还是非常值得 ...

  2. Python 安装教程,新手入门(超详细)含Pycharm开发环境安装教程

    目录 一.Python介绍 二.Python安装教程 (一)Python的下载 (二)Python的安装 三.Pycharm开发工具的安装 (一)Pycharm介绍 (二)Pycharm的下载 (三) ...

  3. 如何在2023年开启React项目

    在这里,我想给你一个新的React项目入门的简要概述.我想反思一下优点和缺点,反思一下作为一个开发者所需要的技术水平,反思一下作为一个React开发者,每个启动项目都能为你提供哪些功能.最后,你将了解 ...

  4. Python modbus_tk 库源码分析

    modbus_tk 源代码分析 前言 modbus_tcp 协议是工业项目中常见的一种基于 TCP/IP 协议的设备数据交互协议. 作为 TCP/IP 协议的上层协议,modbus_tcp 协议涉及到 ...

  5. 如何通过AWS的AmazonSageMaker进行机器学习

    目录 <如何通过 AWS 的 Amazon SageMaker 进行机器学习> 一.引言 随着人工智能和机器学习的发展,越来越多的企业和机构开始使用这些技术来进行各种应用场景的处理和分析. ...

  6. 在linux上启动arthas报“Can not find java process”

    发生背景 完整报错信息: [***@localhost ~]$ java -jar arthas-boot.jar [INFO] JAVA_HOME: /usr/lib/jvm/java-1.8.0- ...

  7. .NET周报 【7月第1期 2023-07-02】

    国内文章 C# 实现 Linux 视频聊天.远程桌面(源码,支持信创国产化环境,银河麒麟,统信UOS) https://www.cnblogs.com/shawshank/p/17420469.htm ...

  8. python台历代码--涉及知识点为Excel表格合并等操作

    from openpyxl.styles import Alignment, PatternFill, Fontfrom openpyxl.utils import get_column_letter ...

  9. SpringBoot定义优雅全局统一Restful API 响应框架完结撒花篇封装starter组件

    之前我们已经,出了一些列文章. 讲解如何封统一全局响应Restful API. 感兴趣的可以看我前面几篇文章 (整个starter项目发展史) SpringBoot定义优雅全局统一Restful AP ...

  10. Github的一个彩蛋

    点击新建仓库 项目名称为自己的昵称 下方提示意思说: 你发现了一个秘密 这是一个特别的仓库 你可以为你的首页增加README.md 就像给项目介绍一样,这是你的自我介绍 点击编辑,里面会与建议模板 以 ...