← Форум / Рецепты / Защита ссылок по IP (без nginx)
Поставил uppod и естественно решил как и все защитить контент….
Нашел метод — ссылка
Начал его реализовывать. И тут мне стало понятно что метод совсем сырой(20 сек потребовалось его обойти. причина — сама ссылка), да и не всегда реализуем для большинства(nginx для многих потемки).
имеем в начале ссылку на файл
За идею взял скрипт php предложенный автором метода и дописал в нем кодирование ссылки.
Видео у нас находится в папке video.
В корень сайта кидаем video.php
<?php
$hash =$_GET['hash'];
$hash=explode('filename',$hash);
$filename = $hash[1];
$filename=base64_decode($filename);//декодируем имя файла
$hash=explode('hash=',$hash[0]);
$hash=$hash[0];
$key=base64_encode('key');//кодируем любой ключ
$ip = md5(getenv("REMOTE_ADDR").$key);//делаем уникальный hash на основе ip и ключа.
if ($hash == $ip)
{
header('Content-type: video/mp4');
header("X-Accel-Redirect:/video/".$filename);
}
else
{
header('Content-type: video/mp4');
header("X-Accel-Redirect:/video/zastavka.mp4"); //заствака - ваш ролик. Показывается если ссылку на ваш ролик кто-то спер.
}
?>
Генерируем ссылку перед вставкой в плеер:
<?php
$video_name='video_1223.mp4';
$file=base64_encode($video_name);//кодируем имя файла
$key=base64_encode('key');//кодируем свой ключ
$ip = md5(getenv("REMOTE_ADDR").$key);//делаем уникальный hash на основе ip и ключа
$link='http://site.ru/video.php?hash='.$ip.'filename'.$file;
?>
И далее уже $link вставляем в код плеера.
В данном случаи я дополнительно кодирую имя файла используя base64. :) Это тоже можно обойти, но уже не всем это дано. Лучше тут использовать свою кодировку.
1. В корень сайта с DLE залить файл video.php (код выше)
2. Разрешить в настройках DLE добавление php в шаблоны.
3. Публикацию видео организовать не через добавление новостей, а через статические страницы. В код статической страницы, через встроенный html редактор прописать php код:
<?php
$video_name='ваше_video.mp4';
$file=base64_encode($video_name);//кодируем имя файла
$key=base64_encode('key');//кодируем свой ключ
$ip = md5(getenv("REMOTE_ADDR").$key);//делаем уникальный hash на основе ip и ключа
$link='http://site.ru/video.php?hash='.$ip.'filename'.$file;
?>
4. В качестве ссылки в плеер загнать:
|code|<?= $link ?>|/code|
<?php
$video_name='video_1223.mp4';
$file=base64_encode($video_name);//кодируем имя файла
$key=base64_encode('key');//кодируем свой ключ
$ip = md5(getenv("REMOTE_ADDR").$key);//делаем уникальный hash на основе ip и ключа
$link='http://site.ru/video.php?hash='.$ip.'filename'.$file;
?>
Здравствуйте. Выше показан пример с одним файлом. А как быть с подключаемыми плейлистами .txt, в котором видео штук двадцаь? Учитывая вот этот кусок кода для одного файла? $video_name=video_1223.mp4;
ну так если рассуждать… вообще ни как не защитить:) вы же его отдаете и я его в любом случаи получаю на свой комп, а значит смогу записать его в файлик на компе. с помощью таких методов вы отсекаете кучу народа которые могут воровать контент.
вообще будет шикарно если с в догонку к данному методу с помощью nginx сделать лимит на скорость отдачи файлов для одного пользователя. тогда тоже усложнит воровство. но как я уже говорил для много nginx потемки.
воровать контент будут пытаться, но увы.. у большенства это не получится.
Этот вариант прокатит от школоты, как и шифрование ссылок у uppod. Прямую ссылку можно получить. Вариант от Вироники не позволит получить пряму ссылку на сам файл без хэша.
конечно можно, но тогда воровать будут легко обойти… а данный метод прост и имеет хорошую фишку, которая может принести пользу… похоже вы ее не заметили.
Оригинальный файл можно прятать за символическими ссылками.
Пример: example.com/content/y2015/2015video_party.mp4 внутренний путь, который наружу никогда не светится.
делаем символическую ссылку на папку y2015 в корень сайта (к примеру), называет ее хешем от каких-либо данных, например будет "abcdef123",
example.com/abcdef123/2015video_party.mp4
Это защитит от прямых скачиваний, но спасет от скачиваний с разных IP.
Чтобы ввести ограничения на скачивания файлов по IP, можно поиграть с регулярками в nginx и значением IP адреса клиента и получить что-то вроде ab2cd3ef, и чтобы эта строка фигурировала в пути к файлу в самом nginx.
То есть: клиент получил ссылку example.com/abcdef123/2015video_party.mp4
nginx в локальной пути дописал ab2cd3ef после abcdef123 и в итоге выдал клиенту файл ПО ссылке example.com/abcdef123/2015video_party.mp4 из локального каталога /abcdef123/ab2cd3ef/ .
Если по аналогичной ссылке "example.com/abcdef123/2015video_party.mp4" запросит другой пользователь, то хвостик "ab2cd3ef" будет отличатся, и соотвественно nginx каталок и файл не найдет и выдаст 404.
Для этого надо уметь работать с linux (на уровне ln создания ссылки и rm удаления ссылки через 24 часа или сколько надо) и иметь доступ к файловой системе.
Это самая простая реализация и менее ресурсозатратная, так как по сути мы имеем:
-логика в конфиге nginx
-скрипт на PHP (или любом другом языке) вызывается в момент генерации ссылки
-скрипт в cron, который запускается раз в 10 минут, делает по базе выборку истекших ссылок и удаляет символические ссылки, который им соответствуют.
Проще в DLE все по шаблону делать. Прямую ссылку кидать в доп. поле и чтобы автоматом выводило уже кодированную при заходе на страницу с видео ссылку. /engine/modules/addnews.php (если не ошибаюсь) добавить код для генерации ссылки, если тег объявлен. Делов на 5 минут. Там вроде макросы как раз прописываются для вывода в шаблоне.
Знатоки php подскажите куда этот код нужно вставить
$video_name='video_1223.mp4';
$file=base64_encode($video_name);//кодируем имя файла
$key=base64_encode('key');//кодируем свой ключ
$ip = md5(getenv("REMOTE_ADDR").$key);//делаем уникальный hash на основе ip и ключа
$link='http://site.ru/video.php?hash='.$ip.'filename'.$file;
Пробовал сделать так
$decode_url = $url;
if ( count($sizes) == 2 ) $decode_url = $width."x".$height.",".$decode_url;
if( $type == "flv" or $type == "mp4" or $type == "m4v" or $type == "m4a" or $type == "mov" or $type == "3gp" or $type == "f4v" or $detect_rtmp) {
$url = array ();
$url = implode( ", ", $url );
$id_player = md5( microtime() );
$video_name=($decode_url);
$file=base64_encode($video_name);//кодируем имя файла
$key=base64_encode('key');//кодируем свой ключ
$ip = md5(getenv("REMOTE_ADDR").$key);//делаем уникальный hash на основе ip и ключа
$link='http://site.ru/video.php?'.$ip.'filename'.$file;
Да забыл исправить строку
return "<!--dle_video_begin:{$decode_url}-->
на
return "<!--dle_video_begin:{$link}-->
а то при просмотре исходного кода ссылка палится, а так все зашифровано
Похоже общаюсь в этой ветке я сам собой, отвечу может кому нибудь понадобится. Проблему со сторонними ссылками решается через плейлист, где в папку например video бросаете файл в формате .txt а в нем прописываете стороннюю ссылку. в коде плеера вместо строки file={$link} пишите pl={$link}. Но есть одна трудность которую я не решил, при просмотре исходного кода ссылка выглядит в виде
Всем привет, попробовал ваш вариант с video.php, закинул на сайт, сделал примитивную форму, для шифрования ссылки, с кодом
<?php
$video_name='video_1223.mp4';
$file=base64_encode($video_name);//кодируем имя файла
$key=base64_encode('key');//кодируем свой ключ
$ip = md5(getenv("REMOTE_ADDR").$key);//делаем уникальный hash на основе ip и ключа
$link='http://site.ru/video.php?hash='.$ip.'filename'.$file;
?>
вставляю шифрованную ссылку в плеер uppod, все работает, видео проигрывается…
меняю себе ip, захожу на сайт, а мне теперь показывается видео-заглушка. И это понятно, ведь проверка на IP идет. Я так понимаю, что по данному коду, если я сгенерировал ссылку, то кроме меня ее никто не просмотрит, и всем остальным будет показывать заглушка… То ли я что-то не так понял… Как сделать так, чтобы я генерировал ссылку, и она показывалась всем, а если захотят скачать, вот тогда и заглушку чтоб качали…
На самом деле через плей листы очень не удобно, особенно если парсишь =), намного проще вставить такой код
[code]header("Location: ".$filename);[code/]
вместо этого
[code]header("X-Accel-Redirect:/video/".$filename);[code/]
и будет чудо
чудо есть но не совсем, да при просмотре исходного кода страницы ссылка кодирована например в виде,
ttp://test.info/video.php?hash=17e5459b8301a2c72dc05ef29aee68f8filenameUG9pc29uLm1wNA==
но при проигрывании в плеере DownloadHelper показывает ссылку в чистом виде не защищенную, например ссылка
Кому-нибудь удалось сделать подобную защиту на ucoz (сериалы с плейлистами)? Видел работающее решение на сайте онлайнфильм. Может поделитесь информацией или поможете с установкой (разумеется не бесплатно)?
была вызвана на прямую в строке поиска или в тексте программы ???
У меня получается так, что видео работает, на сайте, и когда ссылку вставляешь в строку поиска то правой кнопкой->скачать скачивается на компьютер без проблем
Во-первых, разберитесь более детально в правилах. В данном случаи метод не работает. Перед RewriteRule \.(flv|mp4)$ — [F] еще что-то должно быть.(не буду говорить что, изучите сами).
Из сформированных вами вопрос я понял что вы вообще не поняли что сделали)))
По факту вы должны указать путь к плееру и сказать что через вот него можно смотреть, а на прямую никому не давать качать.
Во-вторых, даже если вы все правильно сделаете, это срабатывает в Chrome, Opera и даже IE, то есть скачать нельзя, но в плеере просмотреть можно. Но не для браузеров Mozilla и Safari. Проблема в формировании GET запросов в этих браузерах.
P.S.: ну и как я уже писал. мой метод очень прост и до беспредела гениален зачем бороться с копированием, если все равно скопируют. я "скамуниздю" с любого сайта видео, а вернее ссылку на виде, само видео как привило нафик не кому не нужно. А ведь это и делается в 99% случаев. Так может лучше обратить ситуацию для себя в пользу? тот кто шарит тот поймет о чем я и допилит метод :)
Теперь видео flv|mp4 проигрывается только на моём сайте и ещё двух сайтах №1 и №2, моих же сайтах.
А те кто ранее копировали мои прямые ссылки и вставляли к себе на сайты получают сейчас вот такое в плеере:
"Аn error occured while reading video"
Просто в моём случае уже не вижу смысла кодировать ссылки. Зачем?
Есть только желание не разрешать пользователям скачивать видео, а только просматривать через плеер.
Ссылка элементарно берётся со страницы с видео прогой Flash Video Downloader, например.
Всем добра. Имеется плеер. В нем соотв. путь для видео файла. Когда прописываю этот путь напрямую ссылка, то перемотка видео работает. Могу смотреть видео хоть с середины. А вот когда в пути видео прописываю video.php
Вот нет!(((( пробовал до этого /video/video.mp4?start=$start и нет. Сейчас опять попробовал и снова нет(((((( Спать не дает эта проблема. Поэтому и не могу использовать данный метод шифрования(
2. Разрешить в настройках DLE добавление php в шаблоны.
3. Публикацию видео организовать не через добавление новостей, а через статические страницы. В код статической страницы, через встроенный html редактор прописать php код:
$video_name='ваше_video.mp4';
$file=base64_encode($video_name);//кодируем имя файла
$key=base64_encode('key');//кодируем свой ключ
$ip = md5(getenv("REMOTE_ADDR").$key);//делаем уникальный hash на основе ip и ключа
$link='http://site.ru/video.php?hash='.$ip.'filename'.$file;
?>
4. В качестве ссылки в плеер загнать:
|code|<?= $link ?>|/code|
А куда эту часть кода всунуть?
<?php
$video_name='video_1223.mp4';
$file=base64_encode($video_name);//кодируем имя файла
$key=base64_encode('key');//кодируем свой ключ
$ip = md5(getenv("REMOTE_ADDR").$key);//делаем уникальный hash на основе ip и ключа
$link='http://site.ru/video.php?hash='.$ip.'filename'.$file;
?>
А сам php куда пихать, в статью что ли? Или это продолжение video.php.
Извини, но я не могу разобраться.
вообще будет шикарно если с в догонку к данному методу с помощью nginx сделать лимит на скорость отдачи файлов для одного пользователя. тогда тоже усложнит воровство. но как я уже говорил для много nginx потемки.
воровать контент будут пытаться, но увы.. у большенства это не получится.
Оригинальный файл можно прятать за символическими ссылками.
Пример: example.com/content/y2015/2015video_party.mp4 внутренний путь, который наружу никогда не светится.
делаем символическую ссылку на папку y2015 в корень сайта (к примеру), называет ее хешем от каких-либо данных, например будет "abcdef123",
example.com/abcdef123/2015video_party.mp4
Это защитит от прямых скачиваний, но спасет от скачиваний с разных IP.
Чтобы ввести ограничения на скачивания файлов по IP, можно поиграть с регулярками в nginx и значением IP адреса клиента и получить что-то вроде ab2cd3ef, и чтобы эта строка фигурировала в пути к файлу в самом nginx.
То есть: клиент получил ссылку example.com/abcdef123/2015video_party.mp4
nginx в локальной пути дописал ab2cd3ef после abcdef123 и в итоге выдал клиенту файл ПО ссылке example.com/abcdef123/2015video_party.mp4 из локального каталога /abcdef123/ab2cd3ef/ .
Если по аналогичной ссылке "example.com/abcdef123/2015video_party.mp4" запросит другой пользователь, то хвостик "ab2cd3ef" будет отличатся, и соотвественно nginx каталок и файл не найдет и выдаст 404.
Для этого надо уметь работать с linux (на уровне ln создания ссылки и rm удаления ссылки через 24 часа или сколько надо) и иметь доступ к файловой системе.
Это самая простая реализация и менее ресурсозатратная, так как по сути мы имеем:
-логика в конфиге nginx
-скрипт на PHP (или любом другом языке) вызывается в момент генерации ссылки
-скрипт в cron, который запускается раз в 10 минут, делает по базе выборку истекших ссылок и удаляет символические ссылки, который им соответствуют.
1. В корне сайта создал файл video.php с кодом который дан выше
все видео файлы проигрываются плеером uppod, соответственно в файле engine\classes\parse.class.php есть код
$decode_url = $url;
if ( count($sizes) == 2 ) $decode_url = $width."x".$height.",".$decode_url;
if ( stripos ( $url, "rtmp:" ) === false ) $detect_rtmp = false; else $detect_rtmp = true;
if( $type == "flv" or $type == "mp4" or $type == "m4v" or $type == "m4a" or $type == "mov" or $type == "3gp" or $type == "f4v" or $detect_rtmp) {
$url = array ();
$url = implode( ", ", $url );
$id_player = md5( microtime() );
return "<!--dle_video_begin:{$decode_url}-->
<object id=\"videoplayer-{$id_player}\" type=\"application/x-shockwave-flash\"
data=\"" . $config['http_home_url'] . "engine/classes/flashplayer/uppod.swf\" width=\"825\" height=\"500\">
<param name=\"allowFullScreen\" value=\"true\" />
<param name=\"allowScriptAccess\" value=\"always\" />
<param name=\"wmode\" value=\"transparent\" />
<param name=\"movie\" value=\"" . $config['http_home_url'] . "engine/classes/flashplayer/uppod.swf\" />
<param name=\"flashvars\" value=\"comment="."&st=" . $config['http_home_url'] . "engine/classes/flashplayer/skin.txt&file={$decode_url}\" />
</object><!--dle_video_end-->";
Знатоки php подскажите куда этот код нужно вставить
$video_name='video_1223.mp4';
$file=base64_encode($video_name);//кодируем имя файла
$key=base64_encode('key');//кодируем свой ключ
$ip = md5(getenv("REMOTE_ADDR").$key);//делаем уникальный hash на основе ip и ключа
$link='http://site.ru/video.php?hash='.$ip.'filename'.$file;
Пробовал сделать так
$decode_url = $url;
if ( count($sizes) == 2 ) $decode_url = $width."x".$height.",".$decode_url;
if ( stripos ( $url, "rtmp:" ) === false ) $detect_rtmp = false; else $detect_rtmp = true;
if( $type == "flv" or $type == "mp4" or $type == "m4v" or $type == "m4a" or $type == "mov" or $type == "3gp" or $type == "f4v" or $detect_rtmp) {
$url = array ();
$url = implode( ", ", $url );
$id_player = md5( microtime() );
$video_name=($decode_url);
$file=base64_encode($video_name);//кодируем имя файла
$key=base64_encode('key');//кодируем свой ключ
$ip = md5(getenv("REMOTE_ADDR").$key);//делаем уникальный hash на основе ip и ключа
$link='http://site.ru/video.php?'.$ip.'filename'.$file;
return "<!--dle_video_begin:{$link}-->
<object id=\"videoplayer-{$id_player}\" type=\"application/x-shockwave-flash\"
data=\"" . $config['http_home_url'] . "engine/classes/flashplayer/uppod.swf\" width=\"825\" height=\"500\">
<param name=\"allowFullScreen\" value=\"true\" />
<param name=\"allowScriptAccess\" value=\"always\" />
<param name=\"wmode\" value=\"transparent\" />
<param name=\"movie\" value=\"" . $config['http_home_url'] . "engine/classes/flashplayer/uppod.swf\" />
<param name=\"flashvars\" value=\"comment="."&st=" . $config['http_home_url'] . "engine/classes/flashplayer/skin.txt&file={$link}\" />
</object><!--dle_video_end-->";
но вылетает ошибка в плеере video.php?17e5459b8301a2c72dc05ef29aee68f8filenameaHR0cDovL3Rlc3QuaW5mby92aWRlby9Qb2lzb24ubXA0 не найден
При добавлении в новость видео с ссылкой
http://test.info/video/Cappella.mp4
после её публикации она становится
http://test.info/video.php?17e5459b8301a2c72dc05ef29aee68f8filenameaHR0cDovL3Rlc3QuaW5mby92aWRlby9DYXBwZWxsYS5tcDQ=
если её открыть в браузере скачивается или открывается файл video.php пустой
это
header("Content-type: application/octet-stream");
header("Content-type: video/mp4"); // В зависимости flv/mp4
header("Content-disposition: attachment; /video/".$filename);
По сути еще нужен readfile();
"Поиграйте" с первыми двумя заголовками, удалите, оставьте. Должно сработать.
if ( count($sizes) == 2 ) $decode_url = $width."x".$height.",".$decode_url;
if ( stripos ( $url, "rtmp:" ) === false ) $detect_rtmp = false; else $detect_rtmp = true;
if( $type == "flv" or $type == "mp4" or $type == "m4v" or $type == "m4a" or $type == "mov" or $type == "3gp" or $type == "f4v" or $detect_rtmp) {
$url = array ();
$url = implode( ", ", $url );
$video_name=$decode_url;
$file=base64_encode($video_name);//кодируем имя файла
$key=base64_encode('key');//кодируем свой ключ
$ip = md5(getenv("REMOTE_ADDR").$key);//делаем уникальный hash на основе ip и ключа
$link='/video.php?hash='.$ip.'filename'.$file;
$id_player = md5( microtime() );
return "<!--dle_video_begin:{$decode_url}-->
<object id=\"videoplayer-{$id_player}\" type=\"application/x-shockwave-flash\"
data=\"" . $config['http_home_url'] . "engine/classes/flashplayer/uppod.swf\" width=\"825\" height=\"500\">
<param name=\"allowFullScreen\" value=\"true\" />
<param name=\"allowScriptAccess\" value=\"always\" />
<param name=\"wmode\" value=\"transparent\" />
<param name=\"movie\" value=\"" . $config['http_home_url'] . "engine/classes/flashplayer/uppod.swf\" />
<param name=\"flashvars\" value=\"comment="."&st=" . $config['http_home_url'] . "engine/classes/flashplayer/skin.txt&file={$link}\" />
</object><!--dle_video_end-->";
а ссылка на видео в DLE при создании новости будет такая [video=Cappella.flv]
в итоге для посетителей ссылка на видео будет
Это условие работает если есть папка video на вашем сайте и там есть файл Cappella.flv
Вопрос к знатокам PHP как вставить ссылку с стороннего сайта например
после установки в плеер
return "<!--dle_video_begin:{$decode_url}-->
на
return "<!--dle_video_begin:{$link}-->
а то при просмотре исходного кода ссылка палится, а так все зашифровано
Скажите может что то нужно еще прописать video.php кроме упомянутого кода?
$video_name='video_1223.mp4';
$file=base64_encode($video_name);//кодируем имя файла
$key=base64_encode('key');//кодируем свой ключ
$ip = md5(getenv("REMOTE_ADDR").$key);//делаем уникальный hash на основе ip и ключа
$link='http://site.ru/video.php?hash='.$ip.'filename'.$file;
?>
вставляю шифрованную ссылку в плеер uppod, все работает, видео проигрывается…
меняю себе ip, захожу на сайт, а мне теперь показывается видео-заглушка. И это понятно, ведь проверка на IP идет. Я так понимаю, что по данному коду, если я сгенерировал ссылку, то кроме меня ее никто не просмотрит, и всем остальным будет показывать заглушка… То ли я что-то не так понял… Как сделать так, чтобы я генерировал ссылку, и она показывалась всем, а если захотят скачать, вот тогда и заглушку чтоб качали…
[code]header("Location: ".$filename);[code/]
вместо этого
[code]header("X-Accel-Redirect:/video/".$filename);[code/]
и будет чудо
вместо этого
и будет чудо, оно начнет не отдавать с сервера а редиректить на нужную ссылку
ttp://test.info/video.php?hash=17e5459b8301a2c72dc05ef29aee68f8filenameUG9pc29uLm1wNA==
но при проигрывании в плеере DownloadHelper показывает ссылку в чистом виде не защищенную, например
Подскажите, а можно ли этим способом защитить потоковое (live) видео ?
У меня получается так, что видео работает, на сайте, и когда ссылку вставляешь в строку поиска то правой кнопкой->скачать скачивается на компьютер без проблем
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^
RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?google. [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?yandex. [NC]
RewriteRule \.(flv|mp4)$ [F]
По сути тогда шифрование вообще не нужно?
Но как запретить скачивать по ссылкам, а только просматривать через плеер на сайте?
Во-первых, разберитесь более детально в правилах. В данном случаи метод не работает. Перед RewriteRule \.(flv|mp4)$ — [F] еще что-то должно быть.(не буду говорить что, изучите сами).
Из сформированных вами вопрос я понял что вы вообще не поняли что сделали)))
По факту вы должны указать путь к плееру и сказать что через вот него можно смотреть, а на прямую никому не давать качать.
Во-вторых, даже если вы все правильно сделаете, это срабатывает в Chrome, Opera и даже IE, то есть скачать нельзя, но в плеере просмотреть можно. Но не для браузеров Mozilla и Safari. Проблема в формировании GET запросов в этих браузерах.
P.S.: ну и как я уже писал. мой метод очень прост и до беспредела гениален зачем бороться с копированием, если все равно скопируют. я "скамуниздю" с любого сайта видео, а вернее ссылку на виде, само видео как привило нафик не кому не нужно. А ведь это и делается в 99% случаев. Так может лучше обратить ситуацию для себя в пользу? тот кто шарит тот поймет о чем я и допилит метод :)
P. S. S.: суть не в методе, а в идеологии ;)
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http ://(www\./)?мой-сайт\.ru/ [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?сайт-друг-1. [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?сайт-друг-2. [NC]
RewriteRule \.(flv|mp4)$ — [F]
Теперь видео flv|mp4 проигрывается только на моём сайте и ещё двух сайтах №1 и №2, моих же сайтах.
А те кто ранее копировали мои прямые ссылки и вставляли к себе на сайты получают сейчас вот такое в плеере:
"Аn error occured while reading video"
RewriteCond %{HTTP_REFERER} !^http ://(www\./)?мой-сайт\.ru/ [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?сайт-друг-1. [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?сайт-друг-2. [NC]
RewriteRule \.(flv|mp4)$ — [F]
Уже несколько лет пользуюсь таким способом и проблем нет.
Правда отвалилось часть аудитории, которая копировала мои ссылки к себе на сайты.
Есть только желание не разрешать пользователям скачивать видео, а только просматривать через плеер.
Ссылка элементарно берётся со страницы с видео прогой Flash Video Downloader, например.
filmfree, защита по реферу не срабатывает в мозилле, по крайней мере в моей версии браузера.
содержимое video.php :
header(Content-type: video/mp4);
header("X-Accel-Redirect:/video/video.mp4");
то видео начинает проигрываться, а вот перемотка уже не пашет. Как решить проблему?