通過IP地址進行精准定位


可能會遇到這樣的問題,服務器或者系統經常被掃描,通過IP地址我們只能查到某一個市級城市,如下圖:

 

 

 

 

 

 

當我們想具體到街道甚至門牌號,該怎么辦???

偶然間發現百度地圖有高精度IP定位API的接口,通過該接口我們可以通過IP地址定位到具體的地理位置,甚至能精確到門牌號及周圍的標志性建築。該接口的說明地址為:lbsyun.baidu.com/index.php?title=webapi/high-acc-ip

若想要使用該接口進行查詢,必須先申請一個密鑰(AK),如下圖:

 

 

 

 

 

 

申請過程就不進行說明了。API的接口參數說明和返回參數說明也不過多的介紹,大家可以看一看。因為我想返回基礎定位結果+地址信息+POI信息,所以我將請求參數extensions的值設置為3。一次完整的http請求為:api.map.baidu.com/highacciploc/v1?qcip=183.55.116.90&qterm=pc&ak=“你的 密鑰(AK)”&coord=bd09ll&extensions=3 。請求結果如下圖:

 

 

 

 

 

結果為json格式數據:

 

 

 

 

 

我們需要的字段為:content字段里面的formatted_address。當然我們也可以將location里面的經度和緯度提取出來從而顯示在地圖上面。有的IP地址會返回pois數據,比如:183.55.116.95。返回參數如下:

 

 

 

 

 

此時我們可以把pois字段也提取出來,值得注意的是pois為數組,我們可以遍歷數組數據。

通過上面的分析,用python簡單的寫了一個腳本,具體代碼如下:

 1 # -*- coding:utf-8 -*-
 2 
 3 # author:allen權
 4 
 5 import sys
 6 
 7 import urllib2
 8 
 9 import json
10 
11 def get_ip_information(ip):
12 
13 url='http://api.map.baidu.com/highacciploc/v1?qcip='+ip+'&qterm=pc&ak='你的密鑰(AK)'&coord=bd09ll&extensions=3'
14 
15 poiss=''
16 
17 request = urllib2.Request(url)
18 
19 page = urllib2.urlopen(request, timeout=10)
20 
21 data_json = page.read()
22 
23 data_dic = json.loads(data_json)
24 
25 if(data_dic.has_key(\\\\"content\\\\")):
26 
27 content=data_dic[\\\\"content\\\\"]
28 
29 address_component=content[\\\\"address_component\\\\"]
30 
31 formatted_address=content[\\\\"formatted_address\\\\"]
32 
33 print \\\\"該IP地址的具體位置為:\\\\"
34 
35 print address_component[\\\\"country\\\\"]
36 
37 print formatted_address
38 
39 if (content.has_key(\\\\"pois\\\\")):
40 
41 print \\\\"該IP地址附近POI信息如下:\\\\"
42 
43 pois = content[\\\\"pois\\\\"]
44 
45 for index in range(len(pois)):
46 
47 pois_name = pois[index][\\\\"name\\\\"]
48 
49 pois_address = pois[index][\\\\"address\\\\"]
50 
51 print pois_name, pois_address
52 
53 else:
54 
55 print 'IP地址定位失敗!!!'
56 
57 if __name__ == '__main__':
58 
59 get_ip_information('183.55.116.95')

 

 

 

大家把腳本上面的參數ak值改為自己的密鑰即可。測試截圖如下:

 

 

 

 

 

再放一張自己IP的測試截圖:

 

 

 

 

 

確實精確到了路名,很准確,雖然沒有pois的信息。

最后聲明一下,成功率:綜合定位成功率 65% ,精度:90% 誤差 80m 以內;95% 誤差 350m。這是官方給出的數據,所說有一定的概率是查詢失敗的!!!!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM