Вот, кстати, обе ссылки - отличный пример того, как именно формируются защитные параметры, типа wmsAuthSign.
Dee_Jay, одним из ваших вопросов был:
Dee_Jay пишет:Интересует вопрос, каким образом генерируется ключ?
Да, вот таким образом как в приведённой ссылке aleks123.
Там на русском расписывается, как именно на стороне сервера формируется значение параметра wmsAuthSign, чтобы никто, кроме клиента открывающий страницу сервиса не мог воспользоваться этой ссылкой.
Dee_Jay, в вашей ссылке на github реализуется именно то, что описывается в вышеприведённой статье.
Этот PHP код выполняется на стороне сервера, который предоставляет стриминг. Что мы там видим:
$ip = $_SERVER['REMOTE_ADDR'];
$key = "defaultpassword";
$validminutes = 20;
$str2hash = $ip . $key . $today . $validminutes . $signed_stream;
$md5raw = md5($str2hash, true);
$base64hash = base64_encode($md5raw);
$urlsignature = "server_time=" . $today ."&hash_value=" . $base64hash. "&validminutes=$validminutes" . "&strm_len=" . strlen($signed_stream);
$base64urlsignature = base64_encode($urlsignature);
$signedurlwithvalidinterval = $initial_url . "?wmsAuthSign=$base64urlsignature";
А видим, что:
1) Берётся IP адрес вызвавшего этот скрипт ($ip = $_SERVER['REMOTE_ADDR'];)
2) Некий пароль, который известен только серверу ($key = "defaultpassword";)
3) Всякая другая мишура
4) Всё это миксуется в какое-то значение (вычисляется хеш функция всего безобразия) и добавляется к сформированной ссылке на поток.
5) При обращении по подобной ссылке с плеера клиента - на стороне сервера делается опять всё то же самое (микшуются IP, пароль и проч, вычисляется хеш). Потом полученный результат сравнивается с тем, что указано в параметрах ссылки. Если не совпадает, то доступ запрещён.
Наличия IP адреса клиента - это облом для работоспособности ссылки, полученной не на стороне клиента.
Наличие какого-то пароля в скрипте на сервере - это облом подобрать алгоритм, чтобы сгенерировать своё значение wmsAuthSign. Этот добавленный пароль знает только сервер и никуда не передаётся. Прочитать исходник PHP скрипта, который выполняется на сервере - нельзя (ибо он выполняется на стороне, и только результат отдаёт клиенту от сервера). Поэтому бесполезно гадать, какой он там используется и как нам сгенерировать зашифрованное значение.
Это всё настолько просто. Что и думать нечего, что же придумать, чтобы генерировать "также". Не получится.
Объясняю, что происходит при загрузке страницы канала и нажатия на кнопку плей.
1) Ваш браузер делает запрос страницы к серверу, тот отдаёт html - содержание страницы, которая генерируется на стороне сервера и отдаётся вам уже как готовый текст.
2) На странице есть iframe на PHP скрипт. Ваш браузер делает запрос этого скрипта.
3) На том сервере при выполнении там скрипта, генерируется новое содержание страницы и с тем же генерируется новая ссылка на поток с каким-то значением wmsAuthSign. Сгенерированное содержимое страницы опять отдаётся вам.
4) Браузер с помощью javascript или html5 показывает вам плеер, где для плеера источник указана эта ссылка на поток.
5) При нажатии на кнопку плей ничего особенного не происходит. Ссылка на поток уже есть. Плеер просто начинает её воспроизводить.
Это примерно общая картина. Но на разных сайтах всё может отличаться.
Итого, что мы имеем?
А имеем мы всё то же, что я и устал повторять. Любую автоматизацию получения защищённых ссылок на поток нужно делать на стороне клиента.
А вот тут уже масса вариантов.
Что именно мы хотим и как именно мы хотим воспроизводить. В какой программе и проч.
Например, подобные вещи в HMS мы делаем с помощью скриптов.
Можно конечно заморочиться, поставить локально вебсервер с поддержкой PHP или других скриптовых языков и делать запросы на свой сервер.
А вот если вы это делаете только для VLC, где собираетесь смотреть - то там есть возможность писать Lua-скрипты, которые могут автоматизировать получение ссылки на реальный поток, при указании изначально только ссылки на страницу канала.
Так вот как это сделать для VLC, пару примеров я покажу и расскажу в следующем сообщении.
Sony Bravia KDL-32CX523