Всё началось с того, что на работе через прокси не захотела работать
веб-камера с видом на гору Зелёная. Но ведь сейчас самый сезон в перерывах от работы смотреть на состояние снежного покрова в Шерегеше! «Не порядок!» - подумал я.
Придя домой, я начал понимать, как всё это дело работает.
Chrome Developer Tools вместе с Firebug молчали, как будто ничего об этом потоке и не знали. Всевозможные плагины для скачивания мультимедиа и просмотра заголовков тоже никакой тайны мне не открыли. Ну окей, наверняка, в параметрах Flash проигрывателя, наверняка, есть ссылка на файл или поток. Ссылка-то была, но она оказалась зашифрована. На секунду мне показалось, что это base64, но base64 -d меня изрядно расстроил.
Дальше в бой пошёл мой любимый поисковик. Оказалось, что этот плеер не самостоятельный: у него есть панель управления, в которой вводится ключ, которым шифруются ссылки. Также оказалось, что желающих узнать, с какого же адреса играет тот или иной ролик - уйма. Нашлись даже желающие декомпилировать SWF, понять алгоритм, но их старания были безрезультатны. SWF мне декомпилировать нечем и негде, поэтому этот вариант было решено оставить.
Нашлись даже несколько решений в виде ссылок, работавших когда-то году в 2007-м, например, или скрытых сообщениях на форумах - тех самых сообщениях, для просмотра которых надо написать как минимум 100500 постов в этот же форум. Этот вариант был оставлен.
Оставался единственный вариант - снифить. Wireshark на маке почему-то работать отказался, поэтому пришлось вернуться к истокам и вспомнить про tcpdump. Полтора часа беглого просмотра пакетов ни к чему не привели: ни один из известных мне протоколов не проскакивал. Пришлось идти и подкреплять свои знания в Википедии. Как говорится, век живи - век учись. Был открыт для себя протокол RTMP.
Ещё через час просмотра пакетов и комбинации различных опций tcpdump таки была выловлена часть URI. Ещё через полчаса путём strings, grep, cut, sed, etc была выловлена оставшаяся часть, которая после конкатинации с первой дала ожидаемый результат.
Хорошо, адрес RTMP потока нам известен, что делать дальше? Взять и сконвертировать в flv? Таких возможностей в области входящего траффика провайдер сервера мне не позволит. Компромиссное решение - делать скриншоты.
После беглого поиска была найдена утилита rtmpdump, умеющая превращать RTMP поток в FLV. Дальше всё просто: ffmpeg прекрасно делает скриншоты из видеоотрезка.
Отлично, скриншоты идут мне на почту. Но зачем мне просто получать скриншоты? Я хочу получать радостные письма! Ещё немного поиска и разбирательства с imagemagick - и письма идут мне на почту только тогда, когда в Шерегеше начинается снег. Условие «на картинке идёт снег» - очень сомнительное, конечно, но уже сегодня утром я получил радостное послание :).
Тут для зафаерволенных
можно смотреть, что вот прямо сейчас в Шерегеше валит снег. Пора, наверное, готовить оборудование :).