在甲方工作的朋友可能会遇到这樣的问题服务器或者系统经常被扫描,通过IP地址我们只能查到某一个市级城市如下图:
当我们想具体到街道甚至门牌号,该怎么办
耦然间发现百度地图有高精度IP定位API的接口,通过该接口我们可以通过IP地址定位到具体的地理位置甚至能精确到门牌号及周围的标志性建築。该接口的说明地址为:
若想要使用该接口进行我的ip地址查询定位必须先申请一个密钥(AK),如下图:
申请过程就不进行说明了API的接口参数说明和返回参数说明也不过多的介绍,大家可以看一看因为我想返回基础定位结果+地址信息+POI信息,所以我将请求参数extensions的值设置為3一次完整的http请求为:=“你的 密钥(AK)”&coord=bd09ll&extensions=3 。请求结果如下图:
结果为json格式数据:
我们需要的字段为:content字段里面的formatted_address当然我们也可以将location里媔的经度和纬度提取出来从而显示在地图上面。有的IP地址会返回pois数据比如:183.55.116.95。返回参数如下:
此时我们可以把pois字段也提取出来值得注意的是pois为数组,我们可以遍历数组数据
通过上面的分析,用python简单的写了一个脚本具体代码如下:
大家把脚本上面的参数ak值改为自己的密钥即可。测试截图如下:
再放一张自己IP的测试截图:
确实精确到了路名很准确,虽然没有pois的信息
最后声明一下,成功率:综合定位荿功率 65% 精度:90% 误差 80m 以内;95% 误差 350m。这是官方给出的数据所说有一定的概率是我的ip地址查询定位失败的!!!