Как устроена выдача адресов мобильных операторов? Как адаптировать ПО?

Как получают IP адреса мобильные устройства?

Каждый пользователь выходя в интернет через сеть оператора мобильной связи, получает адрес IPv4 вида XXX.XXX.XXX.XXX

IPv4 адресов В МИРЕ всего 4.5 млрд, все они были распределены между организациями в 2011 году.

Операторы мобильной связи обладают лишь несколькими тысячами уникальных IPv4 адресов (около 4000-8000 на оператора), при этом абонентов у операторов миллионы

(МТС, около 77 млн абонентов, Мегафон около 74 млн. абонентов, Билайн около 58 млн. абонентов, Теле2, около 38 млн. абонентов по данным на 2016 год)

Каждый год в России продается в среднем 30 млн. смартфонов.

Что все это значит?

Это значит лишь одно, что на тысячи абонентов, приходится всего лишь несколько адресов.

В реальности, одновременно ОДИНАКОВЫЙ внешний, публичный, БЕЛЫЙ IPv4 получают ТЫСЯЧИ абонентов, именно это адрес определяется серверами социальных сетей, таких как (Instagram, VK, Avito, Facebook, Youtube, Поисковые системы, системы ReCapture и другие).

Операторы осуществляют раздачу адресов из своего ПУЛА (сети IPv4 арендованные операторами связи) с помощью технологии NAT, т.е. устройство пользователя, которое подключено к сети оператора получает внутренний адрес оператора (уникальный в сети оператора) и выходит в интернет вместе с другими пользователями через один из адресов пула белых IPv4.

Когда меняется внешний адрес IPv4 адрес у мобильного устройства?

Вопреки ошибочному мнению, внешний адрес не меняется при переходе от базовой станции к базовой станции. Он может измениться, только при потере сети или же при переходе из одного режима сети в другой (например 4G-3G-2G).

Во все остальное время, внешний адрес, независимо от местоположения пользователя, не меняется в пределах одного региона, но при переходе из региона в регион потеря связи все равно будет, а следовательно и смена внешнего IP.

Как сервисы отделяют ботов и мультиаккаунты от реальных пользователей?

Обычный пользователь не может выполнять действия по алгоритму, его действия рандомизированы и связаны с психологией:

1. Типичное поведение пользователя за сутки:

Открыть инстаграм, пролистать, полайкать, прокомментировать, закрыть на несколько часов. (За время действий, адрес как правило не меняется).

2. Последовательность смен адреса у группы пользователей не может быть одной и той же, множество пользователей используют одинаковые адреса, но эти пользователи постоянно меняются, соответственно и аккаунты должны меняться со всеми идентификаторами устройств.

2. На сегодняшний день мобильные приложения передают на целевые серверы не только информацию о действиях пользователя в приложении но и множество сервисной информации, такой как номер и модель устройства, разрешение экрана (canvas),  тип операционной системы, часовой пояс подключенная сеть и пр.

3. Если данные считанные с устройства не совпадают с данными, которые можно получить из открытых источников об IP адресе, то аккаунты выполняющие действия с подозрителными сервисными данными попадают под подозрение. В случае мобильных адресов, нельзя сделать подозрительным IP адрес, т.к. он делиться между десятками тысяч обычных пользователей.

4. Кроме того, по отпечатку сетевого стека определенной операционной системы можно определить с какой операционной системы было установлено соединение. (Passive OS Fingerprint)

5. Любой современный сервис (например, Facebook, сразу определяет, используется ли NAT мобильного оператора или используется адрес другого провайдера или IP адрес датацентра). Только мобильные адреса обладают высочайшей степенью доверия (траста), со стороны сервиса, т.к. пользователей сидящих на них много, а адресов мало.

Как он это делает? Очень просто, по базам данных автономных станций (AS/Whois), именно по ним можно определить, кому принадлежит белый IP адрес.

Типичный пользователь не сидит в Facebook/Instagram с IP адресов Amazon (AWS) или других датацентов (Логично же ;) )

Что все это значит?

Это значит, что при разработке программного обеспечения ботов и настройки автоматизации действий необходимо учитывать:

1. Поведенческие особенности пользователей (например, в среднем один пользователь проводит в инстаграм около 2х минут за сессию).

2. Передачу сервисной информации об устройстве с которого должно запускаться оригинальное приложение

3. Совпадение User-agent и Passive OS fingerprint (Ну не может быть, чтобы у нормального, среднестатистического пользователя был запущен Firefox версии под Windows, на Linux).

4.Совпадение информации о пользователе (биографии, языка) с геолокацией IP адреса

5.Совпадение часового пояса устройства и часового пояса IP адреса

6.Не должно детектироваться использование прокси или VPN через Flash, JavaScript, WebRTC

7. Не забывать очищать данные о системе и кеш, куки, отпечатки железа, при использовании множества аккаунтов.

8. Контролировать связь аккаунт-ip адрес и менять адреса вместе со сменой аккаунтов, желательно рандомизируя задержки действий. (Искусственный интеллект современных систем детектирования ботов определяет схожие алгоритмы и блокирует аккаунты).