使用 API 和离线库查询 IP 地址方法详解

news2024/11/24 19:08:18

目录

    • 一、IP 地址查询能获取哪些信息
      • 1.地理位置信息
      • 2.网络信息
      • 3.网络类型
    • 二、IP 地址查询方法,附代码
      • 1.在线查询 IP 地址方法
      • 2.使用 API 进行 IP 地址查询
      • 3.使用离线库进行 IP 地址查询

互联网监管部门要求公开 IP 归属地,引起了很大热度,但作为平台或企业的开发者不能只凑个热闹,使用 IP 地址查询尤为重要。
IP 地址是实现网络互通的条件之一,通过查询 IP 地址,可获取地理位置、时区、经纬度、运营商等信息,为金融、电商、广告、网安行业提供流量分析、网络安全等技术支持。因为 IP 数据云查询的数据维度多,定位精准,所以下面以它为例,教大家如何进行 IP 地址查询。

一、IP 地址查询能获取哪些信息

1.地理位置信息

  • 国家:IP 所属的国家或地区。
  • 城市:IP 所在的城市或省份信息。
  • 区县或街道:用高精准定位的产品,可以定位到街道
  • 经纬度:IP 地址大致对应的地理坐标。

2.网络信息

  • 互联网服务提供商(ISP):提供该 IP 地址的网络服务商。
  • 自治系统编号(ASN):分配给 IP 地址段的自治系统编号,标识网络的运营商。

3.网络类型

  • 数据中心 IP:区分 IP 是否属于家庭用户、商业用户或数据中心。
  • 代理、Tor 节点:识别 IP 地址是否使用了虚拟专用网络、代理服务或 Tor 匿名网络。

开发者或企业可以根据业务需求,使用 IP 归属地、IP 应用场景、IP 风险画像产品等产品,或数据定制。

二、IP 地址查询方法,附代码

个人少量查询可选择在线查询,对企业或平台,需要大量的 IP 地址查询,建议使用 API 或离线库查询方式。

在线 IP 查询API 查询离线库查询
更新频率实时更新实时更新依赖于数据库更新频率,可选择日更、周更、月更等
批量查询不能批量查询支持大规模批量查询,取决于 API 服务的配额和限制支持大规模批量查询,查询速度受限于本地硬件
网络完全依赖网络,需要持续的网络连接需要网络连接,API 调用需要访问外部服务器不依赖网络,本地查询,不受网络状态影响
支持 IP 类型IPv4 和 IPv6IPv4 和 IPv6IPv4 和 IPv6
响应速度受网络延迟和服务器负载影响取决于 API 响应速度和网络状况查询在本地进行,无网络延迟
操作复杂度简单,适合非技术人员使用需要一定开发集成和配置,但可自动化需要下载、部署数据库文件和编写查询脚本
适用场景少量查询、个人或临时使用批量查询、企业级应用、广告验证、用户分析等场景大规模数据处理、网络优化、流量调度等场景

1.在线查询 IP 地址方法

查询地址:https://www.ip66.net/?utm-source=kol&utm-keyword=?2753
直接输入 IP 地址,根据套餐返回相应的结果,每日可免费查询

2.使用 API 进行 IP 地址查询

【https://www.ipdatacloud.com/?utm-source=kol&utm-keyword=?2752】
首先根据需求购买数据后,获取 api 接口的 key
接口地址:https://api.ipdatacloud.com

image-20241102110141396

请求说明:

image-20241102110155715请求方法(java 示例代码):

public static void main(String[] args) throws IOException, InterruptedException {
    String urlArr = "https://api.ipdatacloud.com/v2/query?ip=&key=";
    HttpClient httpClient = HttpClient.newBuilder().build();
    HttpRequest getRequest = HttpRequest.newBuilder()
            .GET()
            .uri(URI.create(urlArr))
            .build();

    // 发送GET请求并获取响应
    HttpResponse<String> resp = httpClient.send(getRequest, HttpResponse.BodyHandlers.ofString());

    //对返回的json数据做解析
    ObjectMapper objectMapper = new ObjectMapper();
    JsonNode rootNode = objectMapper.readTree(resp.body());
    String data = rootNode.get("data").get("location").asText();
    Location location = objectMapper.readValue(data, Location.class);
    System.out.println(location.toString());
}

输出说明:

image-20241102110225519

3.使用离线库进行 IP 地址查询

在需要大规模查询或高效访问时,可以考虑使用本地缓存或 IP 离线库。这种方式可以在本地处理查询请求,减少对外部 API 的依赖
首先获取 IP 离线库【https://www.ipdatacloud.com/?utm-source=kol&utm-keyword=?2752】,以下是查询java代码示例(内存版):

package com.ipdatacloud.search;import java.io.IOException;
public class Test {
    public static void main(String[] args) throws IOException {
        /*
          getInstanceFileIpv4() ipv4文件版查询
          getInstanceFileIpv6() ipv6文件版查询
          getInstanceMemIpv4() ipv4内存版查询
          getInstanceMemIpv6() ipv6内存版查询
         */
        // 1.实例化查询类
        Search finder = Search.getInstanceMemIpv4("file_path");

        // 2.执行查询
        String res = finder.get("ip_address");

        // 3.解析查询结果
        Location location = new Location(res);
        System.out.println(location.getContinent());        // 大洲
        System.out.println(location.getCountry());          // 国家
        System.out.println(location.getProvince());         // 省份
        System.out.println(location.getCity());             // 城市
        System.out.println(location.getDistrict());         // 区县
        System.out.println(location.getIsp());              // 运营商
        System.out.println(location.getAreaCode());         // 区域代码
        System.out.println(location.getCountryEnglish());   // 国家/地区英文
        System.out.println(location.getCountryCode());      // 国家/地区英文简写
        System.out.println(location.getLongitude());        // 经度
        System.out.println(location.getLatitude());         // 纬度
        System.out.println(location.getElevation());        // 海拔
        System.out.println(location.getZipCode());          // 邮编
        System.out.println(location.getCityCode());         // 城市代码
        System.out.println(location.getWeatherStation());   // 气象站
        System.out.println(location.getAsn());              // ASN码
        System.out.println(location.getPreserve());         // 预留
        System.out.println(location.getStreet());           // 街道
        System.out.println(location.getTimeZone());         // 时区
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2236908.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

机器学习在时间序列预测中的应用与实现——以电力负荷预测为例(附代码)

&#x1f4dd;个人主页&#x1f339;&#xff1a;一ge科研小菜鸡-CSDN博客 &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; 1. 引言 随着数据采集技术的发展&#xff0c;时间序列数据在各个领域中的应用越来越广泛。时间序列预测旨在基于过去的时间数据来…

语音识别ic赋能烤箱,离线对话操控,引领智能厨房新体验

一、智能烤箱产品的行业背景 随着科技的飞速发展&#xff0c;智能家居已经成为现代家庭的新宠。智能烤箱作为智能家居的重要组成部分&#xff0c;正逐渐从高端市场走向普通家庭。消费者对于烤箱的需求不再仅仅局限于基本的烘焙功能&#xff0c;而是更加注重其智能化、便捷化和…

【C++】异常处理机制(对运行时错误的处理)

&#x1f308; 个人主页&#xff1a;谁在夜里看海. &#x1f525; 个人专栏&#xff1a;《C系列》《Linux系列》 ⛰️ 天高地阔&#xff0c;欲往观之。 目录 引言 1.编译器可以处理的错误 2.编译器不能处理的错误 3.传统的错误处理机制 assert终止程序 返回错误码 一、…

Python基础学习-03逻辑分支语句、循环

目录 1、记住逻辑关系 2、逻辑分支语句 3、for-loop循环 4、while-loop 5、break 和 continue 6、本节总结 1、记住逻辑关系 • 逻辑关系 1&#xff09; True&#xff08;真&#xff09; 和 False&#xff08;假&#xff09; 2&#xff09;逻辑关系有 and&#xff08;与…

【Windows】Android Studio 上cmd 换为Powershell 终端

最近在Windows 环境下Android Studio 的Terminal 终端&#xff0c;低版本默认用的是cmd.exe&#xff0c;好多linux 命令不支持&#xff0c;有时候一不小心就记忆错了&#xff1b;干脆直接换成Windows PowerShell 得了。 下载Powershell&#xff1a;https://aka.ms/PSWindows 选…

javascript实现sha512和sha384算法(支持微信小程序),可分多次计算

概述&#xff1a; 本人前端需要实现sha512和sha384计算的功能&#xff0c;最好是能做到分多次计算。 本文所写的代码在现有sha512和sha384的C代码&#xff0c;反复测试对比计算过程参数&#xff0c;成功改造成sha512和sha384的javascript代码&#xff0c;并成功验证好分多次计算…

Pr 视频过渡:沉浸式视频

效果面板/视频过渡/沉浸式视频 Video Transitions/Immersive Video Adobe Premiere Pro 的视频过渡效果中&#xff0c;沉浸式视频 Immersive Video效果组主要用于 VR 视频剪辑之间的过渡。 自动 VR 属性 Auto VR Properties是所有 VR 视频过渡效果的通用选项。 默认勾选&#x…

Ascend C的编程模型

1 并发执行 Ascend C和cudnn相似&#xff0c;都是一种多核心编程的范式。想要了解Ascend C&#xff0c;必须得先掌握这种“多核”是怎么实现得。 多核执行&#xff0c;说白了就是使用CPU/GPU/Ascend的物理多核并发去执行一段流程&#xff0c;一般情况下&#xff0c;可以通过以…

商品,订单风控业务梳理二

订单风控流程 业务风控系统

苍穹外卖05-Redis相关知识点

目录 什么是Redis&#xff1f; redis中的一些常用指令 value的5种常用数据类型 各种数据类型的特点 Redis中数据操作的常用命令 字符串类型常用命令&#xff1a; 哈希类型常用命令 列表操作命令 集合操作命令 有序集合操作命令 通用命令 在java中操作Redis 环境…

一些面试题总结(一)

1、string为什么是不可变的&#xff0c;有什么好处 原因&#xff1a; 1、因为String类下的value数组是用final修饰的&#xff0c;final保证了value一旦被初始化&#xff0c;就不可改变其引用。 2、此外&#xff0c;value数组的访问权限为 private&#xff0c;同时没有提供方…

3.3 软件需求:面对对象分析模型

面对对象分析模型 1、对象2、面对对象的软件开发模型3、用例图建模基础3.1 用例图基本符号参与者用例系统执行关联 3.2 用例建模过程3.3 用例图初步3.4 用例图进阶关联Association泛化Inheritance包含Include扩展Extend示例 1、对象 在现实世界中有意义的&#xff0c;与所要解…

「C/C++」C++标准库 之 #include<exception> 异常处理库

✨博客主页何曾参静谧的博客&#x1f4cc;文章专栏「C/C」C/C程序设计&#x1f4da;全部专栏「VS」Visual Studio「C/C」C/C程序设计「UG/NX」BlockUI集合「Win」Windows程序设计「DSA」数据结构与算法「UG/NX」NX二次开发「QT」QT5程序设计「File」数据文件格式「PK」Parasoli…

嵌入式linux中gpio子系统的开发与实现

大家好,今天主要给大家分享一下,如何使用gpio子系统,来控制对应的引脚电平状态与实现。 第一:linux中gpio子系统描述 gpio0:gpio@fdd60000{compatible = "rockchip,gpio-bank";reg = <0x0 0xfdd60000 0x0 0x100>; interrupts = <GIC_SPI 33 IRQ_TYP…

【主机游戏】艾尔登法环游戏攻略

艾尔登法环&#xff0c;作为一款备受好评但优化问题频发的游戏&#xff0c;就连马斯克都夸过 今天介绍一下这款游戏 https://pan.quark.cn/s/24760186ac0b 角色升级 在《艾尔登法环》中&#xff0c;角色升级需要找到梅琳娜。你可以在关卡前废墟的营地附近&#xff0c;风暴关…

大数据面试题--kafka夺命连环问

1、kafka消息发送的流程&#xff1f; 在消息发送过程中涉及到两个线程&#xff1a;一个是 main 线程和一个 sender 线程。在 main 线程中创建了一个双端队列 RecordAccumulator。main 线程将消息发送给双端队列&#xff0c;sender 线程不断从双端队列 RecordAccumulator 中拉取…

出海企业如何借助云计算平台实现多区域部署?

云计算de小白 如需进一步了解&#xff0c;请单击链接了解有关 Akamai 云计算的更多信息 在本文中我们将告诉大家如何在Linode云计算平台上借助VLAN快速实现多地域部署。 首先我们需要明确一些基本概念和思想&#xff1a; 部署多区域 VLAN 为了在多区域部署中在不同的 VLAN …

W55RP20-EVB-Pico评估板介绍

目录 1 简介 2 硬件资源 2.1 硬件规格 2.2 引脚定义 2.3 工作条件 3 参考资料 3.1 RP2040 数据手册 3.2 原理图 ​编辑 原理图 & 物料清单 & Gerber 文件 3.3 尺寸图&#xff08;单位&#xff1a;mm&#xff09; ​编辑 3.4 认证 3.5 参考例程 4 硬件协…

【机器学习】均方误差根(RMSE:Root Mean Squared Error)

均方误差根&#xff08;Root Mean Squared Error&#xff0c;RMSE&#xff09;是机器学习和统计学中常用的误差度量指标&#xff0c;用于评估预测值与真实值之间的差异。它通常用于回归模型的评价&#xff0c;以衡量模型的预测精度。 RMSE的定义与公式 给定预测值 和实际值 …

《计算机原理与系统结构》学习系列——存储器(上)

系列文章目录 目录 存储器技术概要存储器层次cache&#xff0c;内存辅存存储器技术SRAM技术DRAM技术闪存磁盘存储器 局部性原理 高速缓存cache访存性能概念命中与缺失访存阻塞的周期数 cache基础&#xff1a;直接映射块号内存地址字段缺失缺失处理和写策略 全相联映射组相连映…