Open SMS: кратко о главном
🎯 О чём этот конспект: Пошаговое руководство по созданию собственного локального SMS-шлюза на базе Android-смартфона с помощью open-source решения Open SMS. Вы узнаете, как поднять легковесный HTTP API сервер прямо на телефоне, настроить права доступа в Android и отправлять SMS-уведомления и OTP-коды через обычные API-запросы без подписки на платные сервисы уровня Twilio.
👤 Кому будет полезно: Разработчикам, вайбкодерам и создателям пет-проектов/MVP, которым требуется отправка SMS-сообщений или OTP-авторизация без ежемесячных расходов на сторонние провайдеры.
✨ Что получите: Полностью рабочий автономный SMS API сервер на обычном смартфоне с SIM-картой, готовый принимать POST-запросы из вашего бэкенда, n8n-сценариев или скриптов.
1. Обход системных ограничений Android для запуска SMS-шлюза
Контекст: Большинство облачных провайдеров (например, Twilio) взимают заметную плату за каждое отправленное SMS, что невыгодно для пет-проектов или локального тестирования. Приложение Open SMS превращает смартфон с действующей SIM-картой в API-сервер. Однако современные версии Android блокируют установку сторонних APK и выдачу критических разрешений (доступ к отправке SMS) для приложений не из Google Play Store. Чтобы шлюз заработал, необходимо корректно обойти защиту Google Play Protect и активировать доступ к ограниченным настройкам (Restricted Settings).
Тайминг: , ,
Выгода: Экономия 100% бюджета на SMS-провайдерах за счет использования пакета SMS вашего мобильного оператора.
Как применить:
- Шаг 1: Скачивание APK — GitHub Releases] — Перейдите в репозиторий проекта Open SMS, откройте раздел Releases и загрузите последний релизный файл
.apkна Android-устройство. - Шаг 2: Временное отключение Google Play Protect — Google Play Store] — Откройте Play Store, нажмите на иконку профиля в правом верхнем углу, перейдите в Play Protect -> иконка шестерёнки (Настройки) -> отключите ползунок Сканирование приложений с помощью Play Защиты (Turn off) и подтвердите действие отпечатком пальца.
- Шаг 3: Установка и базовые разрешения — Файловый менеджер] — Запустите установку скачанного APK-файла. При первом запуске выдайте разрешение на показ уведомлений — это критично, так как сервер должен работать в режиме Foreground Service и не закрываться системой.
- Шаг 4: Разблокировка ограниченных настроек (Restricted Settings) — Настройки Android] — Зажмите иконку приложения Open SMS на рабочем столе и выберите О приложении (App Info) (или перейдите в Настройки -> Приложения -> Open SMS). Нажмите на три вертикальные точки в правом верхнем углу и выберите Разрешить ограниченные настройки (Allow restricted settings), подтвердив действие биометрией.
- Шаг 5: Выдача прав на отправку SMS — Настройки Android] — В меню О приложении перейдите в пункт Разрешения (Permissions) -> SMS и переключите статус на Разрешить (Allow).
Результат: Приложение Open SMS установлено и имеет все системные привилегии для фоновой работы и прямой отправки текстовых сообщений через SIM-карту.
2. Конфигурация, генерация токена и запуск локального API-сервера
Контекст: После получения системных прав приложение готово к работе в качестве HTTP-сервера. Для защиты вашего шлюза от несанкционированного доступа снаружи предусмотрена авторизация по Bearer-токену (API-ключу). Сервер настраивается буквально в пару кликов: можно изменить дефолтный порт, включить автозапуск службы при старте приложения и в реальном времени отслеживать входящие HTTP-запросы через встроенный журнал логов.
Тайминг: , ,
Выгода: Безопасный доступ к отправке SMS по API с защитой авторизационным токеном и встроенной диагностикой ошибок без необходимости подключать телефон к компьютеру через ADB.
Как применить:
- Шаг 1: Настройка порта и автозапуска — Open SMS] — В интерфейсе приложения перейдите в меню настроек. При необходимости измените стандартный порт HTTP-сервера (по умолчанию используется стандартный свободный порт). При необходимости активируйте опцию Auto start API server when it is launched для автоматического старта службы при каждом запуске программы.
- Шаг 2: Генерация API-ключа — Open SMS] — Нажмите кнопку Start Server на главном экране (или перейдите в раздел генерации ключа в настройках). При первом запуске приложение предложит сгенерировать мастер-ключ. Нажмите Generate — сгенерированный токен автоматически скопируется в буфер обмена.
- Шаг 3: Сохранение ключа — Мессенджер / Заметки] — Сохраните полученный Bearer-токен в надежное место (например, отправьте в сохраненные сообщения или файл
.envвашего бэкенд-проекта). - Шаг 4: Запуск сервера и проверка логов — Open SMS] — Нажмите Start Server. Откройте боковое меню (гамбургер-меню слева вверху) и выберите раздел Logs. Здесь будут фиксироваться все сетевые события: IP-адрес клиента, попытки авторизации, статус доставки SMS и ошибки.
Результат: На смартфоне поднят активный HTTP-сервер, готовый обрабатывать сетевые запросы в локальной сети по защищенному токену.
3. Интеграция шлюза: отправка SMS через cURL и обработка статусов
Контекст: Смартфон и клиентское устройство (ноутбук, сервер разработки, локальный микросервис) должны находиться в одной локальной сети (например, подключены к одному Wi-Fi роутеру). Для интеграции достаточно отправить стандартный HTTP POST запрос с JSON-телом, передав номер получателя, текст сообщения и заголовок авторизации Authorization: Bearer <API_KEY>. При неверном ключе сервер мгновенно возвращает ошибку 401 Unauthorized и логирует IP источника.
Тайминг: , ,
Выгода: Простая интеграция с любым языком программирования (Node.js, Python, Go, PHP) или no-code платформами (n8n, Make) за 2 минуты через базовый HTTP-клиент.
Как применить:
- Шаг 1: Определение локального IP-адреса телефона — Настройки Wi-Fi Android] — Перейдите в свойства текущего Wi-Fi соединения на смартфоне и посмотрите назначенный IP-адрес (например,
192.168.1.50). - Шаг 2: Тестовый запрос с проверкой авторизации — Терминал / Bash] — Отправьте тестовый cURL-запрос с неверным токеном, чтобы убедиться в работе механизма безопасности:
curl -X POST http://192.168.1.50:8080/send-sms \
-H "Authorization: Bearer invalid_token_123" \
-H "Content-Type: application/json" \
-d '{
"phone": "+79991234567",
"message": "Тест безопасности"
}'Ответ сервера: 401 Unauthorized. В логах приложения на телефоне появится запись Authentication failed from IP <IP_ноутбука>.
- Шаг 3: Отправка боевого SMS-сообщения — Терминал / Bash] — Подставьте реальный Bearer-токен, сгенерированный в приложении, и отправьте запрос:
curl -X POST http://192.168.1.50:8080/send-sms \
-H "Authorization: Bearer ВАШ_СГЕНЕРИРОВАННЫЙ_API_КЛЮЧ" \
-H "Content-Type: application/json" \
-d '{
"phone": "+79991234567",
"message": "Ваш код авторизации: 8492"
}'- Шаг 4: Верификация доставки — Open SMS / Телефон получателя] — Проверьте логи в приложении Open SMS (статус изменится на успешный
Authenticated & SMS Sent) и убедитесь в фактическом получении SMS на целевом устройстве.
Результат: Рабочий пайплайн отправки SMS напрямую с вашего ПК или бэкенда через Android-устройство.
Open SMS: ответы на частые вопросы
В: Как отправлять SMS с удаленного сервера в продакшене, если телефон находится дома за NAT?
О: Для проброса локального порта телефона во внешнюю сеть можно использовать бесплатные туннели, например Cloudflare Tunnel (cloudflared), ngrok, Tailscale или подключить телефон к общей виртуальной сети через WireGuard. После этого вы сможете отправлять POST-запросы на публичный URL туннеля из любой точки мира.
В: Требуются ли Root-права для работы Open SMS?
О: Нет, Root-права не нужны. Приложение использует стандартные API операционной системы Android для отправки SMS (SmsManager) и создания Foreground Service. Требуется лишь вручную выдать разрешение на Restricted Settings в настройках Android.
В: Будет ли сервер засыпать при выключенном экране смартфона?
О: Сервер работает как Foreground Service (с постоянным уведомлением в шторке), что предотвращает его выгрузку системой. Однако для стабильности рекомендуется в настройках Android отключить оптимизацию батареи (Battery Optimization -> Unrestricted) для приложения Open SMS.
В: Сколько сообщений в секунду можно отправлять через такой шлюз?
О: Скорость отправки ограничена возможностями радиомодуля смартфона и мобильного оператора (обычно 1 сообщение в 1–3 секунды). Для массовых рассылок решение не предназначено, так как оператор может временно заблокировать SIM-карту за спам. Для OTP-кодов и системных уведомлений производительности более чем достаточно.
В: Планируется ли поддержка отправки SMS через USB-модемы на Linux/Windows?
О: Да, автор проекта упомянул, что в дальнейших планах есть расширение экосистемы Open SMS для работы на настольных ОС (Linux и Windows) с подключенными GSM/LTE-модемами.
В: Безопасно ли отключать Google Play Protect при установке?
О: Google Play Protect блокирует любые сторонние APK, запрашивающие права на отправку SMS, в целях защиты от вредоносного ПО. Поскольку Open SMS — это проект с открытым исходным кодом, вы можете изучить его код на GitHub. После успешной установки и настройки приложения Play Protect можно включить обратно.
Open SMS: инструменты и ссылки из видео
- Open SMS — репозиторий с открытым исходным кодом и установочными APK-файлами Android-сервера для отправки SMS по API — упомянут в видео (
GitHub Releases). - Twilio — коммерческий облачный провайдер коммуникационных API (упомянут в качестве платной альтернативы) — упомянут в видео.
Конспект создан на основе видео «Self-Host Your Own SMS API Server using Android Phone» канала автора проекта. Все права на оригинальный материал принадлежат авторам. Источник: https://www.youtube.com/watch?v=wNXH_3onjfg