Определение местоположения по Wi-Fi (MAC, bssid) открытое API
Сегодня я хочу представить публичный API для определения местоположения по данным точки доступа Wi-Fi. В итернете достаточно много ресурсов предлагающих определение местоположения по данным Wi-Fi, однако все они либо платные, либо содержат ограничение на количество запросов, либо очень маленькие.
Данная база может быть интересна любым приложениям которые имеют географическую привязку с помощью Wi-Fi.
В своей базе я собрал все доступные публичные источники:
- Geomena: Wifi geolocation (CC BY-SA 3.0 Unported License)
- openBmap (Open Database License (ODbL) v1.0)
- OpenWifi.su (GNU free documentation license)
В данный момент база содержит 10М Wi-Fi и постоянно наполняется новыми. Если у вас обширная база Wi-Fi или источники буду рад ее добавить в свою базу. Пишите на [email protected].
API не содержит никаких скрытых лимитов или задержек. Данные предоставляются "как есть".
Описание публичного API (Открытые источники)
Адреса обращения
http://api.mylnikov.org/geolocation/wifi?bssid={wifi-bssid}
https://api.mylnikov.org/geolocation/wifi?bssid={wifi-bssid}
{wifi-bssid} - Bssid точки доступа (MAC адрес сетевой карты точки доступа)
Варианты:
- A0:F3:C1:3B:6F:90
- A0F3C13B6F90
- a0f3c13b6f90
- A0-F3-C1-3B-6F-90
- a0-f3-c1-3b-6f-90
Пример:
https://api.mylnikov.org/geolocation/wifi?bssid=00:0C:42:1F:65:E9&data=open&v=1.1
Варианты ответа:
{"result":200, "data":{"range": 140, "lan": "60.05205150", "lon": "30.33848000", "signal": "-80"}}
Поле "result" содержит значение 200 если Wi-Fi найден, в противном случае возвращается 404
Описание успешного ответа:
- lat - широта
- lon - долгота
- signal - средний уровень сигнала
- range - точность определения координаты в метрах
Реализация API (Данные "как есть")
https://api.mylnikov.org/geolocation/wifi?bssid=A0:F3:C1:3B:6F:90&v=1.1
При данном виде запроса данные представляются только в иследовательских целях. Конечный пользователь использует данные на свой страх и риск
Уточненное местоположение
Вводится новая функция получения приблизительного пожложения точки триангуляционного центра. Синтаксис следующий: на сервер передается набор точек доступа, видимых приемником и силу сигналов точек, а сервер по имеющимся данным получает приблизительное положение точки, качественно являющейся трианглуляционным центром. все данныые запроса оборачиваются в base64
Пример исходной строки:
28:28:5d:d6:39:8a,-76;90:94:e4:ac:12:26,-80
bssid,SS;bssid1,SS1
SS - Signal Strength
В данном моде так же работает тег data=open который сообщает серверу что данные должны быть получены исключительно из открытых источников. К сожалению, в этом случае часты ситуации с отрицательным результатом поиска.
Демо
По адресу https://find-wifi.mylnikov.org/ находится демо-визуализация результатов поиска по сервису API.
Лицензирование
Через одно API доступно, на самом деле, два проекта.
Первый и лицензируемый проект это все запросы к API с ключем "data=open" и он работает под лицензией MIT License.
Второй проект получает данные "как есть". Полностью законное получение данных не оговаривается. И обращение к API без ключа open=data в принципе не документируется и предоставляется как "пасхальное яйцо". Данные предоставляемые используются конечным пользователем на свой страх и риск.
О любых ошибках или сложностях использования прошу писать мне на почту [email protected].
Скачать данные
Leave a comment