• 39761
  • 17
  • 12
Нравится блог?
Подписывайтесь!

Статус-чекер для Mail.ru agent

Сидя на работе иногда мне хочется узнать кто из друзей сейчас онлайн в MailАгенте. Но подключаться к сети неохота, т.к. потом кто-нибудь увидев меня онлайн обязательно напишет "Привет", который я не могу оставить без ответа, дальше другие тоже активно подключатся к чату и работа надолго приостанавливается.

Все знают, что на странице профиля МойМир по адресу типа http://my.mail.ru/%domain%/%username% рядом с именем есть маленький рисунок, показывающий статус пользователя в агенте. Достается этот рисунок по адресу http://status.mail.ru?%email_of_user%. Что же, задача тривиальна, можно отправить HTTP-запрос на этот адрес и разобрать бинарные данные, предварительно просмотрев все возможные рисунки статусов например в HEX-редакторе.

Однако в кэше firefox (кстати попробуйте набрать about:cache) я заметил другой урл - http://status.mail.ru/batch.js?user1@mail.ru,user2@mail.ru,user3@mail.ru. Открыв его в браузере я увидел ответ наподобие этой:

MRIM.update('102101');

Немного поигравшись со списком емейлов, я выяснил, что каждая цифра является статусом для каждого емейла в списке соответственно. 0-оффлайн, 1-онлайн, 2-отошел. Хотя может есть и другие статусы.

В общем вот класс на php (нужен curl):

 

Mail.ru status checker
  1. class StatusChecker {
  2. const MRA_URL = 'http://status.mail.ru/batch.js';
  3.  
  4. public static function describe($statusCode) {
  5. switch ($statusCode) {
  6. case 0:
  7. return 'Оффлайн';
  8. case 1:
  9. return 'Онлайн';
  10. case 2:
  11. return 'Онлайн (отошел)';
  12. default:
  13. return 'Онлайн (?)';
  14. }
  15. }
  16.  
  17. public function checkStatus($emails) {
  18. if (!is_array($emails)) {
  19. $emails = array($emails);
  20. }
  21. if (empty($emails)) {
  22. return FALSE;
  23. }
  24. $ch = curl_init(self::MRA_URL . '?' . implode(',', $emails));
  25. curl_setopt($ch, CURLOPT_HEADER, 0);
  26. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  27. $ret = curl_exec($ch);
  28. preg_match('/^MRIM\.update\(\'(\d+)\'\);$/', $ret, $m);
  29. $result = FALSE;
  30. if (isset($m[1])) {
  31. $c = 0;
  32. foreach ($emails as $email) {
  33. $result[$email] = $m[1][$c++];
  34. }
  35. }
  36. curl_close($ch);
  37. return $result;
  38. }
  39. }

 

Небольшие пояснения - методу checkStatus можно передать массив проверяемых емейлов или один емейл, далее составляется URL, ставим нужные опции curl и делаем запрос, ответ парсится регекспом.

Теперь можно написать:

 

StatusChecker в деле :)
  1. $checker = new StatusChecker();
  2. // Загружаем $emails например из файла
  3. foreach ($checker->checkStatus($emails) AS $email => $code) {
  4. print $email . ': ' . StatusChecker::describe($code) . "\n";
  5. }

 

P.S.: можно было и через fopen (при включенном allow_url_fopen) не используя curl, но я как-то не подумал...

22 июля 2010, 15:58
12842

Loading...

Комментарии

Eagle
0
0
Интересное решение :)
Мейл-агент не уважаю, но там же тоже есть режим невидимости? ^_^
> Мейл-агент не уважаю
Увы, но большинство нужных людей обычно сидят там :)
> там же тоже есть режим невидимости?
Не знаю, в документации протокола такого не видел
есть такой режим =)

Оставьте свой комментарий

Спасибо за открытие блога в Yvision.kz! Чтобы убедиться в отсутствии спама, все комментарии новых пользователей проходят премодерацию. Соблюдение правил нашей блог-платформы ускорит ваш переход в категорию надежных пользователей, не нуждающихся в премодерации. Обязательно прочтите наши правила по указанной ссылке: Правила

Также можно нажать Ctrl+Enter

Популярные посты

Самый большой провайдер в стране: методы работы с клиентами от «Казахтелеком»

Самый большой провайдер в стране: методы работы с клиентами от «Казахтелеком»

История о том, как Народный провайдер наваривается на своих клиентах, намерено не отключая услуги, и беря лишние деньги за ненужные и не оказываемые услуги.
ligaspravedlivosti
17 нояб. 2017 / 19:12
  • 33287
  • 194
Бесспорные доказательства – путь к упрощенному судопроизводству

Бесспорные доказательства – путь к упрощенному судопроизводству

В Казахстане введен институт упрощенного (письменного) судопроизводства, который позволяет повысить доступность правосудия и сократить сроки рассмотрения дел.
mark_iceberg
20 нояб. 2017 / 15:49
  • 15435
  • 3
«Почему я не хочу встречаться с мужчинами-казахами»

«Почему я не хочу встречаться с мужчинами-казахами»

Заранее отпишусь, данный пост не является попыткой оскорбить собственную нацию) Как говорится о вкусах не спорят, каждому свое.
Bonittta
16 нояб. 2017 / 14:28
  • 16812
  • 372
Новшества на орбите уголовного правосудия

Новшества на орбите уголовного правосудия

Недавно я приняла участие в международной конференции по модернизации уголовного процесса, прошедшей в Бурабае. В чем значимость данных реформ для обычного казахстанца?
mirabeisenova
20 нояб. 2017 / 16:22
  • 12271
  • 3
Почему катастрофический отток интеллектуальной элиты не тревожит Астану?

Почему катастрофический отток интеллектуальной элиты не тревожит Астану?

Как сообщает телеканал КТК, только за последние девять месяцев Казахстан покинули 28200 человек, из них почти пять тысяч инженеров, около 2700 экономистов и 1700 учителей.
openqazaqstan
17 нояб. 2017 / 11:00
  • 12025
  • 59
Задержан казахстанец, продававший детей в сексуальное рабство в ОАЭ и Бахрейн

Задержан казахстанец, продававший детей в сексуальное рабство в ОАЭ и Бахрейн

Подтверждаются худшие предположения, циркулирующие в соцсетях. Периодические исчезновения детей в разных регионах Казахстана объясняются не только семейными проблемами и «синими китами».
openqazaqstan
16 нояб. 2017 / 15:46
  • 8393
  • 57
О «топ-30», «топ-50» и прочих понтах можно пока забыть

О «топ-30», «топ-50» и прочих понтах можно пока забыть

В объективности выводов швейцарского банка Credit Suisse усомниться трудно – его экономические рейтинги относятся к самым авторитетным и их явно трудно упрекнуть в предвзятости
openqazaqstan
18 нояб. 2017 / 17:21
  • 7743
  • 87
Атамбаев под занавес президентства сделал всё, чтобы сжечь мосты

Атамбаев под занавес президентства сделал всё, чтобы сжечь мосты

На своей итоговой пресс-конференции в понедельник уходящий кыргызский президент говорил не об итогах своей деятельности, а о «плохом» Казахстане.
openqazaqstan
21 нояб. 2017 / 18:36
«Смех сквозь слезы», или 7 причин не любить Алматы

«Смех сквозь слезы», или 7 причин не любить Алматы

Жизнь в Алматы не всегда сладкая, как сахарная вата и мультики субботним утром. В этой ироничной статье автор блога «Almaty — My First Love» расскажет о семи причинах не любить Алматы.
AlmatyMyLove
20 нояб. 2017 / 13:12
  • 2629
  • 70