29 сервисов виртуальных номеров для приема СМС
Для чего нужны сервисы виртуальных номеров
Сервисы виртуальных номеров позволяют осуществлять прием СМС сообщений на свои номера, что очень полезно в случаях, когда:
Как пользоваться виртуальным номером
Во-первых, виртуальный номер еще нужно получить. Разница между обычным номером телефона и виртуальным в том, что в первом случае сообщения приходят вам на телефон, а во втором СМС вы увидите в веб-интерфейсе конкретного используемого вами сервиса.
Собственно, если это бесплатный сервис, то там будет просто список номеров, выбираете любой понравившийся номер и копируете его. Вставляете его уже на том сайте, где это требуется.
Если сервис платный, то там еще нужно выбрать категорию, под которую будет использоваться номер, дабы вам подобрали уникальный, не использованный ранее. От этого еще и будет зависеть стоимость номера. Например, номера под Вконтакте стоят 25 рублей, а под Авито – 3 рубля. Номера под другие категории – 3 рубля.
Список бесплатных виртуальных номеров
На каждом из сервисов доступно разное количество бесплатных номеров, где и сколько указывать не имеет смысла, поскольку такой информации свойственно довольно часто меняться. Проблема всех этих сервисов в том, что на всех популярных сайтах уже они давно использованы, это нужно учитывать. Однако, где-то номера обновляются часто, а где-то совсем редко, тут уж нужно проверять каждый сервис на предмет возможности использования номера в нужной для вас задачи.
Требуется еще и регистрация для дальнейшего использования:
Список платных виртуальных номеров
Для своих задач я всегда использую именно платные виртуальные номера, это куда удобнее и быстрее, чем сидеть и перебирать бесплатные номера на предмет доступности. В основном цена номера будет зависеть от необходимой категории использования, но есть и такие, где оплата идет исключительно за аренду номера.
Не советую использовать виртуальные номера на основных аккаунтах в важных для вас сервисах, поскольку недобросовестные владельцы могут пустить номер по второму и более кругу, что может привести к восстановлению аккаунта по привязанному к нему номеру, откуда следует полная потеря контроля за аккаунтом. Будьте осторожны, пользуйтесь с умом!
Подтверждение номера телефона по SMS
Широкое распространение на сайтах коммерческой тематики получили формы обратной связи типа «Заказать звонок». Пользователю сайта предлагается форма с полями: имя и телефон. Заполнив данные, пользователь ждет звонка на указанный номер телефона. А что если пользователь указал не свой телефон?
Или другая ситуация: пользователь сайта забыл свой пароль от учетной записи и в качестве альтернативы желает получить новый пароль на свой номер телефона (указанный в учетной записи). Естественно, он должен знать свой номер телефона и иметь его под рукой, так как SMS придет лишь на прикрепленный телефон.
Подобных ситуаций в современных интернет-реалиях множество, если вы администратор сайта, имеющий дело с учетными записями пользователей, Вам наверняка будет полезной такая функция как подтверждение номера (валидация) мобильного телефона по SMS.
Верификация телефона по SMS
Проверить принадлежность номера телефона пользователю достаточно просто: на номер телефона высылается одноразовый код в SMS сообщении с последующим подтверждением кода на сайте.
Форма для подтверждения телефона по SMS (которую мы сегодня сделаем собственноручно) выглядит примерно следующим образом:
Форма для верификации телефона по одноразовому SMS
Принцип работы
Данный скрипт не является «готовым продуктом», он лишь иллюстрирует механизм верификации телефона по SMS и потребует от Вас его адаптации под конкретные нужды.
Использование SMS шлюза
После регистрации, в личном кабинете в меню найдите «Программистам», в этой вкладке найдете Ваш api_id. Он вам понадобится далее.
HTML форма валидации телефона
Создадим HTML форму для валидации телефона пользователя: модальное окно, поля для ввода и проверки данных (примерный вид как на скрине выше). Для этого создадим файл index.php c содержимым:
В этом файле обратим внимание на последние строчки, где указывается маска для ввода телефона. Для Украины: +38 (099) 999-99-99 для России: +7 (999) 999-99-99
И создадим файл со стилями CSS под названием «style.css» (положим его рядом с index.php)
Обработчик подтверждения номера телефона по SMS вынесем в отдельный файл «act.php«. Его содержимое:
В обработчике формы обратите внимание на конфигурацию параметров в первых строках: необходимо указать:
В коде обработчика, в случае успешной валидации телефона, изменяете код под свои нужды.
Специализируюсь на безопасности сайтов: защищаю сайты от атак и взломов, занимаюсь лечением вирусов на сайтах и профилактикой.
Наверняка у Вас есть вопросы, просьбы или пожелания. Не стесняйтесь спросить, я отвечаю всегда быстро.
Зачем нужны сервисы приема SMS и с чем их едят
Сервисы, предоставляющие временный номер для приема смс онлайн, появились после того как многие социальные сети, торговые площадки и прочие интернет ресурсы перешли с идентификации пользователя, при регистрации, через адрес электронной почты на идентификацию через отправленный код на телефонный номер, а зачастую и код на телефонный номер и подтверждение через электронную почту.
Для кого существуют сервисы, предоставляющие виртуальные номера онлайн?
Всю аудиторию пользователей ресурсов, предоставляющих услуги приема смс на телефонные номера онлайн, можно разделить на группы:
Первая группа самая многочисленная и приносящая сервисам смс активаций наибольший доход — это люди, использующие всевозможные программы для накрутки(лайков, подписчиков, голосов и прочего). Чтобы осуществлять свою деятельность, этим людям нужны тысячи ботов, для создания которых, соответственно, нужны и тысячи телефонных номеров. Для себя обзовем таких клиентов смс активаторов «оптовиками».
Продолжим разделять пользователей смс активаторов
Вторая группа, назовем ее «ушлые», составляют любители использовать уязвимости. Приведу пример: несколько лет назад, были особо ушлые, кто понял последовательность номеров карт продуктовой сети «Перекресток» и путем перебора карт, выявляя на каких есть бонусные баллы, привязывали до пяти карт на новый аккаунт(используя номера с сервисов смс активаций) и в последствии могли спокойно расплачиваться в магазинах за продукты этими бонусными балами. Нечто подобное есть и в наши дни, только теперь с сетью «Пятерочка», ведь она с «Перекресток» состоит в одной торговой сети «x5 retail group» и решили использовать ту же систему для бонусов.
Также в эту группу входят те, кто следит за скидками и бонусами при первой покупке. И снова рассмотрим на примере: в известной сети быстрого питания KFC была акция, при регистрации в их приложении или в личном кабинете на сайте, который вы подтягиваете к приложению в телефоне, вам предоставляется скидка 30% на покупку ведра с крыльями. И при каждом новом походе за крыльями, пока действовала акция, представители нашей группы «ушлые» регистрировали новый аккаунт, используя временный номер для приема смс с одного из сервисов смс активаций, платя за него не более 5 рублей, а получая выгоду в 30% от заказа в KFC.
Последняя группа пользователей смс активаторов
Третья группа самая малочисленная. Это те, кого мы назовем «частники». Кто приобретает временные номера для приема смс до 10шт. И снова лучше приведу пример: вы занимаетесь перепродажей автомобилей и размещаете объявления на торговой площадке avito. Первое объявление для вас будет бесплатным, второе за символическую плату, чем чаще и больше вы будете выкладывать объявления о продаже авто, тем выше для вас будет задирать ценник avito, вплоть до 1000р за новое объявление. Так же на авито действует подобная система повышения цены за размещение объявления о продаже запчастей и прочего. Или вы доморощенная домохозяйка и хотите проверить своего мужа, зарегистрировав страничку в Intagram или vkontakte и написать ему с этой новой страницы, где стоит фото особи женского пола привлекательной внешности.
Плюсы и минусы самых популярных сервисов смс активаций
А теперь давайте рассмотрим наиболее крупные и популярные сервисы, предоставляющие услуги аренды временных телефонных номеров для приема смс онлайн:
1) sms-activate.ru Сервису более трех лет. Если верить их статистике на сайте, то у них регистрируется от 200 до 400 человек в день и приобретают хотя бы один номер от 3000 до 5000 пользователей. Цены у данного ресурса средние. Есть и выше, есть и ниже, подробную таблицу с ценами на рассматриваемые ресурсы приложу после обзора. Из негативного, у них при менее 6% успешных использований номеров получаешь бан и это вы узнаете только получив бан и обратившись в тех. поддержку. То есть если вы пробуете зарегистрировать аккаунт в вконтакте, а на предоставленный вам номер уже зарегистрирован аккаунт, то вы от него можете отказаться, но если сделаете это около 20 раз подряд — то получите бан. И на какое время совершенно не понятно, у них свой какой-то алгоритм, нигде на сайте условия блокировки не прописаны.
2) simsms.org Внешне и ценами очень похож рассмотренный выше ресурс, из негатива у них так же есть что-то вроде банов, но называется система лояльности или так называемой «кармы».
И самый главный минус данного сервиса в отличии от всех остальных, описанных в данной статье, simsms.org дают номер на 20 минут, на который вы примите только одну смс с сервиса который выбрали. Все же остальные сервисы в нашей статье предоставляя номер на 20 минут Позволяют принять неограниченное количество смс с выбранного вами ресурса. Это очень полезно при регистрации, например, чтобы завести яндекс кошелек, вам необходимо сначала зарегистрировать яндекс почту(прием 1 смс с кодом) и только потом регистрация самого кошелька(еще 1 смс), а заплатите вы за 1 ресурс.
3) cheapsms.ru относительно молодой ресурс, пожалуй с самыми низкими ценами. К сожалению они часто подвергаются атакам и сайт недоступен. А последнее время нету в наличии номеров на самые популярные сервисы и «другое».
4) sms-reg.com один из самых старейших сервисов смс активаций, но с годами испортились. Совершенно не развиваются, сайт практически без изменений с 2015 г. Очень неудобный личный кабинет. Не отображают какое количество какого сервиса сейчас есть в доступе. А так же очень высокий ценник (можете увидеть в таблице после описания сервисов).
5) onlinesim.ru являются «белым» сервисом, у них открыто ООО Онлайнсим, где числится в штате 6 человек и даже на бесплатных ресурсах можно найти на них информацию, в том числе и гендиректора. Это конечно располагает к ним, но давайте будем честными — подобные сервисы не могут быть официальными априори. Для пользователя самым неприятным сюрпризом станет, идентификация через фото паспорта с приложенным к нему клочком бумаги, на котором будет ваш id с их сайта и страницы с пропиской.
Прохождение идентификации на их сайте обязательно при использовании российских номеров, для использования иностранных номеров идентификацию проходить не обязательно. Что они будут делать с паспортными данными? может наберут микрокредитов?
Как и обещал, ниже сравнение цен рассмотренных сервисов. Актуально на 31.01.2019.
9 сервисов SMS-активаций — номера для активации по SMS (бесплатные и платные)
Сервисы SMS-активаций — предоставляют номера для активации по SMS для профилей на крупных сайтах или социальных сетях. Чтобы не искать физические SIM-карты, можно воспользоваться сервисами SMS-активаций. Для удобства собрали список таких сервисов.
В список попали сервисы, в которых на данный момент не наблюдается проблем с наличием номеров, есть возможность бесплатно принять SMS.
Если у вас на примете есть еще хорошие сервисы оставляйте в комментариях — рассмотрим и добавим.
Sms-activate.ru
Sms-activate.ru – один из популярных сервисов для активации SMS. По данным сервиса, его ежедневно использует около 16 000 пользователей, которые покупают хотя бы один номер.
Особенности:
Например, для Facebook большего всего активаций по Индонезии (44,96% от всех активаций за сутки). Для просмотра статистики необходимо нажать «ТОП 10» в меню номеров.
Поддержка:
OnlineSIM.ru
OnlineSIM.ru – сервис, запущенный в 2013 году. Предоставляют краткосрочную и долгосрочную аренду номера. При краткосрочном заказе, в зависимости от выбранного ГЕО, можно использовать номер от 10 минут до 1 часа.
Особенности:
Социальные сети:
Контакты:
VAK-sms.com
VAK-sms.com – относительно молодой сервис моментального приёма SMS-сообщений. Работают с 2017 года.
Особенности:
Социальные сети:
Контакты:
SimSMS.ORG
SimSMS.ORG – сервис SMS-активации. Работают с 2014 года. Кроме получения сообщений, продают 4G и LTE прокси.
Особенности:
Социальные сети:
Контакты:
5sim.net
5sim.net – сервис приёма SMS на виртуальные номера. Основан в 2017 году. С момента открытия серьёзно расширили количество стран и сервисов.
Особенности:
Социальные сети:
Контакты:
SMS-REG.com
SMS-REG.com – один из старейших сервисов для приёма SMS-сообщений. Его основали в конце 2011 года. Предоставляют заказ номеров для определённых сервисов и аренду виртуальных SIM-карт.
Особенности:
Социальные сети:
Контакты:
SmsVK.net
SmsVK.net – сервис активации SMS-сообщений с номерами из Канады (на момент создания статьи). Площадка запущена в 2014 году.
Особенности:
Контакты:
SMS-acktiwator.RU
SMS-acktiwator.RU – сервис SMS-активаций, запущенный в 2013 году. Для тестирования сервиса есть бесплатный публичный приём SMS-сообщений.
Особенности:
Контакты:
VirtualNum
VirtualNum – молодой сервис приёма SMS-сообщений. Домен зарегистрировали 20 сентября 2020 года. Сейчас у них минимальный функционал для работы.
Особенности:
Организация аутентификации по СМС по примеру Telegram/Viber/WhatsApp
Представим, что перед вами стоит задача организовать аутентификацию пользователя (в мобильном приложении, в первую очередь) так, как это сделано в Telegram/Viber/WhatsApp. А именно реализовать в API возможность осуществить следующие шаги:
Мне потребовалось некоторое количество времени, чтобы осознать, как правильно это сделать. Моя задача — поделиться наработанным с вами в надежде, что это сэкономит кому-то времени.
Я постараюсь кратко изложить выработанный подход к этому вопросу. Подразумевается, что у вас API, HTTPS и, вероятно, REST. Какой у вас там набор остальных технологий неважно. Если интересно — добро пожаловать под кат.
Мы поговорим о тех изменениях, которые следует проделать в API, о том, как реализовать одноразовые пароли на сервере, как обеспечить безопасность (в т.ч. защиту от перебора) и в какую сторону смотреть при реализации это функциональности на мобильном клиенте.
Изменения в API
В сущности требуется добавить три метода в ваше API:
1. Запросить СМС с кодом на номер, в ответ — токен для последующих действий.
Действие соответствует CREATE в CRUD.
Если всё прошло, как ожидается, возвращаем код состояния 200.
Если же нет, то есть одно разумное исключение (помимо стандартной 500 ошибки при проблемах на сервере и т.п. — некорректно указан телефон. В этом случае:
HTTP код состояния: 422 (Unprocessable Entity), в теле ответа: PHONE_NUMBER_INVALID.
2. Подтвердить токен с помощью кода из СМС.
Действие соответствует UPDATE в CRUD.
Аналогично. Если всё ок — код 200.
Если же нет, то варианты исключений:
3. Форсированная отправка кода повторно.
Аналогично. Если всё ок — код 200.
Если же нет, то варианты исключений:
Особенности реализации одноразовых паролей
Вам потребуется хранить специальный ключ для проверки СМС-кодов. Существует алгоритм TOTP, который, цитирую Википедию:
OATH-алгоритм создания одноразовых паролей для защищенной аутентификации, являющийся улучшением HOTP (HMAC-Based One-Time Password Algorithm). Является алгоритмом односторонней аутентификации — сервер удостоверяется в подлинности клиента. Главное отличие TOTP от HOTP это генерация пароля на основе времени, то есть время является параметром[1]. При этом обычно используется не точное указание времени, а текущий интервал с установленными заранее границами (например, 30 секунд).
Грубо говоря, алгоритм позволяет создать одноразовый пароль, отправить его в СМС, и проверить, что присланный пароль верен. Причём сгенерированный пароль будет работать заданное количество времени. При всём при этом не надо хранить эти бесконечные одноразовые пароли и время, когда они будут просрочены, всё это уже заложено в алгоритм и вы храните только ключ.
Пример кода на руби, чтобы было понятно о чём речь:
Алгоритм описан в стандарте RFC6238, и существует масса реализацией этого алгоритма для многих языков: для Ruby и Rails, для Python, для PHP и т.д..
Строго говоря, Telegram и компания не используют TOTP, т.к. при регистрации там, вас не ограничивают по времени 30-ю секундами. В связи с этим предлагается рассмотреть альтернативный алгоритм OTP, который выдает разные пароли, базируясь на неком счётчике, но не на времени. Встречаем, HOTP:
HOTP (HMAC-Based One-Time Password Algorithm) — алгоритм защищенной аутентификации с использованием одноразового пароля (One Time Password, OTP). Основан на HMAC (SHA-1). Является алгоритмом односторонней аутентификации, а именно: сервер производит аутентификацию клиента.
…
HOTP генерирует ключ на основе разделяемого секрета и не зависящего от времени счетчика.
HOTP описан в стандарте RFC4226 и поддерживается тем же набором библиотек, что представлен выше. Пример кода на руби:
Безопасность решения
Первое непреложное само собой разумеющееся правило: ваше API, где туда-сюда гуляют данные и, самое главное, token должно быть завернуто в SSL. Поэтому только HTTPS, никакого HTTP.
Далее, самым очевидным вектором атаки является прямой перебор. Вот что пишут в параграфе 7.3 авторы стандарта HOTP (на котором базируется TOTP) на эту тему:
Truncating the HMAC-SHA-1 value to a shorter value makes a brute force attack possible. Therefore, the authentication server needs to detect and stop brute force attacks.
We RECOMMEND setting a throttling parameter T, which defines the maximum number of possible attempts for One-Time Password validation. The validation server manages individual counters per HOTP device in order to take note of any failed attempt. We RECOMMEND T not to be too large, particularly if the resynchronization method used on the server is window-based, and the window size is large. T SHOULD be set as low as possible, while still ensuring that usability is not significantly impacted.
Another option would be to implement a delay scheme to avoid a brute force attack. After each failed attempt A, the authentication server would wait for an increased T*A number of seconds, e.g., say T = 5, then after 1 attempt, the server waits for 5 seconds, at the second failed attempt, it waits for 5*2 = 10 seconds, etc.
The delay or lockout schemes MUST be across login sessions to prevent attacks based on multiple parallel guessing techniques.
Если кратко, то от прямого перебора алгоритм априори не защищает и надо такие вещи предотвращать на уровне сервера. Авторы предлагают несколько решений:
Отслеживать число неудачных попыток ввода кода, и блокировать возможность аутентификации по превышению некоторого максимального лимита. Лимит предлагают делать настолько маленьким, насколько ещё будет комфортно пользоваться сервисом.
Мнение, что можно полагаться только на то, что код живёт ограниченное число секунд, и будет безопасно, т.к. код сбрасывается — ошибочно. Даже, если есть фиксированное ограничение на число попыток в секунду.
Посмотрим на примере. Пусть код TOTP состоит из 6 цифр — это 1000000 возможных вариантов. И пусть разрешено вводить 1 код в 1 секунду, а код живёт 30 секунд.
Шанс, что за 30 попыток в 30 секунд будет угадан код — 3/100000
0.003%. Казалось бы мало. Однако, таких 30-ти секундных окон в сутках — 2880 штук. Итого, у нас вероятность угадать код (даже несмотря на то, что он меняется) = 1 — (1 — 3/100000)^2880
8.2%. 10 дней таких попыток уже дают 57.8% успеха. 28 дней — 91% успеха.
Так что надо чётко осознавать, что необходимо реализовать хотя бы одну (а лучше обе) меры, предложенные авторами стандарта.
Не стоит забывать и о стойкости ключа. Авторы в параграфе 4 обязывают длину ключа быть не менее 128 бит, а рекомендованную длину устанавливают в 160 бит (на данный момент неатакуемая длина ключа).
R6 — The algorithm MUST use a strong shared secret. The length of the shared secret MUST be at least 128 bits. This document RECOMMENDs a shared secret length of 160 bits.
Изменения в схеме БД
Итого, в модели (или в таблице БД, если угодно) надо хранить:
Особенности реализации мобильного приложения
В случае Android полученный токен можно хранить в SharedPreferences (почему не AccountManager), а для iOS в KeyChain. См. обсуждение на SoF.
Заключение
Вышеописанный подход позволит вам в рамках вашего стека технологий реализовать указанную задачу. Если вас есть соображения по этому подходу или альтернативные подходы, то прошу поделиться в комментариях. Аналогичная просьба, если у вас есть примеры документации к безопасным