Поиск в my.mail.ru
shllwrldНа первый взгляд может показаться, что социальная сеть "Мой Мир" от Mail.ru не лучший сервис для поиска информации. В 2021 году "Мир" представляет собой медленно умирающую, теряющую аудиторию социальную сеть. Попробуем разобраться, что из неё можно выжать.

Давно известная особенность "Мира" - наличие в URL страницы пользователя логина и домена, идентичных таковым в адресе электронной почты. Например, страница владельца почты test@mail.ru будет иметь вид https://my.mail.ru/mail/test/, а владельца почты test1234@inbox.ru - https://my.mail.ru/inbox/test1234/.

Второй, менее известный факт заключается в том, что регистрация в системе mail.ru возможна с помощью социальных сетей "ВКонтакте" и "Одноклассники", тогда в URL вместо логина и домена попадает id профиля и название соц. сети.

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

Предполагаю возможный скепсис, дескать, ну есть у меня почта на Mail.ru, но пользоваться "Моим Миром" и в голову никогда не приходило, это же соц. сеть для определенного контингента. Звучит разумно. Но, обратим внимание на процесс регистрации:
Вы в своем браузере авторизованы в почте mail.ru, далее по какой-то причине вам нужно зайти в "Мой Мир" (это можно сделать и случайно, ведь ссылка на него соседствует с "ОК" и "ВК" в самом верху страницы). Дальше, все что вам нужно сделать - нажать большую зеленую кнопочку "Присоединиться". Конечно же, перед этим вы прочитали (или нет?) важную информацию серыми буквами на сером фоне.

Весь процесс регистрации состоит только в нажатии этой кнопочки. Так что, может стоит проверить, а на ваш почтовый ящик, заведенный N лет назад, есть страница в "Моём Мире"?
Ладно, с регистрацией всё ясно. Дальше пользователь сталкивается с абсолютно убогим поиском (на мой субъективный взгляд), медленным и выдающим не релевантные данные. Я постарался понять, можно ли из него что-нибудь извлечь, желательно побольше и побыстрее.
Если детально посмотреть на запросы, которые передаются на хост my.mail.ru, можно увидеть, что данные о пользователях, возвращаются в JSON после GET запроса к /cgi-bin/my/ajax с параметром func_name=search.get (а именно /cgi-bin/my/ajax?&ajax_call=1&func_name=search.get&arg_name={имя}&arg_offset={отступ}&arg_countryid={id страны}&arg_region={id региона}&arg_cityid={id города}&arg_limit=50):

С параметрами, в принципе все понятно: из имени параметра следует его смысл. В ответе кроме привычных значений присутствуют интересные числовые поля ID и AuID, можно было бы подробней изучить другие ресурсы mail.ru на возможность их применения. По лимитам получились такие выводы:
- длина возвращаемого списка пользователей не превышает 10, поэтому для получения полного списка нужно многократно менять отступ (offset) с шагом 10;
- параметр arg_limit ни на что не влияет, лимит всегда составляет 500 - по-видимому, разработчики таким образом "закрыли" возможность перебора пользователей;
- много частых запросов приводят к временной блокировке аккаунта (JSON просто возвращается пустой), по времени до часа и больше.
Что из этого? Автоматизируем процесс, далее формируем запрос так, чтобы выдало меньше 500 результатов.
Для популярных комбинаций Имя-Фамилия это не подойдет, но можно уточнять локацию или иные параметры. К сожалению, как показали тесты - фильтры в самой соц. сети работают неправильно, то есть практически на любой запрос с фильтром попадаются не релевантные результаты.
Для непопулярных комбинаций можно легко уложиться в 500 пользователей - таким образом по конкретной паре Имя-Фамилия выгружаются все почтовые ящики, которые зарегистрированы в "Моём Мире", что в дальнейшем можно использовать, например, для идентификации полученной с помощью форм восстановления паролей части почты.
Кстати, насчет локации. В geo параметрах используются какие-то внутренние идентификаторы. Их значения, конечно, тоже можно спарсить.

Бонусом, в "Моём Мире" есть более удобный и шустрый поиск, чем стандартный. Правда, размещен он в не очевидном месте: в разделе "Друзья" мобильной версии сайта (адрес страницы: https://m.my.mail.ru/friends). Отличия от поиска в полноценной версии в том, что дополнительные параметры, такие как город, возраст и т.п. здесь задавать нельзя и нет JSON вывода от API. Лимиты такие же - 500 записей и временная блокировка если запросы будут слишком частые.

В процессе изысканий, я сделал для себя оболочку на python, которую позже скомпоновал в небольшую утилиту (поддерживать пока не планирую): https://github.com/shllwrld/mymailwrapper. Позволяет в автоматическом режиме проделать вышеописанные шаги, а именно:
- скачать результат запроса (JSON) из выдачи my.mail.ru в csv файл (не более 500)
- скачать результат запроса (email) из выдачи m.my.mail.ru в csv файл (не более 500)
- скачать базу стран, регионов и городов, используемых в запросах my.mail.ru.
Для работы нужен аккаунт в "Моём Мире" и python3.6+.
python3 mymailwrapper.py search "Пример"
