跟大家講解下有關根據ip地址能查到具體地址嗎,相信小伙伴們對這個話題應該也很關注吧,現在就為小伙伴們說說根據ip地址能查到具體地址嗎,小編也收集到了有關根據ip地址能查到具體地址嗎的相關資料,希望大家看到了會喜歡。
根據ip地址是能查到具體地址的;ip地址是根據每臺電腦網絡連接點而得到的一個“身份證”,查詢ip地址可以讓我們有效的知道該電腦在哪個位置。
ip地址是根據每臺電腦網絡連接點而得到的一個“身份證”,查詢ip地址可以讓我們有效的知道該電腦在哪個位置。
根據IP地址查詢具體地理位置的方法
百度地圖有根據IP查詢地址的API
http://lbsyun.baidu.com/index.php?title=webapi/ip-api
1、根據百度地圖API直接IP查地址
API中說,請求如下兩個地址可以根據IP獲取具體地址:
請求參數如下:
若我們請求ip為192.168.1.1的話,那么請求地址構造如下:
http://api.map.baidu.com/location/ip?ak=XXX(自己申請的API TOKEN)&ip=192.168.1.1這里采取Python為實驗語言,代碼及注釋如下:
from urllib import requestimport json# ak is bound with ipbaidu_api_ak = "ZX9QCmwzzItzRO5ssD7GNgEwD4OQduWR"ip_addr = "xxx.xxx.xxx.xxx"# Request urlurl = "http://api.map.baidu.com/location/ip?ak=" + baidu_api_ak + "&ip=" + ip_addrreq = request.Request(url)res = request.urlopen(req)res = res.read()# Bytes to strn = res.decode(encoding='utf-8')# str to jsons = json.loads(n)t = json.dumps(s, ensure_ascii=False)print(n)print(t)上述代碼大概意思是,請求url讀取返回的流,并將其轉化為json格式,結果如下圖所示:
注意到上圖中,只能看到,四川省成都市這一很大范圍的,而其中的"street"等字段查詢出來是空的。也就是說,只能查詢到一個大概的范圍。
PS:返回來的值中也有經緯度,但是根據原文檔來看,這些經緯度是IP所在城市中心點的經緯度。
2、先查經緯度,根據經緯度查地址。
根據IP查經緯度,百度地圖沒有給出API,但是墻外還是有資源。這里不貼,自己去找吧。。。
假如得到經緯度后,可以通過經緯度+百度地圖API查詢到詳細地址。
百度地圖的全球逆地址編碼API如下:
http://lbsyun.baidu.com/index.php?title=webapi/guide/webservice-geocoding-abroad
如下圖,假設我們已經獲取到經緯度了,按照API上的規則來說,location參數后面的就是經緯度。根據經緯度,我們能查到詳細地址。
實驗代碼及注釋如下:
#! /usr/bin/env python# coding=utf-8from urllib import requestimport json# ak is bound with ipbaidu_api_ak = "ZX9QCmwzzItzRO5ssD7GNgEwD4OQduWR"url = "http://api.map.baidu.com/geocoder/v2/?callback=renderReverse&location=30.6667,104.0670&output=json&pois=1&ak=" + baidu_api_akreq = request.Request(url)res = request.urlopen(req)res = res.read()n = res.decode(encoding='utf-8')# The result format is renderReverse&&renderReverse(json str). so....n = n[len("renderReverse&&renderReverse") + 1:-1]st = json.loads(n)# st's structure# result: XXXX# status: XXXXresult = st["result"]for i in result: print(i, result[i])結果如下:
這里的地址已經很詳細了,只不過沒有詳細的解析,看起來有點亂,要想獲得指定的位置信息,可以參考API。
不過,通常這樣查詢的結果都不是對的,可能因為是運營商對用戶保密,查出來的地址可能是運營商服務器的地址,具體是什么未做深究。
以上就是根據ip地址能查到具體地址嗎?的詳細內容,更多請關注php中文網其它相關文章!
來源:php中文網