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

*本文原创作者:allen权,转载须注明来自FreeBuf.COM

在甲方工作的朋友可能会遇到这样的问题,服务器或者系统经常被扫描,通过IP地址我们只能查到某一个市级城市,如下图:

当我们想具体到街道甚至门牌号,该怎么办???

偶然间发现百度地图有高精度IP定位API的接口,通过该接口我们可以通过IP地址定位到具体的地理位置,甚至能精确到门牌号及周围的标志性建筑。该接口的说明地址为:http://lbsyun.baidu.com/index.php?title=webapi/high-acc-ip

若想要使用该接口进行查询,必须先申请一个密钥(AK),如下图:

申请过程就不进行说明了。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 。请求结果如下图:

结果为json格式数据:

{"content":{"location":{"lat":23.06588,"lng":115.404586},"locid":"925a2a9e3ac5be1cf003afd23c344ab3","radius":30,"confidence":0.5,"address_component":{"country":"中国","province":"广东省","city":"汕尾市","district":"海丰县","street":"新平路","street_number":"","admin_area_code":441521},"formatted_address":"广东省汕尾市海丰县新平路","business":"公平"},"result":{"error":161,"loc_time":"2016-10-19 21:53:28"}}

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

{"content":{"location":{"lat":23.082367,"lng":115.466276},"locid":"3fb96555906fff3100ff21119142ccd5","radius":30,"confidence":1.0,"address_component":{"country":"中国","province":"广东省","city":"汕尾市","district":"海丰县","street":"S335","street_number":"","admin_area_code":441521},"formatted_address":"广东省汕尾市海丰县S335","pois":[{"name":"双墩村","address":"汕尾市海丰县三三五省道","tag":"行政地标;村庄","location":{"lat":23.082422,"lng":115.465348},"uid":"18010998377147269119"},{"name":"双墩村委会","address":"汕尾市海丰县","tag":"政府机构;各级政府","location":{"lat":23.083394,"lng":115.465914},"uid":"17661602237861855231"},{"name":"长联塘尾","address":"汕尾市海丰县","tag":"行政地标;村庄","location":{"lat":23.081358,"lng":115.467315},"uid":"18010998372852301823"},{"name":"双墩小学","address":"335省道附近","tag":"教育培训;小学","location":{"lat":23.083336,"lng":115.465061},"uid":"17661601958688980991"},{"name":"大溪头","address":"汕尾市海丰县","tag":"行政地标;村庄","location":{"lat":23.090326,"lng":115.465995},"uid":"18010998368557334527"}],"location_description":"双墩村东104米"},"result":{"error":161,"loc_time":"2016-10-19 22:03:31"}}

此时我们可以把pois字段也提取出来,值得注意的是pois为数组,我们可以遍历数组数据。通过上面的分析,用python简单的写了一个脚本,具体代码点击阅读原文可见。

大家把脚本上面的参数ak值改为自己的密钥即可。测试截图如下:

再放一张自己IP的测试截图:

确实精确到了路名,很准确,虽然没有pois的信息。

最后声明一下,成功率:综合定位成功率 65% ,精度:90% 误差 80m 以内;95% 误差 350m。这是官方给出的数据,所说有一定的概率是查询失败的!!!!

*本文原创作者:allen权,未经许可禁止转载

原文发布于微信公众号 - FreeBuf(freebuf)

原文发表时间:2016-10-26

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏林德熙的博客

win10 uwp ping

有时需要进行 ping ,但是ms没有给一个类可以进行 ping 本文:如何使用 ping

11910
来自专栏阮一峰的网络日志

一些新闻媒体的全文Feed

订阅Feed的时候,最烦恼的是有些Feed只输出摘要,必须点击到原始网页上才能看到全文。如果原始网页被屏蔽了,那就更麻烦了。

28540
来自专栏源哥的专栏

基于linux的嵌入IPv4协议栈的内容过滤防火墙系统(2)-概要引言

概要:在Linux系统下,具有图形界面的防火墙系统很少,而包含内容过滤的防火墙系统更可以说是少之又少,本程序不仅具有防火墙功能,而且可以对rar、zip压缩格式...

7430
来自专栏FreeBuf

系统清理工具CCleaner后门事件后续:黑客删除服务器内容,Avast 公布受感染公司名单

Avast 公司的威胁情报小组今天发布了上周 CCleaner 后门事件的新细节。 研究显示,CCleaner 黑客用于存储受感染主机数据的数据库空间不足,因此...

326100
来自专栏Java学习123

基于python的终端天气查询

39360
来自专栏腾讯云安全的专栏

云服务首要威胁分析:用户如何保护自己的资产?

随着云计算技术的逐渐成熟,云服务凭借高效的管理模式、便捷的使用方式和灵活的付费方式受到了企业、政府、个人用户的青睐。然而,巨大的市场背后也对云服务商的运营、...

20020
来自专栏维恩的派VNPIE

spreadTrading模块事件触发机制

本文主要介绍了价差交易模块的事件触发机制。感谢‘次第花开’和‘用户名呀’在维恩的派论坛里的分享!

25720
来自专栏跨界架构师

分布式系统中的必备良药 —— 全局唯一单据号生成

  我们作为一个软件系统,肯定到处充满着各种单据,也必然需要有各种单据号与之对应。比如:电商行业的订单号、支付流水号、退款单号等等。SCM的采购单号、进货单号、...

20220
来自专栏FreeBuf

2015年数据库漏洞威胁报告

互联网就像空气,彻底的融入我们的生活之中。因此我们愈发习惯把越来越多的数据保存在网上以换取更便捷的服务。不过,随之而来的安全事件无不让人触目惊心。 回忆2015...

25070
来自专栏全华班

支付宝/微信/银联详细代码案例

https://pan.baidu.com/s/1v_Lg4tf1-iI10n-hHdFf_A

23910

扫码关注云+社区

领取腾讯云代金券