Skip to content

Анализ ников пользователей

У одного популярного сервиса есть одна особенность, которую, можно использовать в корыстных целях:

В sitemap.xml (карте сайта) числятся ссылки на профили всех пользователей, а значит из ссылок мы можем достать их логины.

Ранее, ради интереса я писал парсер, собирающий всю базу логинов пользователей. Но была у скрипта одна проблема, которая не дала мне тогда закончить исследование - время, сервис блокирует по ip при большой нагрузке и нужна большая задержка между запросами.

Немного переписав скрипт (там был ужас по коду) я запустил сбор логинов.

При первом запуске, собрав почти треть юзернеймов, я потерял базу из-за отключения электричества, но со второго раза всё получилось:

md
Всего собрано ников: 2 122 083.
Всего собрано страниц: 9 844.

Время на парсинг всех пользователей: ~14 часов.

Интересно то, что много людей указывают номер телефона в качестве ника, сомнительное решение.. Я подсуетился и написал скрипт для поиска телефонных номеров в никах:

Всего собрано номеров: 4 958, 0.23% (от собранных ников).

Ник = номер: 3657, 73.8% (от найденных номеров).
Номер в конце: 667, 13.5% (от найденных номеров).
Номер в начале: 595, 12% (от найденных номеров).
Другое: 39, 0.8% (от найденных номеров).

Также, скриптом для поиска аномалий найдены 4 ника (данные анонимизированы):

md
'https://example.com/user/7777777777 '
'https://example.com/user/iamlostshe1\n'
'https://example.com/user/iamlostshit\n'
'https://example.com/user/iamlost_aim\n'

Из интересных символов здесь фигурирует ' ' (пробел) и '\n' (символ переноса строки).

Даты регистрации аномальных аккаунтов разбросаны, последняя - май 2025, значит, скорее всего до сих пор можно делать подобные ники.

Интересно, что, интерфейс сайта их не пропускает.

В процессе реверс-инженеринга мобильного приложения сервиса, я обнаружил логин и пароль для openapi, в котором есть методы для регистрации аккаунтов.

Ник с пробелом зарегистрировать не даёт (этот аккаунт был зарегистрирован раньше всех).

Аккаунты с символом переноса строки регистрируются, считая его за один символ, однако, зарегистрировать ник только из '\n' не получится. т. к. любое кол-во '\n' считается занятым ником (то есть, нужно добавить что-то в начале/конце/посередине).

Интересно, как такое возможно, ведь, скорее всего, доступные симовлы заданы константой-алфавитом:

python
ALPHABET = "_-1234567890qwertyuiopasdfghjklzxcvbnm\n"

Аномалии больше похожи на непроизвольные, как минимум потому, что профили людей выглядят настоящими и не связаны с программированием.

Будет круто оставить отсылку, и зарегистрировать несколько аккаунтов, с ником, типа:

iamlostshe_1\n

Какие возможности это открывает для злоумышленников?

  • Продажа базы телефонов/ников/ников тг для спама. (ЦА сервиса, вполне конкретная, значит желающих купить базу будет много).

  • Брут аккаунтов. на сайте всё ещё регистрация по системе логин/пароль.