在甲方工作的朋友可能会遇到这样的问题,服务器或者系统经常被扫描,通过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格式数据:

1
{"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。返回参数如下:

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

此时我们可以把pois字段也提取出来,值得注意的是pois为数组,我们可以遍历数组数据。

通过上面的分析,用Python简单的写了一个脚本,具体代码如下:

1
# -*- coding:utf-8 -*- # author:allen权 import sys import urllib2 import json def get_ip_information(ip):
1
url='http://api.map.baidu.com/highacciploc/v1?qcip='+ip+'&qterm=pc&ak='你的密钥(AK)'&coord=bd09ll&extensions=3' poiss='' request = urllib2.Request(url)
1
page = urllib2.urlopen(request, timeout=10)  data_json = page.read()  data_dic = json.loads(data_json) if(data_dic.has_key("content")):  content=data_dic["content"]
1
address_component=content["address_component"]  formatted_address=content["formatted_address"]  print "该IP地址的具体位置为:" print address_component["country"]
1
print formatted_address  if(content.has_key("pois")):  print "该IP地址附近POI信息如下:" pois = content["pois"forindex inrange(len(pois)):
1
pois_name = pois[index]["name"]  pois_address = pois[index]["address"]  print pois_name, pois_address  else:  print 'IP地址定位失败!!!'if __name__ == '__main__':
1
get_ip_information('183.55.116.95')

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

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

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

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

原文链接:http://www.phpxs.com/post/5433/

如何通过IP地址进行精准定位相关推荐

  1. 安警官的IP地址是怎样定位到莽村附近的?

    要说最近大火的电视剧非<狂飙>莫属.电视剧<狂飙>自开播以来,一举超过<三体><去有风的地方>等先播电视剧,收视率一路"狂飙",牢牢 ...

  2. ip地址怎么精确定位 手机如何改ip地址位置

    ip地址精确定位 方法一 IP地址查询服务:使用在线的IP地址查询服务,如ip138.com.ip2location.com等,输入要查询的IP地址,系统将返回精确到地理位置的相关信息,包括国家.地区 ...

  3. 如何查找你的IP地址?通过IP地址能直接定位到你家!

    我们ip地址分为A.B.C.D.E共5类,每一类地址范围不同,从A到Eip地址范围依次递减,其中哦,D和E是保留地址,我们用不了.A.B.C3类地址很多都被美国这样的西方国家分走了,而留给我们的就剩有 ...

  4. php 通过 ip地址 进行城市定位

    ip城市定位新浪接口: /*** 新浪ip 地址获取城市信息*///根据ip 地址获取所在城市信息function getIPLoc_sina($queryIP){$url = 'http://int ...

  5. 通过ip地址实现城市定位

    博客    http://blog.csdn.net/jxlicai/article/details/16933497

  6. GPS定位与IP地址定位有何不同?

    随着数字化时代到来,智能终端快速普及与应用,人们在生活和工作中越来越多地应用到位置服务,从导航查询,到侦查搜救,位置核验等应用十分广泛.万物互联的到来,更是对位置服务的要求日益提高,而位置服务的核心要 ...

  7. GPS定位与IP地址定位

    在日常生活中,常用的定位技术包括GPS定位.基站定位与IP地址定位​.WIFI定位. 关于GPS定位 GPS(Global Positioning System,全球定位系统)起始于1958年美国军方 ...

  8. 如何利用IP地址实现在线广告精准投放,只需1个公式

    ​​​随着时代的发展和进步,传统媒体已不再是企业投放广告的唯一选择,网页以及移动端成为"新高地".但根据权威的第三方市场研究机构的研究报告来看:电梯广告在促进广告销售效果方面位列第 ...

  9. 彻底明白IP地址如何计算相关地址【收藏】

    通过IP地址和子网掩码与运算计算相关地址,知道ip地址和子网掩码后可以算出: 1. 网络地址 2. 广播地址 3. 地址范围 4. 本网有几台主机 例1:下面例子IP地址为192·168·100·5 ...

最新文章

  1. k8s 通用的java项目迁移流程
  2. JavaFX Button和Scene点击事件代码示例
  3. HDU odd-even number 数位dp
  4. 什么是MongoDB
  5. free store VS heap(自由存储区VS堆)
  6. 异地多活设计辣么难?其实是你想多了!
  7. HIve的概念,发展,历史,部署,入门,加载数据
  8. 没事学学docker(三):配置阿里云镜像加速以及解决docker起不来的问题
  9. sql 孩子兄弟表示法 所有子节点_数据结构,二叉树遍历,孩子兄弟表示法,算法设计题...
  10. NO.6 计算数组中存在重复元素 II
  11. 圈圈教你玩USB(第二版) 笔记
  12. oracle密码过期处理方法
  13. 如何通过努力出书,如何写有畅销资质的书,本文汇集了多位计算机图书作者的经验
  14. 数学之美笔录(3):隐含马尔可夫模型(详解)
  15. ios输入框被软键盘遮住问题
  16. Oracle 递归查询SQL
  17. PHP中文乱码的三个原因及解决方法
  18. 自然语言处理之词性标注
  19. 当代人工智能复习2022
  20. jenkins安装github插件后还是找不到 Build when a change is pushed to GitHub

热门文章

  1. 【OpenCV】基于ResNet和Caffe模型的图像分类
  2. Emacs Lisp 功能扩展集锦
  3. pb系统的twap交易指令_量化交易系统开发技术案例丨量化交易开发源码平台
  4. 【EI会议】2022年国际土木与海洋工程联合会议(JCCME 2022)
  5. 欧盟CE玩具EN71认证是什么?
  6. Wi-Fi感知应用逐步进入实际生活---乐鑫公司推出的ESP-WIFI-CSI智能人体感知方案
  7. 软件项目角色指南 - 人民邮电出版社 - 免费电子书下载
  8. 【数据可视化】-数据下钻
  9. 边玩边学,13个Python小游戏(含源码)
  10. 开学宿舍必备物品清单,这些宿舍好物你要知道