Защита от кражи ссылок
Работает для Nimble Streamer и Wowza Streaming Engine
Вставка прямых ссылок (или хотлинкинг) — это процесс ретрансляции потоковой передачи медиа-данных. Защита стриминга является определяющим фактором для бизнеса, который продаёт премиум-доступ к своему контенту. Если у вас есть какой-либо эксклюзивный контент, то вы теряете деньги в результате использования конкурентами вставки прямых ссылок.
Чем мы можем помочь?
Мы предоставляем авторизацию на основе токенов для сверки подписи каждого соединения с оригинальной опубликованной подписью.
Можно защитить следующие сущности Nimble Streamer: весь сервер, приложение и отдельный поток.
У Wowza могут быть защищены: весь сервер, виртуальный хост, приложение, экземпляр приложения, отдельный поток.
Защита состоит из 3 частей: Поддержка на сервере (встроена в Nimble Streamer и агент для Wowza), фрагмента кода на веб-странице, который генерирует подпись для транслируемых медиа-данных и интерфейса управления для активации защиты.
Защита от ретрансляции интегрируется в 2 этапа:
- Изменение веб-страницы, содержащей медиа-плеер, с целью генерации подписи для URL медиа-данных.
- Настройка и активация защиты с помощью панели управления.
1. Генерация подписи к адресу потока
Для того, чтобы подписать URL медиа-данных для дальнейшего распознавания и обработки, страница с медиа-плеером должна быть частично модицифирована.
1.1 Код для подписи
Например, у вас есть следующие URL для живого вещания:
rtmp://ultimatestreamingservice.com:1935/live/stream
http://ultimatestreamingservice.com:8081/live/stream/playlist.m3u8
Подписанные URL будут выглядеть так:
rtmp://ultimatestreamingservice.com:1935/live?wmsAuthSign=c2VydmVyX3RpbWU9NS80LzIwMTIgODozMzowNSBBTSZoYXNoX3ZhbHVlPXE3MjN6aEVmdGFUOUJoWjBQTmw1TVE9PSZ2YWxpZG1pbnV0ZXM9MjA2/stream
http://ultimatestreamingservice.com:8081/live/stream/playlist.m3u8?wmsAuthSign=c2VydmVyX3RpbWU9NS80LzIwMTIgODozMzowNSBBTSZoYXNoX3ZhbHVlPXE3MjN6aEVmdGFUOUJoWjBQTmw1TVE9PSZ2YWxpZG1pbnV0ZXM9MjA2
Для генерации подписи необходимо изменить исходный код своей клиентской части, добавив специальный фрагмент кода.
Нажмите здесь, чтобы посмотреть фрагмент кода на PHP.
Нужно добавить три подсвеченных фрагмента кода в скрипты вам на сервер. Больше примеров можно найти на странице WMSAuth в github.
<!DOCTYPE html>
<html>
<head>
<!-- 1. jquery library -->
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.js"></script>
<script src="http://cdn.jquerytools.org/1.2.6/all/jquery.tools.min.js"></script>
<!-- 2. flowplayer -->
<script src="http://releases.flowplayer.org/js/flowplayer-3.2.12.min.js"></script>
<style>
a.rtmp { display:block; width:640px; height:360px; margin:25px 0; text-align:center; }
a.rtmp img { border:0px; margin-top:140px; }
</style>
</head>
<body>
<?php
/*
In this example the source media is located at
rtmp://server.test.com:1935/vod/mp4:sample.mp4
Flow player has the name split by 2 part. They are stored in respective variables below.
*/
$base_url = 'rtmp://server.test.com:1935/vod';
$video_url = 'mp4:sample.mp4';
$today = gmdate("n/j/Y g:i:s A");
$ip = $_SERVER['REMOTE_ADDR'];
$key = "default"; //enter your key here
$validminutes = 20;
$str2hash = $ip . $key . $today . $validminutes;
$md5raw = md5($str2hash, true);
$base64hash = base64_encode($md5raw);
$urlsignature = "server_time=" . $today ."&hash_value=" . $base64hash. "&validminutes=$validminutes";
$base64urlsignature = base64_encode($urlsignature);
?>
<div class="box black">
<a class="rtmp" href="<?php echo $video_url; ?>" style="background-image:url(bunny.jpg)">
<img src="play_text_large.png" />
</a>
</div>
<script>
$(function() {
$f("a.rtmp", "http://releases.flowplayer.org/swf/flowplayer-3.2.16.swf", {
// configure both players to use rtmp plugin
clip: {
provider: 'rtmp'
},
// here is our rtpm plugin configuration
plugins: {
rtmp: {
url:"http://releases.flowplayer.org/swf/flowplayer.rtmp-3.2.12.swf",
netConnectionUrl: '<?php echo "$base_url?wmsAuthSign=$base64urlsignature"; ?>'
}
}
});
});
</script>
</body></html>
В этом примере key обозначает пароль, который будет использоваться в дальнейшем для настройки правил в веб-панели, а validminutes обозначает время жизни ссылки в минутах. В течение этого времени пользователи могут начать воспроизведение медиа-данных, затем ссылка становится недействительной.
1.2 Больше примеров
Вы можете посмотреть ещё примеры для других языков программирования в github репозитории WMSPanel и адаптировать их код под себя.
2. Установка настроек в панели управления
После того, как фрагмент кода включен на стороне веб-сервера, Nimble Streamer (или агент Wowza) должен быть извещён о настройках защиты. Пройдите в меню "Control" -> "WMSAuth paywall setup".
WMSAuth - это часть функциональности Paywall для защиты от повторного вещания и некоторых других функций.
2.1 Группа WMSAuth
В WMSAuth любое ограничение может быть применено к группе серверов. Таким образом, первое, что необходимо сделать — это создать группу и добавить в неё один или несколько серверов. Детали приведены на скриншоте.

2.2 Правила WMSAuth
Внутри группы может быть определено несколько правил, каждое из которых работает со своим набором сущностей. Нажмите "Добавить правило", чтобы попасть на страницу создания правила. На скриншоте ниже есть пример регулярных выражений, которые можно применить к приложению, экземпляру приложения или отдельному потоку.

Последнее, что нужно указать — это ключ или пароль, который будет вставлен в подпись медиа-данных на стороне веб-сервера (см. раздел Генерация подписи медиа-данных).
После сохранения правила оно будет применено к серверу в течение нескольких секунд.

Параметр Time tolerance означает максимально допустимую разницу во времени между веб-сервером и медиа-сервером. Имеет смысл использовать этот параметр, если вы не можете настроить одно и то же время на обоих серверах.
Это всё, что нужно?
Да. Теперь, когда ваши медиа-данные подписаны с помощью подписи WMSAuth, Nimble Streamer или Wowza будет проверять каждый входящий запрос на соответствие его подписи заданным правилам защиты медиа-данных. В течение нескольких милисекунд соединение будет либо разрешено, либо запрещено.
Для Nimble Streamer также доступна подпись для каждого потока.
Можно совмещать эту функциональность с блокировкой географических и диапазонов IP-адресов, а также c ограничением количества соединений и пропускной способности.
Защита от вставки прямых ссылок является основой для платформы оплаты за просмотр.
Вопросы или проблемы
Не работает защита от вставки прямых ссылок? Внимательно прочтите нужный пункт часто задаваемых вопросов.
Что если сервис WMSPanel недоступен? Защита от вставки прямых ссилок будет работать независимо от доступности WMSPanel. Если ваш сервер по каким-либо причинам не сможет соединиться с сервисом WMSPanel, всё равно защита будет отлично работать. Панель управления не используется после того, как завершена настройка правил.