如何查询私有IP地址的精准地理位置?附公网IP定位参考代码
关于私有IP地址能否查询精准地理位置的解答
核心结论
不存在通用、公开的通过私有IP地址查询精准地理位置的方法
原因说明
私有IP地址是IANA专门预留用于局域网内部组网的地址段,包括10.0.0.0/8、172.16.0.0/12、192.168.0.0/16三个区间,这类地址不具备全局唯一性,全球不同局域网内的设备可以复用同一个私有IP地址,没有公网层面的统一地址-地理位置映射库,所以不可能通过公开渠道直接查到对应位置。
仅在特殊场景下可实现定位
只有掌握对应网络的管理权限或内部数据时才能完成定位:
- 如果你是目标私有IP所在局域网的管理员,可以通过交换机ARP记录、接入点位登记信息,定位到该IP对应的设备所在的具体楼层、房间
- 如果是运营商CGNAT分配的内网私有IP,只有运营商内部的地址分配日志系统可以查询到对应时间段的公网出口、绑定的用户装机地址,这类信息不对外开放,仅执法部门持正规手续可调取
关于现有代码的说明
你目前编写的公网IP定位代码依赖GeoLiteCity公网IP地址库,仅对公网IP有效,如果传入私有IP地址,调用record_by_addr方法会直接返回空值,无法获得任何定位结果。
import pygeoip import requests my_ip_addr = requests.get('https://api.ipify.org').text gip = pygeoip.GeoIP('GeoLiteCity.dat') res = gip.record_by_addr(my_ip_addr) for key, val in res.items(): print(f'{key} : {val}')
内容的提问来源于stack exchange,提问作者ryan
相关产品推荐
相关产品推荐

