нам понадобится: ключ доступа к api, любая актуальная wifi точка любой локации.
Ключ доступа берем из исходников firefox - качаем себе с гитхаба репозиторий mozilla/gecko-dev, распаковываем и поиском по всем файлам находим MOZ_GOOGLE_LOCATION_SERVICE_API_KEY":"AIzaSyB2h2OuRcUgy5N-5hsZqiPW6sH3n_rptiQ".
для запроса создадим JSON файл test.json
Код:
Скопировать в буфер обмена
{
"considerIp": false,
"wifiAccessPoints": [
{
"macAddress": "14:59:C0:2B:4B:C0",
"signalStrength": -90,
"signalToNoiseRatio": 0
},
{
"macAddress": "90:1A:CA:E2:1D:80",
"signalStrength": -40,
"signalToNoiseRatio": 0
}
]
}
где первая AccessPoint - произвольная актуальная wifi точка, а вторая - та которую мы ищем, соответственно сила сигнала указана -90 для той точки которая нам не интересна, -40 для той которую мы ищем.
"considerIp": false этот параметр нужен чтобы на результат не влиял внешний айпи адрес с которого мы делаем запрос.
и выполним команду:
Код:
Скопировать в буфер обмена
curl -d @test.json -H "Content-Type: application/json" -i "https://www.googleapis.com/geolocation/v1/geolocate?key=AIzaSyB2h2OuRcUgy5N-5hsZqiPW6sH3n_rptiQ"
получаем ответ:
Код:
Скопировать в буфер обмена
HTTP/2 200
content-type: application/json; charset=UTF-8
vary: X-Origin
vary: Referer
vary: Origin,Accept-Encoding
date: Tue, 16 Jan 2024 16:45:42 GMT
server: scaffolding on HTTPServer2
cache-control: private
x-xss-protection: 0
x-frame-options: SAMEORIGIN
x-content-type-options: nosniff
alt-svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000
accept-ranges: none
{
"location": {
"lat": 35.3345486,
"lng": -81.8802134
},
"accuracy": 180
}
в ответе получаем координаты и указанную точность 180, которая обусловлена тем что мы в запросе использовали 2 далеко друг от друга расположенные точки, но по факту же выдаются координаты той точки у которой сильный уровень сигнала, проверено на реальных точках, точность вплоть до подъезда дома совпадает.
Если хотя бы одна из заданных в JSON файле точек в базе отсутствует, получим результат "NOT FOUND", также если в запросе указать менее 2 точек.
Полное описание Geolocation API см тут:
Geolocation request and response | Geolocation API | Google for Developers
developers.google.com
Последнее редактирование: 16.01.2024
Ключ доступа берем из исходников firefox - качаем себе с гитхаба репозиторий mozilla/gecko-dev, распаковываем и поиском по всем файлам находим MOZ_GOOGLE_LOCATION_SERVICE_API_KEY":"AIzaSyB2h2OuRcUgy5N-5hsZqiPW6sH3n_rptiQ".
для запроса создадим JSON файл test.json
Код:
Скопировать в буфер обмена
{
"considerIp": false,
"wifiAccessPoints": [
{
"macAddress": "14:59:C0:2B:4B:C0",
"signalStrength": -90,
"signalToNoiseRatio": 0
},
{
"macAddress": "90:1A:CA:E2:1D:80",
"signalStrength": -40,
"signalToNoiseRatio": 0
}
]
}
где первая AccessPoint - произвольная актуальная wifi точка, а вторая - та которую мы ищем, соответственно сила сигнала указана -90 для той точки которая нам не интересна, -40 для той которую мы ищем.
"considerIp": false этот параметр нужен чтобы на результат не влиял внешний айпи адрес с которого мы делаем запрос.
и выполним команду:
Код:
Скопировать в буфер обмена
curl -d @test.json -H "Content-Type: application/json" -i "https://www.googleapis.com/geolocation/v1/geolocate?key=AIzaSyB2h2OuRcUgy5N-5hsZqiPW6sH3n_rptiQ"
получаем ответ:
Код:
Скопировать в буфер обмена
HTTP/2 200
content-type: application/json; charset=UTF-8
vary: X-Origin
vary: Referer
vary: Origin,Accept-Encoding
date: Tue, 16 Jan 2024 16:45:42 GMT
server: scaffolding on HTTPServer2
cache-control: private
x-xss-protection: 0
x-frame-options: SAMEORIGIN
x-content-type-options: nosniff
alt-svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000
accept-ranges: none
{
"location": {
"lat": 35.3345486,
"lng": -81.8802134
},
"accuracy": 180
}
в ответе получаем координаты и указанную точность 180, которая обусловлена тем что мы в запросе использовали 2 далеко друг от друга расположенные точки, но по факту же выдаются координаты той точки у которой сильный уровень сигнала, проверено на реальных точках, точность вплоть до подъезда дома совпадает.
Если хотя бы одна из заданных в JSON файле точек в базе отсутствует, получим результат "NOT FOUND", также если в запросе указать менее 2 точек.
Полное описание Geolocation API см тут:
Geolocation request and response | Geolocation API | Google for Developers
developers.google.com
Последнее редактирование: 16.01.2024