IP 归属地能查到什么精度:为什么只到国家
IP 归属地的精度被两件事限制:数据本身只到运营商分配的地址块,而地址块对应的是机房出口,不是用户住址。所以「IP 查城市」天生是概率性的,同一个出口后面可能是整片城区甚至跨市。只查国家是这个精度下唯一可靠的答案。
为什么城市级定位不可靠
- 运营商出口集中。一个城市可能有几个出口机房,用户的实际位置与出口位置相差几十公里很常见。
- 移动网络更差。4G/5G 的出口随核心网调度变化,同一部手机一天内可能落到不同城市的出口。
- 代理与 CDN。用了代理,看到的就是代理的地址;企业专线也可能从总部出口出去。
- 库的更新滞后。地址块会重新分配,商业库也有几个月到一年的滞后。
所以把 IP 归属地当「用户所在城市」做业务判断(比如按城市推送内容、判断合规区域)是不可靠的。它能做的是粗粒度判断:国内 / 国外。
本地库是怎么工作的
库是一份按起始地址排序的 IPv4 区间表,每条记录一个区间和一个国家编号。查询就是「找最后一条 start ≤ 目标 IP 的记录」——典型的二分查找,几十万条记录也只要十几次比较。
关键设计是区间无缝铺满整个 IPv4 空间:未收录的段也有一条编号 0 的记录,这样每条记录只需要存起点、不需要存终点,二分的结果一定落在某条记录上,不会出现「查不到」的分支。
为什么能在浏览器里查而不上传
库是放在本站的静态二进制文件,三个定长文件:索引、区间、国家名。页面用 Range 请求只取需要的那一小段(约 9KB),在浏览器里做二分,服务端不为此跑任何进程。
定长是关键:能按偏移直接取记录,不用把 2.9MB 全下下来。所以你输入的地址不会发给任何第三方,也不会出现在请求参数里。
库取不到时会怎样
页面会优雅降级:查询条禁用并提示「国家库在当前网络不可用」,而不是把 404 甩给用户。此时你自己的 IP 归属仍然正常显示——那个值由服务端直接给出,不依赖浏览器下载库。
只支持 IPv4。输入 IPv6 会明确提示暂不支持,不会返回一个猜测的结果。
上面这些都不用装软件,也不用注册:打开页面就能用。
打开公网 IP 查询 →常见问题
为什么查不到我的城市?
这个站只提供国家 / 地区,不提供城市。原因写在页面上:城市级定位是概率性的,且城市库体积大、必须先下载才能查,会拖慢首屏。需要城市级结果请用商业 IP 库,并自行评估误差。
内网 IP 能查归属吗?
不能。192.168.x.x、10.x.x.x 这类地址没有公网归属,页面会如实显示未知,而不是猜一个结果。
库多久更新一次?
跟国家库的月度更新一起跑。派生库从同一份源数据打包,所以页面显示、接口输出、闸门判据三条路用的永远是同一份数据,不会出现「接口说 CN、页面显示别的」。