日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

根据ip地址能查到具体地址吗?

發(fā)布時間:2023/12/29 综合教程 30 生活家
生活随笔 收集整理的這篇文章主要介紹了 根据ip地址能查到具体地址吗? 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

ip地址是根據(jù)每臺電腦網(wǎng)絡(luò)連接點而得到的一個“身份證”,查詢ip地址可以讓我們有效的知道該電腦在哪個位置。

根據(jù)IP地址查詢具體地理位置的方法

百度地圖有根據(jù)IP查詢地址的API

http://lbsyun.baidu.com/index.php?title=webapi/ip-api

1、根據(jù)百度地圖API直接IP查地址

API中說,請求如下兩個地址可以根據(jù)IP獲取具體地址:

請求參數(shù)如下:

若我們請求ip為192.168.1.1的話,那么請求地址構(gòu)造如下:

http://api.map.baidu.com/location/ip?ak=XXX(自己申請的API TOKEN)&ip=192.168.1.1

登錄后復(fù)制

這里采取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)

登錄后復(fù)制

上述代碼大概意思是,請求url讀取返回的流,并將其轉(zhuǎn)化為json格式,結(jié)果如下圖所示:

注意到上圖中,只能看到,四川省成都市這一很大范圍的,而其中的"street"等字段查詢出來是空的。也就是說,只能查詢到一個大概的范圍。

PS:返回來的值中也有經(jīng)緯度,但是根據(jù)原文檔來看,這些經(jīng)緯度是IP所在城市中心點的經(jīng)緯度。

2、先查經(jīng)緯度,根據(jù)經(jīng)緯度查地址。

根據(jù)IP查經(jīng)緯度,百度地圖沒有給出API,但是墻外還是有資源。這里不貼,自己去找吧。。。

假如得到經(jīng)緯度后,可以通過經(jīng)緯度+百度地圖API查詢到詳細地址。

百度地圖的全球逆地址編碼API如下:

http://lbsyun.baidu.com/index.php?title=webapi/guide/webservice-geocoding-abroad

如下圖,假設(shè)我們已經(jīng)獲取到經(jīng)緯度了,按照API上的規(guī)則來說,location參數(shù)后面的就是經(jīng)緯度。根據(jù)經(jīng)緯度,我們能查到詳細地址。

實驗代碼及注釋如下:

#! /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])

登錄后復(fù)制

結(jié)果如下:

這里的地址已經(jīng)很詳細了,只不過沒有詳細的解析,看起來有點亂,要想獲得指定的位置信息,可以參考API。

不過,通常這樣查詢的結(jié)果都不是對的,可能因為是運營商對用戶保密,查出來的地址可能是運營商服務(wù)器的地址,具體是什么未做深究。

以上就是根據(jù)ip地址能查到具體地址嗎?的詳細內(nèi)容,更多請關(guān)注風(fēng)君子博客其它相關(guān)文章!

總結(jié)

以上是生活随笔為你收集整理的根据ip地址能查到具体地址吗?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。