Публичная база телефонных станций мира. Публичное открытое API
Сегодня я хочу представить всем желающим базу телефонных станций всего мира.
Это может быть полезно приложениям или сервисам, которые по идентификаторам мобильной станции хотят получить ее геопозицию и тип. Данная база частично является копией The OpenCellID map, однако в официальной реализации есть ограничение на количество запросов и обязательно выпускать API ключ. В базе так же собраны и другие источники данных.
Список открытых источников:
- OpenCellID (CC-BY-SA 3.0 unported)
- openBmap.org (Open Database License (ODbL) v1.0)
- Mozilla Location Service (CC0 1.0 Universal (CC0 1.0))
В моей реализации нет не лимитов, ни ключей.
Данные обновляются еженедельно.
Реализация API (Открытые источники)
http://api.mylnikov.org/geolocation/cell адрес запросов передаются методом GET
Так же доступен по протоколу https://api.mylnikov.org/geolocation/cell
Для запроса есть 4 обязательных поля:
- mcc - Integer (Код страны)
- mnc - Integer (Код телефонного оператора)
- cellid - Integer (Код телефонной станции)
- lac - Integer (Код региона или Area, Location)
- v - Номер версии (Актуацльная версия 1.1)
- data=open - указание, что данные полученные из API строго открытые
Пример:
https://api.mylnikov.org/geolocation/cell?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 обязательных поля:
- mcc - Integer (Код страны)
- mnc - Integer (Код телефонного оператора)
- cellid - Integer (Код телефонной станции)
- lac - Integer (Код региона или Area, Location)
- v - Номер версии (Актуацльная версия 1.1)
Пример:
https://api.mylnikov.org/geolocation/cell?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
В данном моде так же работает тег data=open который сообщает серверу что данные должны быть получены исключительно из открытых источников. К сожалению, в этом случае часты ситуации с отрицательным результатом.
Важно заметить, что API позволяет геолоцироваться по разным операторам одновременно, те если абонент слышить много сетей вокруг, то его местоположение пожно определить достаточно достоверно.
Демо
По адресу https://find-cell.mylnikov.org/ находится демо-визуализация результатов поиска по сервису API.
Лицензирование
Через одно API доступно, на самом деле, два проекта.
Первый и лицензируемый проект это все запросы к API с ключем "data=open" и он работает под лицензией MIT License.
Второй проект получает данные "как есть". Полностью законное получение данных не оговаривается. И обращение к API без ключа open=data в принципе не документируется и предоставляется как "пасхальное яйцо". Данные предоставляемые используются конечным пользователем на свой страх и риск.
Скачать данные
December 17th, 2016 - 18:35
здравствуйте! большое спасибо за статьи, всё очень интересно и подробно описано. но вот с этой статьёй возникли пробелмы. подскажите, вот допустим мне нужно узнать местоположение +99365290417 ( рандомный номер). как тогда нужно оформлять запрос?
September 20th, 2017 - 19:27
Сервис не дает возможности напрямую узнать положение абонента сотовой связи. Для того чтобы понять место абонента нужно сначала узнать индетификационные данные сотовой вышки, к которой подключен искомый абонент.