【项目方案】IP地址地理解析方案对比与选型

news2024/11/25 16:30:34

目前,许多项目在用户发布言论时需要解析其 IP 地址,并且在账号管理中也有查看最近登录地的需求。然而,市面上的相关教程通常缺乏全面性,往往只提供一种简单的方法,导致在技术方案选型时难以进行有效的方案对比。本文旨在对常见的 IP 地址地理位置解析方案进行系统化分析和对比,以期为独立开发者或刚接触该领域的开发者提供指导与帮助。


文章目录

  • 1.概述
  • 2.使用场景
  • 3.方案对比
    • 3.1使用谁的库
      • 3.1.1 免费库
      • 3.1.2 商业库
    • 3.2 在线还是离线
      • 3.2.1 在线
      • 3.2.2 离线
    • 3.3 客户端还是服务端
      • 3.3.1 服务端
      • 3.3.2 客户端
    • 3.4 完整方案对比


1.概述

需要明确的是,要想把 IP 地址解析为地理位置,没有什么取巧的方案,毫无例外都是拿一些比较权威的库来对比,从库中查找,有的厂商可能会自己收集 IP 地址与地理位置对应的库,有的厂商会采用保持高频率更新的三方库。对于独立开发者或者小微企业,如果想使用免费的方案,基本都是使用的市面上免费的开放库来比对。

关于这个方案的选型,其实核心就是三点:使用谁的库、在线还是离线、客户端还是服务端

注:本文只做方案对比,并无代码实践,代码实践请看后续文章。

2.使用场景

最容易理解的场景,在抖音、知乎发表一些言论的时候,现在都会显示 IP 地址的归属地,如下图所示:
在这里插入图片描述

再比如,查看账号最近登陆地:

在这里插入图片描述

3.方案对比

使用开源的免费库,不可避免的会出现解析不到、准确率低等问题,因为免费库不会投入那么多人力去维护。
使用商业库一般就不会有这个问题,大都商业版本都会保持高频率的更新,且库本身非常的全面。

3.1使用谁的库

市面上使用最多的免费库就是纯真开源的免费库,且一般的工具大都是基于此免费库来进行。商业库有纯真的、

3.1.1 免费库

可以通过https://www.cz88.net/geo-public申请免费 IP 库的授权。很多 github 项目中也会有一些免费库,大部分都是基于纯真的库再加上用一些免费 API 接口更新部分数据得到的。
在这里插入图片描述

3.1.2 商业库

目前直接售卖库的比较少(估计倒卖是一个问题),且后期更新维护也是一个问题。纯真有精确到省级的离线库,需要付费购买,在阿里云上也有相关的入口:https://market.aliyun.com/apimarket/detail/cmapi00053387#sku=yuncode4738700005

在这里插入图片描述

3.2 在线还是离线

在线就是请求外部的 API 接口来获取地理位置,离线就是将库直接加载进项目里,本地查询。这二者最大的差别就是外部 API 耗时会长且具有不稳定性(虽然商业产品一般会保证其稳定性),离线的方式可以非常快速的做本地内存里的查询,但是要想定位准确,需要每隔一段时间更新一次库。

3.2.1 在线

提供此类 API 的厂商有很多,这里给出高德和纯真的例子:

高德:https://lbs.amap.com/api/webservice/guide/api-advanced/ip

在这里插入图片描述
纯真:https://www.cz88.net/geo
在这里插入图片描述
也有一些免费的方案,例如淘宝:https://ip.taobao.com/。

基本就是给个 IP 地址,它反给你一个地理位置信息。

3.2.2 离线

离线的话需要自己加载整个库到内存中,再基于此构造数据结构加快查询,目前市面上用的比较多的是 ip2region 的方案:https://github.com/lionsoul2014/ip2region,它定义了一套用于快速查询 ip 地址的数据结构,查询速度极快。如果自己有一个库,推荐依据项目中的说明转化成它的 xdb 数据格式,可以直接使用它封装的 java SDK,使用起来也非常便捷。
在这里插入图片描述

3.3 客户端还是服务端

关于放到使用客户端还是服务端,这里会有几种使用方式:

1(完全由服务端生成):服务端解析请求的 ip 地址(可采用同步或者异步的方式)。
2(客户端生成后再请求):客户端在发送请求之前先查询 ip 地址的地理信息,查询完后再请求接口。
3(客户端请求完再解析):客户端在查询展示时,接口返回了当时的 ip 地址,然后客户端再解析展示地理信息。这种只存在理论中的做法,一般不会使用,这样会造成客户端反复解析、暴露 ip 地址的问题。

所以一般默认服务端查询是使用方式 1,客户端查询是使用方式 2。

3.3.1 服务端

如果将查询放到服务端,那么需要考虑查询的效率的问题,如果是请求外部接口,最好采用异步的方式去查询,不影响接口本身。

3.3.2 客户端

如果将查询放到客户端,那么需要防止关键的 API key 被逆向后盗用。对于小程序场景可能还需要合理设计请求的时机,保证不影响主要业务的操作流程。

大部分厂商都有客户端解析 ip 地址的SDK。
纯真:https://www.cz88.net/sdk

在这里插入图片描述

3.4 完整方案对比

方案名称是否付费效率稳定性准确性拓展性
离线免费库+服务端查询免费本地查询,效率极高稳定
离线商业库+服务端查询付费本地查询,效率极高稳定
免费 API+服务端查询免费免费接口,效率低不稳定中(相对免费库来说准确率有所提升)中(一般来说不会怎么维护)
商业 API+服务端查询付费付费接口,效率高,相对本地查询差距很大稳定极高(实时维护)
商业 API+客户端查询付费付费接口,效率高,相对本地查询差距很大稳定极高(实时维护)中(涉及业务变更需要更改客户端逻辑)

ATFWUS 2024-08-14

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

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

相关文章

前端工程化-05.Vue项目开发流程

一.Vue项目开发流程 import是导入模块&#xff0c;而export是导出模块 以.vue结尾的为vue组件文件&#xff0c;是我们Vue项目开发时经常操作的组件 <template>&#xff1a;模板部分&#xff0c;由他生成HTML代码 相当于vue当中的视图部分 <script>&#xff1a;…

C++:缺省参数、函数重载、引用

目录 一、缺省参数 二、函数重载 三、引用 3.1 引用的概念和定义 3.2 引用的特征 3.3 引用的使用 3.4 const引用 3.5 指针和引用的关系 一、缺省参数 • 缺省参数是声明或定义函数时为函数的参数指定⼀个缺省值&#xff0c;在调用该函数时&#xff0c;如果没有指定实参…

数据结构预备知识

目录 1. 什么是集合框架 2. 什么是数据结构 3. 容器背后对应的数据结构 4. 相关java知识 5. 时间复杂度 6. 空间复杂度 7. 包装类 7.1 装箱和拆箱 7.2 阿里面试题&#xff1a; 8. 泛型 8.1 泛型的语法 8.2 泛型怎样编译 9. 泛型的上界 9.1 语法 9.2 泛型方法 1.…

网络通信要素

网络介绍 定义&#xff1a;将具有独立功能的多台计算机通过通信线路和通信设备连接起来&#xff0c;在网络管理软件及网络通信协议下&#xff0c;实现资源共享和信息传递的虚拟平台。 学习网络的目的&#xff1a; 能够编写基于网络通信的软件或程序&#xff0c;通常来说就是网…

CentOS7下制作openssl1.1.1i RPM包并升级

OpenSSL最新漏洞 OpenSSL官方发布了拒绝服务漏洞风险通告&#xff0c;漏洞编号为CVE-2020-1971 漏洞详情 OpenSSL是一个开放源代码的软件库包&#xff0c;应用程序可以使用这个包来进行安全通信&#xff0c;避免窃听&#xff0c;同时确认另一端连接者的身份。这个包广泛被应…

爆了,20w点赞!收好这6个可以一键替换视频人物的AI工具!(建议收藏)

用 AI 一键替换视频中人物角色的玩法&#xff0c;彻底被网友们带火了&#xff01; 前有机器人插秧、机器人做饭做家务的视频&#xff0c;后有机器人打乒乓球、美女踢足球的视频。 这类视频动辄几万、几十万点赞&#xff0c;流量也太猛了&#xff01; 图片可能不太直观&#x…

时空自回归模型(STAR)及 Stata 具体操作步骤

目录 一、引言 二、文献综述 三、理论原理 四、实证模型 五、稳健性检验 六、程序代码及解释 附录 数据预处理 生成时空权重矩阵 一、引言 时空自回归模型&#xff08;Spatial-Temporal Autoregressive Model&#xff0c;简称 STAR&#xff09;在分析具有时空特征的数…

Java填充PDF并返回填充后PDF文件及对应base64码

前期准备 下载PDF编辑工具&#xff08;Adobe Acrobat 9 Pro&#xff09;&#xff1a; 可以主页关注小程序【白哥Java】回复【PDF编辑软件】即可获取 或者直接联系博主也可 主页如下&#xff1a; 软件使用流程 此处流程为文本域流程 图片或其他大致相同 生成模板PDF样式如下&…

Linux命令行参数与环境变量

目录 命令行参数与环境变量 命令行参数 环境变量及其相关概念 环境变量的相关操作 环境变量的本质 命令行参数与环境变量 命令行参数 我们在使用一些Linux的一些指令时&#xff0c;会有意或无意的使用一些指令参数&#xff0c;例如&#xff1a; ls -al ps -ajx gcc -o …

CVE-2024-38077 微软 RDP 漏洞修复 报错 不适用于你的计算机 解决方法

这一漏洞存在于Windows远程桌面许可管理服务&#xff08;RDL&#xff09;中&#xff0c;该服务被广泛部署于开启Windows远程桌面&#xff08;3389端口&#xff09;的服务器&#xff0c;用于管理远程桌面连接许可&#xff0c;也有文章认为该漏洞实际利用的是135端口。攻击者无需…

【大模型】多模态的原理简述

多模态的原理 多模态模型目前基本就是文生图、图生图、图生视频、文生视频这些&#xff0c;其底层逻辑其实还是先从生图片这一源头。因为毕竟视频也是若干帧的图片组成。 所以在生图片的这个环节上&#xff0c;我们把比较火的这个stablediffusion用的这个diffusion扩散模型理…

企业大数据治理管理平台解决方案(33页PPT)

方案介绍&#xff1a; 本解决方案旨在为企业提供一套从数据采集、存储、处理、分析到应用的全链条大数据治理管理平台。该平台通过集成先进的数据技术和管理理念&#xff0c;帮助企业实现数据的全生命周期管理&#xff0c;提升数据质量&#xff0c;降低数据风险&#xff0c;促…

PX4-Autopolite linux环境下源码编译中遇到的一些问题及相应解决办法

最近在做一个PX4飞控移植的项目&#xff0c;第一次接触到PX4源码&#xff0c;真的是感觉编译起来非常的麻烦&#xff0c;下面我将介绍几个新手比较容易踩坑的点。 &#xff08;我都踩了ㄒ-ㄒ&#xff09; 1.PX4源码要用git clone 从github上克隆来&#xff0c;千万不要直接在g…

谷粒商城实战笔记-170~172-缓存-SpringCache

文章目录 一&#xff0c;170-缓存-SpringCache-自定义缓存配置二&#xff0c;171-缓存-SpringCache-CacheEvict1&#xff0c;删除多个缓存2&#xff0c;删除一个缓存 三&#xff0c;172-缓存-SpringCache-原理与不足 一&#xff0c;170-缓存-SpringCache-自定义缓存配置 上一节…

中国对世界各国的进出口面板数据(2000-2022年)

中国作为全球最大的贸易国之一&#xff0c;其对各国的进出口数据不仅量级庞大&#xff0c;而且蕴含着丰富的经济信息与趋势动向&#xff0c;对于研究全球经济互动、国际贸易格局、产业链分布以及中国自身经济的发展策略具有一定价值。例如&#xff0c;近年来的数据表明&#xf…

对接的广告平台越多,APP广告变现的收益越高?

无论是游戏、社交、工具应用类APP还是泛娱乐类APP&#xff0c;流量变现的方式主要有广告、内购、订阅三种方式。其中&#xff0c;广告变现是门槛最低、适用最广的变现方式。 只要APP有流量&#xff0c;就可以进行广告变现&#xff0c;让APP的流量快速转化为商业价值。作为最常…

什么是张量

张量的基础概念 学习使用pytorc库进行深度学习网络搭建时&#xff0c;张量这个词总是不定时会出现。其实&#xff0c;Pytorch中的所有操作都是在张量的基础上进行的&#xff0c;今天就来了解张量到底是什么 由PyTorch官网官网介绍可知&#xff0c;一个Tensor是一个包含单一数据…

软件测试自学三个月,进了一家自研薪资11k,面试总结分享给大家

功能方面&#xff1a;问得最多的就是测试流程&#xff0c;测试计划包含哪些内容&#xff0c;公司人员配置&#xff0c;有bug开发认为不是 bug怎么处理&#xff0c;怎样才算是好的用例&#xff0c;测试用例设计方法&#xff08;等价类&#xff0c;边界值等概念方法&#xff09;&…

DVWA靶场配置相关问题解决

本文主要提到鄙人在DVWA配置过程中所遇到的问题&#xff0c;以及我的解决方式&#xff0c;希望会帮到大家&#xff01; 首先&#xff0c;我使用的是windows版本&#xff0c;运用的是小皮搭建&#xff0c;前期准备可参考&#xff1a;【靶场搭建】超级详细——DVWA靶场搭建&…

springboot美术馆管理系统--论文源码调试讲解

第2章 开发环境与技术 本章节对开发美术馆管理系统管理系统需要搭建的开发环境&#xff0c;还有美术馆管理系统管理系统开发中使用的编程技术等进行阐述。 2.1 技术路线 在美术馆管理系统中常用的技术方案如下所展示&#xff1a; 针对已有的购物中心&#xff0c;系统结构为B…