首頁 > 常見問題 > 主體

根據ip位址能查到具體位址嗎?

青灯夜游
發布: 2022-01-12 15:03:54
原創
117261 人瀏覽過

根據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 request
import json

# ak is bound with ip
baidu_api_ak = "ZX9QCmwzzItzRO5ssD7GNgEwD4OQduWR"
ip_addr = "xxx.xxx.xxx.xxx"
# Request url
url = "http://api.map.baidu.com/location/ip?ak=" + baidu_api_ak + "&ip=" + ip_addr
req = request.Request(url)
res = request.urlopen(req)
res = res.read()
# Bytes to str
n = res.decode(encoding='utf-8')
# str to json
s = 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-8

from urllib import request
import json

# ak is bound with ip
baidu_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_ak
req = 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: XXXX
result = st["result"]
for i in result:
    print(i, result[i])
登入後複製
###結果如下:##############這裡的位址已經很詳細了,只不過沒有詳細的解析,看起來有點亂,要想獲得指定的位置信息,可以參考API。 ######不過,通常這樣查詢的結果都不是對的,可能因為是運營商對用戶保密,查出來的地址可能是運營商伺服器的地址,具體是什麼未做深究。 ###

以上是根據ip位址能查到具體位址嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!