很多时候需要查询IP归属地,比如查看网站后台访问日志,获取访客IP之后,想定位访客所在城市。或是更换宽带线路之后,确认运营商分配IP标记的地域信息。也有刷社交平台时看到评论附带IP属地:广东,想弄清楚这个属地是如何计算得出。这类场景本质都是通过IP地址,反向查询它注册或是分配对应的地理位置。
网页查询工具上手最简单。搜索引擎检索IP查询,靠前的站点都可以直接使用。输入IP地址提交查询,返回结果一般包含国家、省份、城市和运营商信息。ip138、ip.cn属于老牌查询站点,界面简洁,无需注册,偶尔查询足够使用。ipip.net的查询结果粒度更细,国内免费查询工具里城市级准确度表现不错,后台持续维护IP数据库。查询自身出口IP,直接访问ip.cn或者百度搜索我的IP,页面会自动展示当前出口IP以及归属地。

命令行也可以完成IP查询,不用打开浏览器。Linux和macOS终端执行curl ipinfo.io/8.8.8.8,返回JSON格式数据,包含城市、地区、国家、运营商等字段。ipinfo.io免费额度足够个人日常使用,不用填写密钥,高频查询会触发访问限制。想要更换数据源,可以执行curl ip-api.com/json/8.8.8.8,返回数据结构相近,字段名称有差异,看个人使用习惯。Windows PowerShell调用Invoke-RestMethod也能发送同类请求,效果一致。
批量查询,或是需要把查询能力嵌入自定义脚本,适合使用API接口。高德地图、百度地图都开放IP定位接口,申请开发者key之后,按规范发送请求,可以拿到结构化省市区信息。这类接口优势是和地图数据打通,拿到经纬度之后可以直接在地图上标记位置。MaxMind的GeoLite2数据库是另一种方案,IP段和地理位置映射关系打包成本地文件,下载到本地之后程序读取,全程不需要联网。纯真IP库也就是QQWry.dat,国内使用广泛,文件格式偏老旧但数据完整,不少老牌查询工具底层都基于这个库。离线数据库的短板在于需要手动更新数据包,不像在线API可以实时更新。
查询本机IP归属和查询他人IP不是一回事。查询本机很简单,工具会直接返回出口IP。查询其他人IP,前提是你能够获取到对方IP。网站管理员通过访问日志获取访客IP,这是最直接的获取途径。普通用户在社交平台看到的IP属地标签,是平台解析访客出口IP之后展示,普通人无法拿到原始IP,只能查看平台给出的属地结果。微信、QQ聊天窗口不会展示对方IP,群聊同样不提供,属于平台层面隐私保护,和查询工具本身无关。
IP属地查询存在精度上限,这点要提前了解。绝大多数免费工具只能定位到城市级别,无法精确到更小范围。同一座城市内,不同小区、基站分配的IP,可能标记在同一个城市,也有可能归属相邻城市。动态IP波动更大,今天查询归属A城市,重新拨号之后IP发生变化,属地就会变更。使用代理、VPN,查询得到的地址是代理服务器位置,并不是用户真实所处地点。企业专线也存在类似情况,公司注册地址在A城市,办公地点在B城市,IP库大多会按照注册地址标记。所以查询结果显示广东,不能判定访客就在广州;属地标注北京,也不等于访客位于朝阳区。
IPv6地址同样支持归属地查询,但各类工具支持程度参差不齐。部分网页查询框只兼容IPv4格式,粘贴IPv6地址会提示格式错误。ipip.net、ipinfo.io支持IPv6查询,命令行工具一般也可以正常使用。IPv6的归属数据相比IPv4更少,查询精度通常只能到省份。
IP属地查询本身不难,但使用时要有边界。查询本机IP判断网络状态,查看网站日志识别可疑访客来源,属于常规运维操作。依靠IP去反查他人详细住址,或者尝试依靠IP定位到个人,技术上无法实现,同时不符合法律规定。IP数据库记录的信息只是IP段分配的大致区域,不能定位到具体街道。把预期调整合理,使用这类工具就不会产生偏差。