Alexander Mylnikov

22Oct/1510

Public Wi-Fi database. Geo-Location API. Public API of position by Wi-Fi (MAC, BSSID).

Wi-Fi

I would like to introduce public API implementation of Wi-Fi Geo-Location database. There are on the Internet a lot of sources of Wi-Fi positions but all of them have disadvantages of small data sets or inaccurate data.

This database could be interesting for any applications that have to get accurate user location via Wi-Fi information.

Basis compilation has following open databases:

At this moment database contains about 34M+ of records and it always getting new data.

If you have any reliable source of Wi-Fi data, please share it with me via e-mail [email protected].

API doesn't contains any hidden limitations or usage fees. All the data is provided "as is" and free without any money contribution.

Specifications of Public Geo-Location API

Request paths:

http://api.mylnikov.org/geolocation/wifi?v=1.1&data=open&bssid={wifi_bssid}

https://api.mylnikov.org/geolocation/wifi?v=1.1&data=open&bssid={wifi_bssid}

{wifi_bssid} - BSSID of Wi-Fi AP (MAC address of network's AP card)

BSSID variants input:

  • A0:F3:C1:3B:6F:90
  • A0F3C13B6F90
  • a0f3c13b6f90
  • A0-F3-C1-3B-6F-90
  • a0-f3-c1-3b-6f-90

Example:

https://api.mylnikov.org/geolocation/wifi?v=1.1&data=open&bssid=00:0C:42:1F:65:E9

Response example:

{"result":200, "data":{"range": 140, "lan": "60.05205150", "lon": "30.33848000", "signal": "-80"}}
Field "result" contains 200 if Wi-Fi was found, otherwise it returns 404

Description of successful response:

  • lat - latitude
  • lon - longitude
  • range - accuracy of result in meters

Refined location (Beta) multiple Wi-Fis

This section describes opportunity to fetch geo-location by multiple amount of Wi-Fi APs. It has the syntax: User sends the set of APs with them signal straight levels and server returns location coordinate. The request string should be wrapped with Base64

Request paths:

http://api.mylnikov.org/geolocation/wifi?v=1.1&data=open&search={base64_search_string}

https://api.mylnikov.org/geolocation/wifi?v=1.1&data=open&search={base64_search_string}

{base64_search_string} - Base64 encoded string with following properties:

Example of input string:

"28:28:5d:d6:39:8a,-76;90:94:e4:ac:12:26,-80"

bssid,SS;bssid1,SS1

SS - Signal Strength

https://api.mylnikov.org/geolocation/wifi?v=1.1&data=open&search=Mjg6Mjg6NWQ6ZDY6Mzk6OGEsLTc2OzkwOjk0OmU0OmFjOjEyOjI2LC04MA==

Demo

The web-site http://find-wifi.mylnikov.org/ has a demo visualization API results on map.

Licensing

Statements of the API project:

  • Open data Geo-Location API  that licensed with  MIT License. All the request should contain key "data=open" key. The data from comes from the open source written above.
  • Any data from Geo-Location API is presented "as is".
  • Any usage of Geo-Location API are done by a final user without any stated guarantees and specific condition.
  • Usage liable of any data fetched from API fully lies on a final user activity and could be never wired with Geo-Location API service.

API database contains about 34.5M+ records. Usage of API is free of charge.

P.S.

I you need full database of Wi-Fi in CSV format you can download here. The compilation has updated dump of all the sources of the API.

I'll be happy to give you any help via e-mail [email protected].

Here are some application that could let you view about accuracy of the API. Feel free to install!

POC Application:
Get it on Google Play

POC Application for Developers:
Get it on Google Play

22Oct/150

Геолокация без GPS (часть 2)

wifi Здравствуйте! После предыдущей статьи (часть 1) я получил много отзывов о работе открытого API геолокации по WiFi и вышкам мобильных сетей. В этот раз я хочу представить свои исправления, лицензирование проекта, геопозиционирование по нескольким точкам доступа, кейсы использования и самое главное - текущие проблемы Сначала об исправленных ошибках:

  1. Исправлена грамматическая ошибка в ответе сервера (возвращался "lan" в место "lat") ключ "v=1.1"
  2. Добавлено лицензирование (об этом в конце)

Мобильные сети

Открытые данные
Основной критикой в сторону моего API был вопрос: "Чем плох OpenCellID?" ответ: ничем, кроме того что в этой базе мало данных. На данный момент у них 7,8 млн вышек. Это хороший результат для полностью открытой базы, но главный минус - это плохая точность. Сильно помогла база Mozilla Location Service для увеличения карты покрытия открытых данных. Из всех открытых баз я выкинул недостоверные данные, такие как радиус действия около 1200 км, либо же радиус действия 0. Т.е. вышка была "замечена" всего единожды, а следовательно, положение по ней можно оценить только качественно и по-хорошему точность 35 км как у средней соты (максимальная дальность средней соты за городом). Открытые данные обновляются автоматически раз в неделю. Т.е. база всегда актуальна. Сейчас в базе 13 млн. записей. Это отличный результат покрытия по всему миру. Надеюсь, вопросов, чем это лучше OpenCellID не будет. Важно отметить что в API нет никаких ограничений за количество запросов. Пример: http://api.mylnikov.org/mobile/main.py/get?v=1.1&mcc=250&mnc=02&cellid=200719106&lac=7840&data=open Сколько данных: 13.8M+ открытых данных (уникальных вышек)
Данные "как есть"
Здесь данные, на которые не распространяются никакие лицензии. Источников много, данные получаются достаточно достоверные. Скачать данные напрямую нельзя, но возможно получить в любом количестве через API. Система работы проста. Как только система получает запрос, на который не может ответить из текущей базы, производятся запросы к источникам, которые потенциально могут знать о регионе запроса. Важно заметить что "полученные" данные проходят полный цикл обновления за месяц. Пример: http://api.mylnikov.org/mobile/main.py/get?v=1.1&mcc=250&mnc=02&cellid=200719106&lac=7840 Развернутое описание работы с API геолокации по мобильным сетям
Уточненое местоположение
В документации описана функция геолокации по нескольким мобильным вышкам. Большинство открытых сервисов делать это не умеют и функция в диапазоне GSM-EDGE является крайне полезной, однако ответ API скорее носит качественную оценку геоположения. Я буду рад, если кто-нибудь напишет мне ([email protected]) и поможет решить задачу "триангуляции" по нескольким мобильным вышкам. Максимальное количество точек доступа: 12 Пример: https://api.mylnikov.org/mobile/main.py/get?v=1.1&search=MjUwLDAyLDc4... Потенциально, при работе некоторых телефонных аппаратов возможно получать данные о вышках нескольких телефонных операторов (либо 2 симкарты, либо супер карты телефонов, которые показывают все видимые вышки, примеров я не знаю).
Скачать данные

WiFi точки доступа

Открытые данные
Главный вклад в открытые данные привнес великолепный проект OpenWLANMap данные из данного проекта обновляются раз в неделю. Используются еще несколько источников, о них описано в подробной документации. Пример: https://api.mylnikov.org/wifi/main.py/get?v=1.1&bssid=00:0C:42:1F:65:E9&data=open
Данные "как есть"
Источников мало. Скачать данные напрямую нельзя, но возможно получить в любом количестве через API. Система работы идентична работе API для мобильных сетей. Период обновления 1 месяц Пример: https://api.mylnikov.org/wifi/main.py/get?v=1.1&bssid=A0:F3:C1:3B:6F:90 Развернутое описание работы с API геолокации по WiFi точкам
Уточненое местоположение
В документации описана функция геолокации по нескольким мобильным вышкам. Для точек доступа WiFi функция крайне полезная. Хотя и дает качественное положение, однако обычно сетевой адаптер мобильного устройства чаще всего получает лист всех точек доступа даже при отсутствии подключения к какой либо точке доступа. С помощью этих данных за один запрос можно получить координату с точностью до 150 метров. Максимальное количество точек доступа: 20 Пояснение: Разумеется, данные в базе есть не о всех точках вашей квартиры, однако, те, которые будут найдены будут использованы для уточнения геопозиции. Пример: https://api.mylnikov.org/wifi/main.py/get?v=1.1&search=Mjg6Mjg6.. Скачать данные

Актуальные проблемы

  • Совершенно не ясно как выбирать данные при условии наличия более одного источника. О некоторых точках доступа известно нескольким сервисам, причем неизвестно у кого из них данные более свежие и точные.
  • Не известно где искать дополнительные источники данных. Буду благодарен любому источнику.
  • Нагрузка после первой статьи сильно не увеличилась. Возникает ощущение что сервис не слишком интересен, возможно это из-за недоверия или молодости проекта.
  • "Уточненная" геолокация работает мягко говоря плохо.

Кейсы использования
С моей точки зрения API может быть полезно различным приложениям от геолокационых приложений до скрытого таргетинга контента приложений
Лицензирование
Лицензирование у проекта несколько хитрое. Через одно API (для мобильных вышек и WiFi точек доступа соответственно) доступно два проекта.

  1. ключ data=open. Данный ключ дает гарантию, что данные из ответа были получены исключительно из открытых источников. Данные распространяются под лицензией MIT
  2. отсутствие ключа data=open не дает никаких гарантий об источниках данных, а также данная часть проекта не лицензируется вовсе.

Доступность
Работоспособность сервиса "почти" гарантирован в течении 3х лет, точнее до конца 2018 года при наличии высого количества запросов со стороны пользователей и 1 года при отсутствии нагрузки. Фактически работает два сервера в назависимых дата-центрах. Средний показатель uptime за последний квартал 99,923% (по данным Яндекс.Метрики). Обратная совместимость каждой версии API гарантирована через ключ "v=" бессрочно.
Пояснение
Ни при каких обстоятельствах я не претендую на владение данными этого проекта. Я лишь хочу, чтобы в интернете был достоверный обширный и доступный источник геолокационных данных. Все данные принадлежат правообладателям. P.S. Я доступен в любое время дня и ночи по электронной почте [email protected] и готов выслушать любую критику, пожелания и предложения.