ПРОБЛЕМА: Instagram отверг телефонный номер
Иногда в ходе прохождения SMS-верификации сервер Instagram может отвергать передаваемый телефонный номер. В официальном Instagram-клиенте в этом случае появляется требование ввести другой номер телефона без каких-либо пояснений. При этом высока вероятность того, что при повторном отвержении номера аккаунт будет заблокирован. Ниже мы рассмотрим причины возникновения этой проблемы, как минимизировать вероятность отвержения номера, а также как снизить риск получения блокировки, если номер отвергается.
Тот или иной номер телефона может быть отвергнут сервером Instagram по ряду причин. Как правило, это связано не столько с номером, а с тем, с какого IP осуществляется верификация. Также мы считаем, что анализируется ряд других менее важных факторов: история происхождения аккаунта, при каких обстоятельствах был отправлен запрос на верификацию, сколько SMS-верификаций было ранее. Однако, два наиболее важных фактора - это IP и сам телефонный номер. Такой вывод мы сделали, основываясь на огромном количестве тестов, проделанных нашей командой. В ходе изучения вопроса нам удалось выяснить следующие важные моменты:
1. Отвергнутый одним аккаунтом номер может быть тут же принят другим Instagram-аккаунтом.
2. Номер, который гарантированно нигде и никогда в Instagram не использовался может быть отвергнут одним и тем же аккаунтом через один IP и принят при работе через другой IP.
3. Отвергаемый всеми Instagram-аккаунтами телефонный номер может быть принят через время.
Также следует учесть, что робот Instagram анализирует не только предыдущие факты использования телефонных номеров и "чистоту" используемой подсети, через которую осуществляется SMS-верификация, но и маску телефонного номера: оператора и общую маску цифр.
Основываясь на этих гипотезах, нам удалось создать кейс, при котором число потерь при работе с большой группой аккаунтов, отправленных всей сеткой на SMS-верификацию, кратно снижается.
КЕЙС
В финальном тестовом задании было взято более 400 аккаунтов, подписчики которых методом МФ+МЛ около года назад были доведены в среднем до отметки 400-600 человек. На протяжении года с этих аккаунтов изредка выполнялись только МЛ. Все аккаунты были привязаны к прокси из двух подсетей примерно в равной степени. В какой-то момент все эти аккаунты были разом запущены на МФ+МЛ по максимальному объёму. При этом не соблюдались рекомендации по плавному наращиванию активности. Через сутки такой работы абсолютно все аккаунты ушли в SMS-верификацию, что было вполне ожидаемо - эта цель и преследовалась изначально. После этого, не меняя прокси, мы попеременно начали верифицировать аккаунты, используя при этом два рекомендованных сервиса из статьи "Сервисы SMS-верификации": Onlinesim (onlinesim.ru) и SimSMS (simsms.org). Время от времени, на экране появлялся диалог о том, что тот или иной телефонный номер, выданный тем или иным SMS-сервисом, отвержен. После этого, если аккаунт не отправлялся в блок, то делалась повторная попытка с другим сервисом.
Спустя некоторое время, процент потерь (до выработки кейса):
Список успешно проинициализированных аккаунтов с большим процентом блокировок. Статья писалась давно, потому есть визуальные отличия списка в главном окне использовавшейся версии программы в сравнении с актуальной версией, но суть это не меняет.
После этого в общую схему был добавлен фактор IP. Перед SMS-верификацией каждый Instagram-аккаунт из списка временно снимался с привязанного прокси. После этого текущий ("родной") IP менялся на случайный IP мобильного оператора. Т.е. в качестве Интернет-соединения по умолчанию для рабочего места использовалось не Интернет-соединение текущего провайдера, а 3g/4g Интернет-соединение мобильного оператора. В нашем тесте это был Мегафон. Практически любой современный смартфон позволяет поднять собственную точку доступа и раздать мобильный Интернет по Wi-Fi любым другим устройствам - эта функция и была использована.
Далее произвольно выбирался любой из двух вышеупомянутых SMS-сервисов и выполнялась процедура полной повторной инициализации Instagram-аккаунта с последующим прохождением его верификации через автоматический ввод, выданного SMS-сервисом, телефонного номера, и, соответственно, последующим вводом кода из SMS, присланного на этот номер. Данные действия повторялись с регулярной сменой оконцовочного IP мобильного оператора каждые 2-3 аккаунта. Для этого достаточно вручную или автоматизированно на устройстве, раздающем Интернет (в нашем случае смартфон с 3g/4g Интернет-соединением от Мегафон), выполнить переподключение к 3g/4g Интернет-соединению.
После успешной верификации Instagram-аккаунт вновь привязывался к тому же прокси и выполнялась процедура полного обновления Instagram-аккаунта ещё раз, чтобы удостоверится в отсутствии запросов на верификацию.
Спустя некоторое время, процент потерь (после выработки кейса):
Список успешно проинициализированных аккаунтов. Статья писалась давно, потому есть визуальные отличия списка в главном окне использовавшейся версии программы в сравнении с актуальной версией, но суть это не меняет.
Как видно из скриншотов, потери сократились ощутимо, однако, полностью их исключить достаточно сложно, т.к. даже трастовые IP мобильных операторов могут попадать под санкции, но на очень короткое время. Если у вас есть доступ к качественным прокси из разных /32-подсетей или к приватным мобильным прокси-каналам, то перед SMS-верификацией можно использовать их.
Таким образом, при подозрении на массовую SMS-верификацию, например, если задачи на группе аккаунтов остановились с сообщением о необходимости верификации, что можно узнать из лога, то необходимо по очереди каждый аккаунт временно отключить от прокси, как показано ниже.
Пример того, как можно быстро отключить использование прокси. Меню в актуальной версии программы может немного отличаться, но название нужного пункта осталось прежним.
После этого выполнить полную повторную инициализацию аккаунта - о режимах инициализации аккаунтов можно прочесть в этой статье. Если в настройках программы установлено использование SMS-сервисов при возникновении запросов на SMS-верификацию, то программа автоматически запросит у выбранного сервиса свободный номер и попробует передать его серверу Instagram.
Если номер и IP-адрес, с которого осуществляется SMS-верификацию не покажутся подозрительными, то робот Instagram примет номер и отправит на него SMS с кодом.
Если код не приходит долгое время, то, возможно, сервер Instagram сейчас перегружен или для данного IP уже запрошено слишком много кодов в единицу времени. Подождите немного, а затем повторите попытку снова. Если номер не отвержен, то рано или поздно код тоже должен прийти.
В противном случае номер будет отвержен и на экране появится диалоговое окно, как показано на скриншоте ниже.
Пример работы алгоритма SocialKit, определяющего факт отвержения телефонного номера
Если это случилось, то смените IP (важно не просто сменить IP, а сменить подсеть), а также смените телефонный номер. Если вы используете SMS-сервисы, то просто переключитесь с одного сервиса на другой в настройках программы. Чтобы сделать это в диалоговом окне нужно нажать кнопку "Cancel", а после того как выполните все действия повторить обновление (инициализацию) аккаунта.
Если вы используете свои номера или хотите попробовать использовать другой номер в том же сервисе, то можно нажать "Yes" или "Yes to all", чтобы больше не показывать данный диалог в пределах текущей операции обновления группы аккаунтов. При этом важно понимать, что даже при однократном отвержении номера есть высокая вероятность того, что аккаунт тут же будет заблокирован. Потому повторную попытку отправить номер телефона роботу Instagram лучше предпринимать, предварительно изменив IP. Если никакие другие задачи в данный момент в SocialKit не выполняются, то это можно сделать пока на экране открыт данный диалог. Например, выполнить переподключение к Интернет на мобильном устройстве или на роутере, если провайдер выдает динамические IP.
ВАЖНО! Учтите, что описываемые в этой статье действия - единственный выход в таких ситуациях, если вы работаете с сетками Instagram-аккаунтов. Как понятно из контекста, это может быть чревато массовыми потерями среди аккаунтов. Будьте готовы к этому. Если вы работаете с клиентскими аккаунтами, то лучше связаться с каждым клиентом и попросить его пройти процедуру SMS-верификации. Каждый клиент будет это делать со своего IP, что избавит вас от необходимости производить описываемые в этой статье манипуляции самостоятельно. К тому же, если вдруг будет заблокирован клиентский аккаунт, то клиент сможет его без особых усилий разблокировать.
Таким образом, можно сделать вывод, что влияние IP-адреса и подсети очень значительно при принятии сервером решения об отвержении телефонного номера и последующей блокировке аккаунта во время обхода SMS-верификации для группы Instagram-аккаунтов. По нашему опыту смену IP лучше делать перед каждой третьей SMS-верификацией или запрограммировать достаточные тайм-ауты (это можно сделать на подзакладке "Настройки" -> "Сервисы" в главном окне программы) для процедуры SMS-верификации. Например, можно указать, что программе нужно брать паузу после каждой 2ой успешной SMS-верификации на 15 минут. Некоторые пользователи сообщают, что при работе через приватные мобильные прокси-каналы описываемая проблема актуальна после каждой 6ой успешной SMS-верификации. Потому будет лучше, если вы на основе данного кейса самостоятельно выработаете подходящую логику работы.
Обратите внимание, что в ходе автоматического прохождения SMS-верификации возможно возникновение так называемых циклических верификаций - эту проблему тоже можно обойти, сняв отметку в пункте "Выполнять переавторизацию после успешной верификации", как показано ниже.
Пример предварительной настройки алгоритма обновления (инициализации)
аккаунтов с защитой от циклической верификации.
Однако, следует учесть, что после этого может потребоваться процедура повторного обновления аккаунтов. Больше информации о проблеме циклической верификации и способах обхода можно получить из этой статьи.
ВОПРОСЫ
- После того, как верифицировал аккаунты можно ли продолжать работу сразу?
Нужно смотреть по обстоятельствам. Если идёт волна SMS-верификаций (у Instagram есть так называемые "месячники" борьбы со спамом), то лучше переждать 1-2 суток и постепенно возвращать в работу аккаунты мелкими группами, чтобы снизить риск повторных верификаций. О массовых SMS-верификациях мы обычно сообщаем в своём Telegram-канале - это, к счастью, происходит не особо часто. Если это не массовое явление, то можно и не пережидать 1-2 суток, но, тем не менее, мы всё равно рекомендуем возвращать аккаунты в работу мелкими группами по небольшому объёму, чтобы понять причины массовых запросов. Например, дело может быть в прокси, в слишком частых или однообразных действиях, сомнительных материалах и так далее - всё это нужно изучать уже в контексте другого вопроса.
- Если я знаю, что вся группа аккаунтов ушла на SMS-верификацию, то может стоит оставить их на какое-то время, а пройти верификацию потом, когда всё затихнет?
Сложность состоит в том, что никто нас не уведомит о том, когда и что затихнет и есть ли вообще что-то, что должно затихнуть. В деталях никто, кроме разработчиков Instagram не знает, как именно работает этот алгоритм. Вполне возможно, что это разовое массовое его применение, повторяющееся с определённой периодичностью. А вот оставлять на потом SMS-верификацию точно не стоит и вот почему. Мы проводили эксперимент, в результате которого некоторые из аккаунтов нами умышленно не выводились из состояния SMS-верификации. Когда мы вернулись к этим аккаунтам спустя много месяцев, то обнаружили, что они все заблокированы, а те, которые мы успешно вывели из SMS-верификации в первые недели продолжают работать и по сей день. Из этого можно сделать вывод, что непройденная SMS-верификация через длительное время в конечном итоге приводит к блокировке Instagram-аккаунта.
ДРУГИЕ СТАТЬИ ПО ТЕМЕ
Сервис поддержки клиентов работает на платформе UserEcho