手机如何查看当前IP地址的详细地理位置(免费IP地理位置查询使用)

手机如何查看当前IP地址的详细地理位置(免费IP地理位置查询使用)

admin 2025-11-07 主营业务 24 次浏览 0个评论
免费IP地理位置查询使用

查询ip地理位置的具体用途,不是人为自嗨,比如说:

网站的用户分布地网络攻击的地址来源游戏加速器,需要知道服务器地址,然后在地址附近搭建加速服务器

免费方案获取的ip地理位置准确度不是很好,表现如下

国家基本不会变省份基本不会变城市小概率会变

免费方案通常是月更,甚至不更新,无法满足实时的ip地理位置变更,通常来说实时的需求很少,网站的用户分布这种需求通常是来糊弄人,本身对准确度就不高,如果是警察抓小偷这种准确度就要求很高了,这是可以采用付费方案。

付费方案为啥准,平时使用百度淘宝之类的app,它们会获取我们的ip和地理位置上报到服务器,你不同淘宝不代表我不用,今天不用不代表明天不用,总有机会获取准确信息。如何蹭百度的付费接口,直接打开百度搜索ip就有ip查询的入口,直接蹭即可。

免费方案推荐:

ip2location,获取全球的ip地址库,位置信息是英文,需要额外的工具转换成中文纯真ip社区版(2024/10月停止维护),记录全球的ip,位置信息是中文

上述两种方案均支持使用java代码直接查询,通常使用纯真ip就够用了,要是喜欢洋炮那也没辙,如同我idea就是喜欢英文版,以前使用idea默认就是英文版,现在压根改不过来。

ip2location使用

下载地址,https://lite.ip2location.com/database-download。ip2location需要提前注册,可以使用gmail或者github进行登录,就能下载免费的最新地址库。j

java依赖库 implementation "com.ip2location:ip2location-java:8.12.4"。

注意里面的结果是英文,不是中文,需要额外的工具转换成中文,如果是代码直接使用下载bin文件,如果是需要同步到数据下载csv文件。

// ip2location 使用系统提供的api + 对应的bin文件 查询ippublic void readIp2(String ip) throws Exception{ IP2Location ip2Location = new IP2Location(); ip2Location.Open("***.bin"); // 结果 IPResult ipResult = ip2Location.IPQuery(ip);}

纯真数据库社区版本

社区版本停止维护了(最后版本是2024/10),可以从github上下载一份,地址 https://github.com/FW27623/qqwry。

java依赖,implementation("com.github.hiwepy:qqwry-spring-boot-starter:3.3.x.20241003.RELEASE") ,这个依赖里面就带了一份dat文件,就是不下载dat文件也是可以直接使用。

public void readWry(String ip) throws Exception{ // 系统内置了dat文件 可以不用下载dat文件 QQWry wry = new QQWry(); // 结果 IPZone ip1 = wry.findIP(ip);}

ip记录格式说明

如果需要将ip导入到数据里面,那么需要提前知道存储的格式:

ip不是逐个记录,而是按照区间记录,比如说[a,b]这里面所有ip均在这个地区,弊端在于没法直接更新数据库,只能重新录入ip本身就是一个32位的数字,只是为了方便记忆才写成192.168.10.20这种格式关于mysql和postgresql的一些差别

期间将ip存放到了数据库,两个库总共有400w的数据,顺手对比mysql和postgresql。

在测试过程中发现的一些问题:

使用navicat测试和代码进行测试,效果是不一样的,navicat需要30s在代码中就只需要8s左右区间查询mysql基本上是不走索引,可以使用force index来强制索引,效率会高一点limit 1 貌似不会带来性能提升

简单表结构

start_ip 开始ipend_ip 结束ip

给这两个字段加了聚合索引,确保查询均有索引支撑,因为均在同一台机器上,机器配置不高,数值仅供参考,在高性能的机器上结果必然会更好,就很难发现差距。

测试内容(结果)如下

精准查询,基本都是1-2ms,比如 start_ip = 12345这种区间查询,mysql速度在50ms-7000ms左右,取决于查询ip的大小,越大越慢(跟索引升序有关),psql在200ms左右。如果psql删掉索引,速度在500ms左右

个人的观点是,如果是精准查询,日常开发的大部分场景都是这种,两者速度差不多都非常快。如果是区间多字段查询,其实已经开始脱离索引了,mysql就开始慢了,而psql就比较快而且稳定。地表最强的数据库oracle不用索引也很快,虽然没有正儿八经的使用过,psql不用索引也快就非常强了。

mysql作为大量使用的开源数据库,并不比psql差太多,只是mysql非常依赖索引,如果索引没有或者接近没用就表现的很拉跨,当然一张表就几千条数据,用不用索引都无所谓,不需要过度捧psql而去贬低mysql,毕竟oracle才是霸主,如同我们日常贬低吕布人品一样,但是他战斗力是真的猛,不需要为了黑而黑。日常开发中大部分遇到mysql瓶颈基本都是人为的假如的,就像那些搞渗透教学的,大部分是自己搭建靶场。你说有没有一种可能,平时遇到的瓶颈是机器性能不足导致的,提升配置就是很好的优化。

psql比mysql强大,但是mysql不是垃圾,除了基本的curd语法通用之外,其他的语法是有差别的,比如创建索引之类的,切莫一股脑的从mysql切换到psql。

转载请注明来自海坡下载,本文标题:《手机如何查看当前IP地址的详细地理位置(免费IP地理位置查询使用)》

每一天,每一秒,你所做的决定都会改变你的人生!

发表评论

快捷回复:

评论列表 (暂无评论,24人围观)参与讨论

还没有评论,来说两句吧...