实用技巧:如何通过IP地址进行精准定位

【实用技巧:如何通过IP地址进行精准定位】在甲方工作的朋友可能会遇到这样的问题,服务器或者系统经常被扫描,通过IP地址我们只能查到某一个市级城市,如下图:

实用技巧:如何通过IP地址进行精准定位


当我们想具体到街道甚至门牌号,该怎么办???
偶然间发现百度地图有高精度IP定位API的接口,通过该接口我们可以通过IP地址定位到具体的地理位置,甚至能精确到门牌号及周围的标志性建筑 。该接口的说明地址为:http://lbsyun.baidu.com/index.php?title=webapi/high-acc-ip
若想要使用该接口进行查询,必须先申请一个密钥(AK),如下图:
实用技巧:如何通过IP地址进行精准定位


申请过程就不进行说明了 。API的接口参数说明和返回参数说明也不过多的介绍,大家可以看一看 。因为我想返回基础定位结果 地址信息 POI信息,所以我将请求参数extensions的值设置为3 。一次完整的http请求为:http://api.map.baidu.com/highacciploc/v1?qcip=183.55.116.90&qterm=pc&ak=“你的密钥(AK)”&coord=bd09ll&extensions=3。请求结果如下图:
实用技巧:如何通过IP地址进行精准定位


结果为json格式数据:
实用技巧:如何通过IP地址进行精准定位


我们需要的字段为:content字段里面的formatted_address 。当然我们也可以将location里面的经度和纬度提取出来从而显示在地图上面 。有的IP地址会返回pois数据,比如:183.55.116.95 。返回参数如下:
实用技巧:如何通过IP地址进行精准定位


此时我们可以把pois字段也提取出来,值得注意的是pois为数组,我们可以遍历数组数据 。
通过上面的分析,用python简单的写了一个脚本,具体代码如下:
实用技巧:如何通过IP地址进行精准定位





大家把脚本上面的参数ak值改为自己的密钥即可 。测试截图如下:
实用技巧:如何通过IP地址进行精准定位


再放一张自己IP的测试截图:
实用技巧:如何通过IP地址进行精准定位


确实精确到了路名,很准确,虽然没有pois的信息 。
最后声明一下,成功率:综合定位成功率 65%,精度:90% 误差 80m 以内;95% 误差 350m 。这是官方给出的数据,所说有一定的概率是查询失败的!!!!

    推荐阅读