IP 定位

全球态势感知 IP 定位到经纬度不准确(过时)问题。

之前采用的是开源的全球IP库 - GeoLite2-City,可能存在部分IP对应城市不准确(或过时)问题。
即使是国内的 api 接口,对同一 IP 的解析,结果也可能是不同的城市。不过省级不会出错。
淘宝api:http://ip.taobao.com/service/getIpInfo.php?ip=xxx.xxx.xxx.xxx
百度地图api:http://api.map.baidu.com/location/ip?ip=xxx.xxx.xxx.xxx&ak=开发者账号&coor=bd09ll
这两个接口定位国内 IP 都比 GeoLite2-City 要准确。不过缺点就是:

  • 淘宝api对国外IP地址只能定位到国家级别。(每日查询次数应该是无限制,不需要账号)
  • 百度地图api无法定位国外的 IP 地址。(每日有额度限制,需要开发者账号)
    百度普通账号定位服务使用有查询额度限制。一日十万次,并发100(次/秒)。但也能满足我们的服务要求。


    BDDT.jpg
解决方案

还是根据之前使用的 GeoLite2-City 库,对 IP 进行第一次定位匹配。
如果查询到是国内的地址,再使用百度地图api进行第二次查询,如果查询成功,则使用百度接口提供的经纬度,以提高国内IP定位的准确度。

你可能感兴趣的:(IP 定位)