Android Creator APIДля связи и предложений

Инструкция

Всё, что нужно, чтобы получить профиль: как передать ключ, какие параметры существуют, какие значения они принимают и что делать с ошибками. Общее описание сервиса — на странице «О сервисе».

Быстрый старт

Один GET-запрос, ключ в заголовке — и в ответе профиль целиком. Никаких предварительных вызовов, сессий и токенов.

curl -H "X-Api-Key: ВАШ_КЛЮЧ" \
  "https://androidsystem.westernadv.ru/?getDev=samsung&getCountry=russia"

Всё остальное необязательно. Минимальный работающий запрос — только ключ: бренд, страна и оператор тогда выбираются случайно.

curl -H "X-Api-Key: ВАШ_КЛЮЧ" "https://androidsystem.westernadv.ru/"

Как передать ключ

Два способа, оба рабочие. Заголовок предпочтительнее: ключ, переданный в адресе, оседает в логах веб-сервера, в реферере и в истории прокси — то есть в местах, доступных шире, чем сам сервис.

# рекомендуемый способ
X-Api-Key: ВАШ_КЛЮЧ

# работает для совместимости
https://androidsystem.westernadv.ru/?key=ВАШ_КЛЮЧ

Если заданы оба, приоритет у заголовка. Передавайте ключ ровно так, как он выдан: в параметре key лишние пробелы по краям значимы и дают Invalid API key — в заголовке они срезаются.

Параметры запроса

Все параметры необязательны и передаются в строке запроса. Неизвестные параметры игнорируются.

Параметр По умолчанию Значения
getDev rnd Бренд устройства из списка ниже, строчными буквами: samsung, xiaomi, oppo. rnd — любой бренд. Неизвестный бренд даёт 404.
getMod не задан Код конкретной модели. Работает самостоятельно, указывать вместе с getDev не нужно. Коды выдаются по запросу: нужна определённая модель из списка устройствнапишите. Неизвестная модель даёт 404.
getCountry случайная Страна из списка ниже, строчными буквами и по-английски: russia, uk, czech. Определяет оператора, номер, координаты, часовой пояс и язык.
getCpu 4 Число ядер. Можно диапазоном: getCpu=4-8 — значение выбирается случайно внутри него.
getRam 4 В гигабайтах, диапазон тоже допустим: getRam=4-8. В ответе значение приходит в мегабайтах: 44096.
getScrW 720 Ширина экрана в пикселях. Диапазоны здесь не поддерживаются.
getScrH 1280 Высота экрана в пикселях.
getDpi 240 Плотность экрана.
getLanguage по стране Локаль вида ru-RU. Передаётся в ответ как есть, без проверки. Если не задан — берётся локаль указанной страны, а при неизвестной стране en-US.

Числовые параметры не проверяются. getCpu=abc не вызовет ошибку — в профиль уйдёт CPU: 0. Передавайте целые числа либо диапазон N-M из двух целых чисел.

Чего выбрать нельзя

Страны

Значение для getCountry — из списка ниже. Именно оно определяет оператора, префикс номера телефона, координаты, часовой пояс и язык профиля. Всего 25 стран.

Страны вне списка не поддерживаются. Запрос с чужим значением getCountry вернёт 500 Failed to generate IMSI, а не пустой профиль. Нужна страна, которой здесь нет, — напишите, справочники пополняются.

Операторы

Оператор выбирается случайно среди операторов указанной страны — задать его параметром нельзя. Здесь видно, какие операторы могут достаться профилю при том или ином значении getCountry. Всего 90 операторов.

Страна Оператор
argentina claro
argentina movistar
argentina personal
argentina tuenti
australia optus
australia telstra
australia tpg
australia vodafone
austria a1
austria magenta
austria three
belgium base
belgium orange
belgium proximus
brazil claro
brazil oi
brazil tim
brazil vivo
canada bell
canada freedom
canada rogers
canada telus
czech o2
czech tmobile
czech vodafone
france bouygues
france orange
france sfr
germany o2
germany telekom
germany vodafone
india airtel
india bsnl
india jio
india vi
indonesia indosat
indonesia smartfren
indonesia telkomsel
indonesia tri
indonesia xl
ireland meteor
ireland three
ireland vodafone
italy tim
italy vodafone
italy windtre
japan au
japan docomo
japan rakuten
japan softbank
kazakhstan altel
kazakhstan beeline
kazakhstan kcell
kazakhstan tele2
mexico altan
mexico att
mexico movistar
mexico telcel
netherlands kpn
netherlands tmobile
netherlands vodafone
poland orange
poland play
poland plus
poland tmobile
romania digi
romania orange
romania vodafone
russia beeline
russia megafon
russia mts
russia tele2
spain movistar
spain orange
spain vodafone
sweden 3
sweden tele2
sweden telenor
sweden telia
uk ee
uk o2
uk three
uk vodafone
ukraine kyivstar
ukraine lifecell
ukraine vodafone
usa att
usa tmobile
usa uscellular
usa verizon

Устройства

Раскройте бренд, чтобы увидеть его модели. Название бренда в заголовке блока — это значение для getDev. Всего 250 моделей от 18 производителей.

asus — 3 модели
google — 14 моделей
honor — 8 моделей
infinix — 5 моделей
lg — 22 модели
motorola — 10 моделей
nothing — 3 модели
oneplus — 8 моделей
oppo — 30 моделей
poco — 8 моделей
realme — 10 моделей
redmi — 14 моделей
samsung — 34 модели
sharp — 3 модели
sony — 23 модели
tecno — 5 моделей
vivo — 30 моделей
xiaomi — 20 моделей

Модель и страна независимы: getDev=xiaomi прекрасно сочетается с любой страной из списка.

Ответ

Всегда application/json; charset=utf-8, 24 поля, порядок полей постоянный.

Пример ответа на запрос ?getDev=samsung&getCountry=russia&getCpu=8&getRam=8&getScrW=1080&getScrH=2340&getDpi=420

{
  "roProductBrand": "samsung",
  "roProductModel": "SM-S918B",
  "roHardware": "snapdragon8gen2",
  "IMEI": "354721887119926",
  "BluetoothMAC": "00:1E:52:B0:DD:6E",
  "MobileOperatorName": "mts",
  "MobileOperatorCode": "25001",
  "IMSI": "250010529749703",
  "ICCID": "89250016804016689534",
  "WifiName": "Hyrule",
  "Wifi": "4A:B2:6D:AC:03:0A",
  "MobilePhoneNumber": "+79136925491",
  "MobileCountry": "ru",
  "Latitude": "55.7145072",
  "Longitude": "37.5666733",
  "Timezone": "Europe/Moscow",
  "AndroidID": "7DF50337770A5C32",
  "MediaDrmDeviceID": "0EE2ABEB-CC7C-431E-94F5-052978C309B0",
  "CPU": 8,
  "RAM": 8192,
  "ScreenW": 1080,
  "ScreenH": 2340,
  "DPI": 420,
  "Language": "ru-RU"
}
ПолеЧто это
roProductBrand Бренд устройства
roProductModel Заводское обозначение модели
roHardware Аппаратная платформа устройства
IMEI Уникальный номер телефона, соответствующий его модели
BluetoothMAC MAC-адрес Bluetooth
MobileOperatorName Название мобильного оператора
MobileOperatorCode Код мобильного оператора
IMSI Идентификатор SIM-карты в сети оператора
ICCID Серийный номер SIM-карты
WifiName Название Wi-Fi-сети
Wifi MAC-адрес Wi-Fi
MobilePhoneNumber Номер телефона в международном формате
MobileCountry Двухбуквенный код страны
Latitude, Longitude Координаты точки внутри выбранной страны
Timezone Часовой пояс страны
AndroidID Идентификатор системы Android
MediaDrmDeviceID Идентификатор устройства для защищённого воспроизведения
CPU Число ядер процессора
RAM Объём оперативной памяти, в мегабайтах
ScreenW, ScreenH, DPI Ширина, высота и плотность экрана — те, что переданы в запросе
Language Язык и региональные настройки устройства

Коды ответа

Ошибка приходит тем же JSON, в поле error; у части ошибок есть ещё поле message с пояснением. Ориентироваться надёжнее на HTTP-код, а не на текст.

КодerrorЧто произошло
200 Профиль в теле ответа
401 API key is missing Не передан ни заголовок X-Api-Key, ни параметр key
403 Invalid API key Такого ключа нет. Проверьте, не обрезался ли ключ при копировании и не добавились ли пробелы по краям
403 Key disabled Ключ выключен вручную — напишите нам
403 License expired Срок лицензии вышел, ключ нужно продлить
404 Device not found Нет устройства под заданный getDev или getMod. Сверьтесь со списком устройств
429 Rate limit exceeded Превышено число запросов в минуту. В заголовке Retry-After — через сколько секунд повторять
429 Daily limit exceeded Исчерпан суточный лимит. В теле есть limit, used и resets_at — момент сброса
429 Too many failed attempts С вашего адреса шло слишком много запросов с неверным ключом. Исправьте ключ и подождите — с верным ключом сервис отвечает как обычно
500 Failed to generate IMSI Чаще всего — getCountry вне списка стран
500 Internal server error Сбой на нашей стороне. Повторите позже и сообщите нам

Лимиты по умолчанию не выставлены: Rate limit exceeded и Daily limit exceeded приходят только тем ключам, для которых лимит согласован отдельно. Too many failed attempts от лимитов не зависит и защищает от перебора чужих ключей.

Примеры

Профиль конкретной модели

curl -H "X-Api-Key: ВАШ_КЛЮЧ" \
  "https://androidsystem.westernadv.ru/?getMod=КОД_МОДЕЛИ&getCountry=russia"

Флагманское железо, случайный бренд

curl -H "X-Api-Key: ВАШ_КЛЮЧ" \
  "https://androidsystem.westernadv.ru/?getCpu=8&getRam=8-12&getScrW=1080&getScrH=2340&getDpi=420"

Профиль с принудительной локалью

curl -H "X-Api-Key: ВАШ_КЛЮЧ" \
  "https://androidsystem.westernadv.ru/?getCountry=germany&getLanguage=en-US"

PHP

$ch = curl_init('https://androidsystem.westernadv.ru/?getDev=samsung&getCountry=russia');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['X-Api-Key: ВАШ_КЛЮЧ']);
$body   = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

$profile = json_decode($body, true);
if ($status !== 200) {
    // $profile['error'] — что именно не так
}

Python

import requests

r = requests.get(
    "https://androidsystem.westernadv.ru/",
    headers={"X-Api-Key": "ВАШ_КЛЮЧ"},
    params={"getDev": "samsung", "getCountry": "russia"},
    timeout=15,
)
if r.status_code == 200:
    profile = r.json()
else:
    print(r.status_code, r.json().get("error"))

Если что-то не работает

Приходит Invalid API key, хотя ключ верный
Проверьте пробелы по краям и полноту ключа при копировании. Ключ передаётся ровно как выдан.
Все профили одной страны похожи
Так и задумано: страна задаёт часовой пояс, локаль и географию. Различаются идентификаторы, оператор, номер, модель и точные координаты.
Нужен профиль страны, которой нет в списке
Справочники пополняются — напишите, какая страна нужна.
Нужны тысячи профилей в сутки
Ограничений по умолчанию нет, запрашивайте сколько нужно. О больших объёмах всё же стоит предупредить: лимиты выставляются по фактическому потреблению, и лучше, если ваш реальный пик нам известен заранее.

Для связи и предложений

Вопросы по работе API, получение и продление ключа, пожелания к справочникам и новым параметрам: https://t.me/pautomatizer

Общее описание сервиса и состав данных — на странице «О сервисе».