您是否知道Google有一个位置搜索机制如此称呼为“ WiFi Access Point对象”?该功能在文档中详细描述,您可以通过单击aqui进行检查。
这真的很不可思议,不是吗?让我们更多地探索此功能!您是否听说过 BSSID ?该术语也称为基本服务集标识符,似乎很复杂,但实际上足以了解您的Wi-Fi路由器的工作原理。 bssid 是赋予路由器的独家“名称”,允许您的设备在网络上识别它。
想象 BSSID 是您的路由器的地址 Mac 。它在允许您的设备以粗糙而有效的方式连接到它的设备方面起着关键作用。在设备上扫描Wi-Fi网络时,您可以将 bssid 视为字母的组合,否。
为什么这很重要?好吧,了解 bssid 在无线网络上配置或解决问题时可能非常是。它有助于识别您要连接的特定路由器,这可能是在调整配置或解决连接问题时。
因此,从下一次您遇到 bssid 时,请记住它是指Wi-Fi路由器的独家标识符。确保家庭网络或工作场所中稳定且值得信赖的连接的关键要素。如果您想查看周围Wi-Fi路由器的 bssid ,我们为您提供一个简单的命令。关注:
打开终端并键入以下命令:
sudo /System/Library/PrivateFrameworks/Apple80211.framework/Resources/airport -s
使用管理员权限执行上述命令很重要,以确保您可以访问必要的信息。出于保险原因,如果您在没有适当的许可的情况下运行命令,将不会显示BSSIDI。
终端的输出将与此相似:
SSID BSSID RSSI CHANNEL HT CC SECURITY (auth/unicast/group)
"confidencial" XX:5f:67:XX:c5:4d -81 8 Y -- RSN(PSK/AES/AES)
"confidencial" 00:31:92:XX:e7:36 -50 9 Y -- RSN(PSK/AES/AES)
"confidencial" cc:06:XX:db:e2:XX -50 4 Y -- RSN(PSK/AES/AES)
"confidencial" a4:XX:a4:ed:XX:7c -47 2 Y BR WPA(PSK/AES,TKIP/TKIP) RSN(PSK/AES,TKIP/TKIP)
"confidencial" cc:06:77:db:e2:84 -66 36,+1 Y -- RSN(PSK/AES/AES)
"confidencial" 00:31:XX:XX:e7:37 -57 48,-1 Y BR RSN(PSK/AES/AES)
"confidencial", fa:XX:ca:86:ca:96 -26 6 Y -- NONE
"confidencial" a4:6d:a4:XX:33:XX -49 36 Y BR WPA(PSK/AES,TKIP/TKIP) RSN(PSK/AES,TKIP/TKIP)
获得所需的Wi-Fi路由器的 BSSID ,您可以使用Google的API获取精确的地理位置数据。在终端上使用一个简单命令来查看如何执行此操作:
curl --location --request GET 'https://www.googleapis.com/geolocation/v1/geolocate?key=SuaChaveAPIAqui' \
--header 'Content-Type: application/json' \
--data '{
"wifiAccessPoints":[
{
"macAddress": "BSSIDDoRoteadorAqui"
}
]
}'
在继续进行之前,重要的是,在Google Cloud Platform上创建开发人员帐户时,可以将 替换“ suacaveapiaqui” 。确保添加正确的键以确保正确访问âapi。
运行命令时,系统将向Google Geolocation API发送GET请求,并将路由器作为Parano仪表传递 。这将允许Google根据路由器的地理位置信息识别路由器的大致位置。 此外,在分析呼叫示例的结构时,您可以插入Vain地址 Mac wifi以及信号强度。因此,API将使用三角技术来提供更准确的位置。 有趣的是,强调地理定位API还可以根据蜂窝塔ID找到位置。这意味着当未连接到Wi-Fi网络时,您可以获取准确的位置信息。
现在,让我们创建一个代码以使用Golang语言自动化此过程。
按照以下方式:
package main
import (
"bytes"
"encoding/json"
"fmt"
"log"
"net/http"
"os/exec"
"runtime"
"strings"
)
func getWifiMacAddresses() map[string]map[string]string {
var results []byte
var err error
switch runtime.GOOS {
case "darwin":
results, err = exec.Command("/System/Library/PrivateFrameworks/Apple80211.framework/Resources/airport", "-s").Output()
case "windows":
esults, err = exec.Command("netsh", "wlan", "show", "network").Output()
case "linux":
// results, err = exec.Command("iwlist", "scanning").Output()
}
if err != nil {
log.Fatal(err)
}
var macAddr = make(map[string]map[string]string)
lines := strings.Split(strings.TrimSpace(string(results)), "\n")[1:]
for _, line := range lines {
fields := strings.Fields(line)
addr := fields[0]
db := fields[1]
// additional fields if needed
macAddr[addr] = map[string]string{
"signalStrength": db,
}
}
return macAddr
}
func main() {
postjson := make(map[string]interface{})
postjson["wifiAccessPoints"] = []map[string]interface{}{}
hotspots := getWifiMacAddresses()
for addr, info := range hotspots {
signalStrength := info["signalStrength"]
postjson["wifiAccessPoints"] = append(postjson["wifiAccessPoints"].([]map[string]interface{}), map[string]interface{}{
"macAddress": addr,
"signalStrength": signalStrength,
})
}
googleMapsAPIkey := "your_google_maps_api_key"
url := "https://www.googleapis.com/geolocation/v1/geolocate?key=" + googleMapsAPIkey
data, err := json.Marshal(postjson)
if err != nil {
log.Fatal(err)
}
response, err := http.Post(url, "application/json", bytes.NewBuffer(data))
if err != nil {
log.Fatal(err)
}
defer response.Body.Close()
var result map[string]interface{}
json.NewDecoder(response.Body).Decode(&result)
fmt.Println(result)
}
包括£o
在这篇文章中,我们探讨了如何使用GO程序语言来自动获得Mac Wi-Fi地址并利用Google Geolocalization API。通过开发的,可以获取有关Wi-Fi路由器的准确信息并将其发送到API,从而获得近似位置。
我希望我在下一个(: