Анализ ников пользователей
У одного популярного сервиса есть одна особенность, которую, можно использовать в корыстных целях:
В sitemap.xml
(карте сайта) числятся ссылки на профили всех пользователей, а значит из ссылок мы можем достать их логины.
Ранее, ради интереса я писал парсер, собирающий всю базу логинов пользователей. Но была у скрипта одна проблема, которая не дала мне тогда закончить исследование - время, сервис блокирует по ip при большой нагрузке и нужна большая задержка между запросами.
Немного переписав скрипт (там был ужас по коду) я запустил сбор логинов.
При первом запуске, собрав почти треть юзернеймов, я потерял базу из-за отключения электричества, но со второго раза всё получилось:
Всего собрано ников: 2 122 083.
Всего собрано страниц: 9 844.
Время на парсинг всех пользователей: ~14 часов.
Интересно то, что много людей указывают номер телефона в качестве ника, сомнительное решение.. Я подсуетился и написал скрипт для поиска телефонных номеров в никах:
Всего собрано номеров: 4 958, 0.23% (от собранных ников).
Ник = номер: 3657, 73.8% (от найденных номеров).
Номер в конце: 667, 13.5% (от найденных номеров).
Номер в начале: 595, 12% (от найденных номеров).
Другое: 39, 0.8% (от найденных номеров).
Также, скриптом для поиска аномалий найдены 4 ника (данные анонимизированы):
'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'
считается занятым ником (то есть, нужно добавить что-то в начале/конце/посередине).
Интересно, как такое возможно, ведь, скорее всего, доступные симовлы заданы константой-алфавитом:
pythonALPHABET = "_-1234567890qwertyuiopasdfghjklzxcvbnm\n"
Аномалии больше похожи на непроизвольные, как минимум потому, что профили людей выглядят настоящими и не связаны с программированием.
Будет круто оставить отсылку, и зарегистрировать несколько аккаунтов, с ником, типа:
iamlostshe_1\n
Какие возможности это открывает для злоумышленников?
Продажа базы телефонов/ников/ников тг для спама. (ЦА сервиса, вполне конкретная, значит желающих купить базу будет много).
Брут аккаунтов. на сайте всё ещё регистрация по системе логин/пароль.