中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

如何通過IP地址進行精準定位

2018-07-20    來源:編程學(xué)習(xí)網(wǎng)

容器云強勢上線!快速搭建集群,上萬Linux鏡像隨意使用

在甲方工作的朋友可能會遇到這樣的問題,服務(wù)器或者系統(tǒng)經(jīng)常被掃描,通過IP地址我們只能查到某一個市級城市,如下圖:

QQ截圖20161019182710.png

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

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

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

QQ截圖20161019183624.png

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

QQ截圖20161019220405.png

結(jié)果為json格式數(shù)據(jù):

{"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。當(dāng)然我們也可以將location里面的經(jīng)度和緯度提取出來從而顯示在地圖上面。有的IP地址會返回pois數(shù)據(jù),比如:183.55.116.95。返回參數(shù)如下:

{"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":"行政地標(biāo);村莊","location":{"lat":23.082422,"lng":115.465348},
"uid":"18010998377147269119"},{"name":"雙墩村委會","address":"汕尾市海豐縣","tag":"政府機構(gòu);各級政府","location":{"lat":23.083394,"lng":115.465914},"uid":"17661602237861855231"},
{"name":"長聯(lián)塘尾","address":"汕尾市海豐縣","tag":"行政地標(biāo);村莊","location":{"lat":23.081358,"lng":115.467315},"uid":"18010998372852301823"},
{"name":"雙墩小學(xué)","address":"335省道附近","tag":"教育培訓(xùn);小學(xué)","location":{"lat":23.083336,"lng":115.465061},"uid":"17661601958688980991"},
{"name":"大溪頭","address":"汕尾市海豐縣","tag":"行政地標(biāo);村莊","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為數(shù)組,我們可以遍歷數(shù)組數(shù)據(jù)。

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

# -*- coding:utf-8 -*- # author:allen權(quán) import sys import urllib2 import json def get_ip_information(ip):  
url='http://api.map.baidu.com/highacciploc/v1?qcip='+ip+'&qterm=pc&ak='你的密鑰(AK)'&coord=bd09ll&extensions=3'  poiss=''  request = urllib2.Request(url)  
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"]  
address_component=content["address_component"]  formatted_address=content["formatted_address"]  print "該IP地址的具體位置為:"  print address_component["country"]  
print formatted_address  if (content.has_key("pois")):  print "該IP地址附近POI信息如下:"  pois = content["pois"]  for index in range(len(pois)):  
pois_name = pois[index]["name"]  pois_address = pois[index]["address"]  print pois_name, pois_address  else:  print 'IP地址定位失。。。' if __name__ == '__main__':  
get_ip_information('183.55.116.95')

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

QQ截圖20161019221754.png

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

QQ截圖20161019222602.png

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

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

標(biāo)簽: 代碼 服務(wù)器 腳本

版權(quán)申明:本站文章部分自網(wǎng)絡(luò),如有侵權(quán),請聯(lián)系:west999com@outlook.com
特別注意:本站所有轉(zhuǎn)載文章言論不代表本站觀點!
本站所提供的圖片等素材,版權(quán)歸原作者所有,如需使用,請與原作者聯(lián)系。

上一篇:50個安卓開發(fā)者應(yīng)該熟悉的Android Studio技巧和資源

下一篇:APP啟動慢怎么辦,Android官方這樣說