Alexander Mylnikov

19Apr/150

Геолокация без GPS

wifiЗдравствуйте!

Представляю публичную базу геопозиций телефонных вышек и Wi-Fi роутеров. Мне понадобилась стабильная и безлимитная база для приложения Android в котором нужна была точная геолокация из всех доступных источников (GPS, Wi-Fi, Mobile). Пришлось создать базу данных положений сотовых вышек и Wi-Fi. Всех заинтересовавшихся прошу под кат.

15Apr/150

Определение местоположения по Wi-Fi (MAC, bssid) открытое API

Wi-FiСегодня я хочу представить публичный API для определения местоположения по данным точки доступа Wi-Fi. В итернете достаточно много ресурсов предлагающих определение местоположения по данным Wi-Fi, однако все они либо платные, либо содержат ограничение на количество запросов, либо очень маленькие.

Данная база может быть интересна любым приложениям которые имеют географическую привязку с помощью Wi-Fi.

В своей базе я собрал все доступные публичные источники:

В данный момент база  содержит 10М Wi-Fi и постоянно наполняется новыми. Если у вас обширная база Wi-Fi  или источники буду рад ее добавить в свою базу. Пишите на [email protected].

API не содержит никаких скрытых лимитов или задержек. Данные предоставляются "как есть".

Описание публичного API (Открытые источники)

Адреса обращения

https://api.mylnikov.org/wifi/main.py/get?bssid={wifi bssid}

https://api.mylnikov.org/wifi/main.py/get?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/wifi/main.py/get?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/wifi/main.py/get?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

https://api.mylnikov.org/wifi/main.py/get?v=1.1&search=Mjg6Mjg6NWQ6ZDY6Mzk6OGEsLTc2OzkwOjk0OmU0OmFjOjEyOjI2LC04MA==

В данном моде так же работает тег data=open который сообщает серверу что данные должны быть получены исключительно из открытых источников. К сожалению, в этом случае часты ситуации с отрицательным результатом поиска.

Лицензирование

Через одно API доступно, на самом деле, два проекта.

Первый и лицензируемый проект это все запросы к API с ключем "data=open" и он работает под лицензией  MIT License.

Второй проект получает данные "как есть". Полностью законное получение данных не оговаривается. И обращение к API без ключа open=data в принципе не документируется и предоставляется как "пасхальное яйцо". Данные предоставляемые используются конечным пользователем на свой страх и риск.

О любых ошибках или сложностях использования прошу писать мне на почту [email protected].

Скачать данные

Раздел загрузок

Приложение для тестирования:
Get it on Google Play

Приложение для тестирования (Верисия для разработчиков):
Get it on Google Play

7Apr/150

Public mobile cells position database. Geo-Location API

cell towerHereby the introduction of public Geo-Location API implementation for mobile cells.

Compiled open sources:

For this moment it contains about 26M+ records. With this size database becomes world largest open source mobile cells position database.

This API is absolutely free of charge to use and have not hidden usage fees. Also, there is no limitation for request amount per any period.

Download data

Download database in CSV format from Download database page

Location of cell (Open data)

API accept two request paths. Parameters should be send with GET request.

  • http://api.mylnikov.org/geolocation/cell?v=1.1&data=open
  • https://api.mylnikov.org/geolocation/cell?v=1.1&data=open

There are 4 required parameters for a request:

  1. mcc - Integer (Country code)
  2. mnc - Integer (Network operator code)
  3. cellid - Integer (Cell id)
  4. lac - Integer (Area or location code)

Example of usage:

https://api.mylnikov.org/geolocation/cell?v=1.1&data=open&mcc=250&mnc=2&lac=7840&cellid=200719106

Explanation of the request is that 250 stands for Russia, 2 - Megafon, 7840 - area code, 200719106 - cell id number

If cell is found you would get 200 in field result or 404 if request is failed.

Example of response

{
  "result": 200,
  "data": {
    "lon": "30.378965994",
    "range": "1248.781274361",
    "time": 1431125998,
    "lat": "60.052802453"    
  }
}
{
  "result": 404,
  "data": {
    
  },
  "real": 6,
  "desc": "No information about location",
  "time": 1431126043
}

Description of successful response:

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

Refined location (Beta)
In version 1.1 I added new function of fetching refined location by number of mobile cells.
The request path is https://api.mylnikov.org/geolocation/cell?v=1.1&data=open&search={search string}

{search string} - Base64 of string (mcc,mnc,lac,cellid,SS;mcc1,mnc1,lac1,cellid1,SS1;...)

Max amount of cells is 12 to request.

Example of search string:
250,02,7810,318,-81;250,02,4711,24208,-83;250,02,4711,24214,-89;250,02,4711,619,-95;250,02,4711,16627,-95

mcc,mnc,lac,cellid,SS;mcc1,mnc1,lac1,cellid1,SS1

SS - Signal Strength

Example request:

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

Demo

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

Licensing

Statements of the API Geo-Location 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 32.5M+ records. Usage of API is free of charge.

P.S.

I you need full database of cells in CSV format you can download here.

If you have any sources that contains reliable data about cell towers location please contact me via e-mail. I'll add them into API sources.

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

5Apr/150

Публичная база телефонных станций мира. Публичное открытое API

cellСегодня я хочу представить всем желающим базу телефонных станций всего мира.

Это может быть полезно приложениям или сервисам, которые по идентификаторам мобильной станции хотят получить ее геопозицию и тип. Данная база частично является копией The OpenCellID map, однако в официальной реализации есть ограничение на количество запросов и обязательно выпускать API ключ. В базе так же собраны и другие источники данных.

Список открытых источников:

В моей реализации нет не лимитов, ни ключей.

Данные обновляются еженедельно.

Реализация API (Открытые источники)

http://api.mylnikov.org/mobile/main.py/get адрес запросов передаются методом GET

Так же доступен по протоколу https://api.mylnikov.org/mobile/main.py/get

Для запроса есть 4 обязательных поля:

  1. mcc - Integer (Код страны)
  2. mnc - Integer (Код телефонного оператора)
  3. cellid - Integer (Код телефонной станции)
  4. lac - Integer (Код региона или Area, Location)
  5. v - Номер версии (Актуацльная версия 1.1)
  6. data=open  - указание, что данные полученные из API строго открытые

Пример:

http://api.mylnikov.org/mobile/main.py/get?data=open&mcc=250&mnc=02&cellid=200719106&lac=7840&v=1.1

Ответ:

Строка JSON имеющее обязательное поле result.

Если станция найдена в поле result приходит ответ 200, при ошибках возвращается код 404.

{ 
"result":200,
"data":{ 
"lon":"30.385654398",
"mcc":250,
"lac": 7840,
"range":"869.994176272",
"radio":"UMTS",
"samples":49,
"time":1430577060,
"lat":"60.056594206",
"mnc":2,
"cellid":200719106
}
}
{ 
"result":404,
"data":{ 
},
"real":6,
"desc":"No information about location",
"time":1430579063
}

Описание успешного ответа:

  • lat - широта
  • lon - долгота
  • range - точность определения координаты в метрах
  • samples - количество измерений
  • mcc - код страны
  • mnc - код мобильного оператора
  • lac - код мобильного региона
  • cellid - Id базовой станции
  • radio - тим базовой стании

Реализация API (Данные "как есть")

Для запроса есть 4 обязательных поля:

  1. mcc - Integer (Код страны)
  2. mnc - Integer (Код телефонного оператора)
  3. cellid - Integer (Код телефонной станции)
  4. lac - Integer (Код региона или Area, Location)
  5. v - Номер версии (Актуацльная версия 1.1)

Пример:

http://api.mylnikov.org/mobile/main.py/get?mcc=250&mnc=02&cellid=200719106&lac=7840&v=1.1

Уточненное местоположение

Вводится новая функция получения приблизительного пожложения точки триангуляционного центра. Синтаксис следующий: на сервер передается набор базовых станций, видимых приемником и силу сигналов станций, а сервер по имеющимся данным получает приблизительное положение точки, качественно являющейся трианглуляционным центром. все данныые запроса оборачиваются base64

Пример исходной строки:

250,02,7810,318,-81;250,02,4711,24208,-83;250,02,4711,24214,-89;250,02,4711,619,-95;250,02,4711,16627,-95

mcc,mnc,lac,cellid,SS;mcc1,mnc1,lac1,cellid1,SS1

SS - Signal Strength

https://api.mylnikov.org/mobile/main.py/get?v=1.1&search=MjUwLDAyLDc4MTAsMzE4LC04MTsyNTAsMDIsNDcxMSwyNDIwOCwtODM7MjUwLDAyLDQ3MTEsMjQyMTQsLTg5OzI1MCwwMiw0NzExLDYxOSwtOTU7MjUwLDAyLDQ3MTEsMTY2MjcsLTk1

В данном моде так же работает тег data=open который сообщает серверу что данные должны быть получены исключительно из открытых источников. К сожалению, в этом случае часты ситуации с отрицательным результатом.

Важно заметить, что API позволяет геолоцироваться по разным операторам одновременно, те если абонент слышить много сетей вокруг, то его местоположение пожно определить достаточно достоверно.

Лицензирование

Через одно API доступно, на самом деле, два проекта.

Первый и лицензируемый проект это все запросы к API с ключем "data=open" и он работает под лицензией  MIT License.

Второй проект получает данные "как есть". Полностью законное получение данных не оговаривается. И обращение к API без ключа open=data в принципе не документируется и предоставляется как "пасхальное яйцо". Данные предоставляемые используются конечным пользователем на свой страх и риск.

Скачать данные

Раздел загрузок

Приложение для тестирования:
Get it on Google Play

Приложение для тестирования (Верисия для разработчиков):
Get it on Google Play