Было дело, я тоже металась по инету в поисках защиты контента…
Скажу сразу что раздача файлов средствами php для киношек не подходит, хотя есть даже специальные средства ссылка Слишком уж ресурсоёмкий процес получается! Самый оптимальный вариан это раздача киношек сервером NginX, для защиты контента его нужно немного настроить, поэтому нужер root доступ к серверу, хотя это может быть и VPS конечно…
Решение данной задачи с помощью nginx реализуется просто и очень эффективно. В конфиг nginx в блок server для нашего домена добавляем:
К сожалению форум выстригает некоторые символы, вообщем в строке реврайта
get.php?hash="знак доллара"1&filename="знак доллара"2 last;
"знак доллара" это "$"
Первый локейшен это настройка реврайта NginX, а второй это папка от корня вашего домена в которой лежит видео, то есть вы закрываете внешний доступ к этой папке, теперь NginX будет отдавать файлы с этой папки только по внутреннему запросу (internal)
В корень домена ложим файлик get.php это обработчик flv запросов
Тут есть небольшая проблемка, для псевдостреминга("перемотки"), плеер приклепляет к ссылке смещение в байтах через знак ?, регулярка в реврайте конфига NginX не может выбрать весь GET запрос, вернее может, но только до знака "?", поэтому я малость извратилась и вставила $url=explode(’?’,$url);…
неуклюже конечно, но зато перемотка в плеере работает
Вот текст обработчика flv запросов get.php
$hash =$_GET['hash'];
$filename = $_GET['filename'];
$ip = md5(getenv(”REMOTE_ADDR”).”key”);
if ($hash == $ip){
$url=$_SERVER['REQUEST_URI'];
$url=explode(’?',$url);
$url=$url[1];
if (isset($url)){$filename .=’?’.$url;}
header(”Content-Type: video/x-flv”);
header(”X-Accel-Redirect:/video/”.$filename);
die();
}
echo “фигу вам! :)”; //Ну или можно клипчик с фигой показать, для наглядности
Например у вас есть файл по адресу
http://flv.site.ru/video/video.flv
дабавляете в ссылку хеш из ip юзера и секретного слова
$ip = md5(getenv(”REMOTE_ADDR”).”key”);
и получаете ссылку уже вида
когда плеер запросит ссылку, она попадёт к nginx, если вы всё выставили как написанно, то nginx передаст ссылку обработчику, который проверит хешь, если всё правильно то кажем киношку, если ip не совпадает, то кажем фигу!
В принципе в хеше можно что угодно закодировать, например добавить к хешу два байта время жизни ссылки в минутах, ну или девичью фамилию бабушки посетителя проверить можно :))) шутка!
На самом деле обработчику конечно много чего можно поручить, например можно манипулировать скоростями отдачи файла, типа ВИПу на максимальной скорости, остальных бреем до 50 кбайт, докачки, псевдостреминг, мультисесии, ну естествено и NginX нужно настроить под нужные задачи. У меня файлы залиты на раздельные зеркальные диски и обработчик разруливает раздачу файлов так чтобы нагрузка на дисках была примерно одинаковая…
P.S. У меня почему то отказывался работать второй локейшен, пока не прописала в нем root путь
root /home/support/www/flv.site.ru;
Хотя в документации про это не чего не сказанно и тем более странно что root уже был задан для поддомена в секциях выше. Возможно это специфические выкрутасы моей ОС, у меня стоят Debian 5
Можешь посмотреть как это работает в связке с Uppod на моём сайтике ссылка Ссылка на плейлист в плеере закрыта кодером Uppod, но сам плейлист не закодирован…
Вот так работает мой плеер у тех кто его крадёт ссылка то же самое если украсть ссылки на видео… Можете попробовать :)))
Честно сказать я не знаю как такое реализовать под Апачем, но говорят Ютуб на Апаче вертиться :)))
Что мешает на фронэнд поставить NginX? У меня кстати так и сделано… NginX это лучшее решение, на сегодняшний день, для раздачи видео! Это очень быстрый и экономичный сервер, поддерживает технологии псевдостреминга flv и mp4, позволяет защитить свой контент, не случайно большинство видеохостингов используют именно NginX!
veronica, спасибо за наводку, сегодня целый день рылся в поисках решения, скрипт то написал а вот проверку не знал как сделать, хотел через реферера проверять, но флеш не отдает рефа и вот тут вы мне дали наводку проверку по ключу из ИП и секретного кода.
tritonline, для вас пишу, все не обязательно делать в конфиге, можно попросту написать мод реврайт в хтаккессе. И вуаля, теперь для тех кто зашел на наш сайт получает фильм, а для тех кто смотрит на другом сайте наш ролик ,получают наш рекламный ролик.
Вообщем спасибо за наводку, бью себя по голове и не могу понять как я не мог догадатся.
У меня например сайт находится на одном домене, а сервер на другом.
Кстати попробуй скачать её, по идее должен отгружаться один из моих плейбеков рекламных роликов. Плейбеки в случайном порядке выбирает обработчик flv запросов кстати…
Вот например я установил этот скрипт у себя на сервере, положил видео файлы в http://site.ru.net/kino/
как мне узнать какая у меня ссылка будет которую мне вставлять чтобы у всех работало на моем сайте
не совсем пойму как указать плееру обращатся к ссылке. Например загружает пользователь видео, оно конвертится и ложится в папку video/id.flv , плеер обращается так site.ru/video/id.flv.
Если nginx настроен как я писала выше и все запросы flv файлов идут через реврайт nginx и обработчика, то ссылка должна выглядеть вот так site.ru/video/922f3b5fcb227cfae135299e786edd82/id.flv где 922f3b5fcb227cfae135299e786edd82 хешь ключа…
Естественно хешь нужно генерировать для каждого пользователя!
В файле обработчике get.php должна быть такая же функция генерации хеша, что и в скрипте который генерирует ссылки, в примере я написала эту фукцию!
$ip = md5(getenv(”REMOTE_ADDR”).”key”);
Тут генерируется хеш md5 из IP пользователя и ключа ”key” Ключ сделайте длинее 16 символов! Чтоб его невозможно было подобрать методом перебора! Тот же самый ключ подставте и в обработчик.
veronica, спасибо за Ваши ответы! Во общем пока не удалось реализовать это. Добавляю в конфиг nginx по вашему примеру, в скрипт формирования ссылок строку:
$ip = md5(getenv(”REMOTE_ADDR”).”key”); далее в скрипте добавляю site.ru/video/$ip/id.flv, но плеер выдаёт что не может найти файл. Видимо не совсем подходит мне ваш конфиг, сказали что для nginx еще нужно php настроить. Ещё у меня в nginx настроен стриминг и он отдаёт видео по порту 81.
Я кажется знаю в чём причина… Просто PHP запускается Апачем, а он стоит на бекэнде и видит только IP впереди стоящего сервера NginX, чтобы PHP увидел реальный IP пользователя нужно поставить специальный мод…
Могу порекомендовать моего админа, его ася один14466966один он недорого поможет тебе настроить видеосервер. Это очень грамотный специалист, поговори с ним. Он поможет тебе правильно настроить и оптимизировать сервер. Он у меня постоянно что то эксперементирует, подкручивает, подстраивает и в итоге мои сервера работают как часики! Я даже не знаю что бы я без него делала!
Тут целая эпопея с серверами… Где только не пробовала брать сервера! В данный момент полностью перетащилась в Америку, но есть ряд неприятных моментов. Как выяснилось далеко не у всех провайдеров толстые зарубежные каналы, пользователи часто жалуются на низкую скорость загрузки, кстати у меня тоже тихо грузит, правда не всегда… Да и сами хостеры честно признались что на Европу не смогут выдавать большие скорости, гигабит только на Америку! Во вторых трафик лимитирован, 100 Тб на сервер в месяц! Приходиться жестоко следить за трафом и подрезать скорости. Ну и хостинг совсем не абузоустойчивый, предупредили сразу, что проблем с правообладателями быть не должно!
Могу подсказать один московский ДЦ, стоимость гигабитного порта 8 тысяч рублей, правда порт расшарен, то есть на два сервера подключен, но у меня получалось выжимать 650 Мбит, видимо передавливала соседа, когда он не использовал порт. Траф безлимитный, но с единственым условием, РФ должен преобладать над забугорным трафом. У ДЦ свой пул IP, абузы пойдут на их адрес, обещают разумную абузоустойчивость, то есть если вы удаляете абузный контент санкций к вам не будет. Если интересует, стучите ко мне в асю 575699639 я вам дам асю директора того ДЦ, вы обсудите с ним все цены сами :)
Хорошие новости!!!
Теперь можно взять сервер с гигабитный портом в Англии всего за 105 долларов!!! Смотрите вот тут ссылка раздел "Выделенные сервера" -> "100TB bandwidth in UK"
Вот такая машинка Intel Dual Core E5200 2.5GHz / 2GB / 250GB / 1Gbs / 100TB без установочной платы и всего 105 далларов в месяц с гигабитным портом! Трафика 100 Тб, но в такой конфигурации сервера вы гарантированно не выйдите из лимита.
Если у вас большая посещалка, то рекомендую обратить внимание на последний сервер из этой линейке, это то что вам нужно! По своему опыту использования таких серверов могу сказать что сервер за 199 доларов сможет обслуживать сайт с суточной посещалкой в районе 20 тысяч, вернее лучше брать несколько серверов из расчёта 1 сервер на 20 тысяч посетителей. Но за таким сервером нужно следить! Ему вполне по плечу выдавить весь гигабит, даже при большой интенсивности запросов файлов и при паре тысячах одновременых конектов, есть большой шанс вылезти за лимит. Сильно экономить трафик вам поможет ограничение скорости отдачи файлов, сделайте так чтоб файл прогружался с небольшим опережением показа видео.
Ну конечно же в месяц!
И кстати за 105 долларов больше нет серверов в Англии, теперь там машинки пошустрее дают и цена на них начинается с 279 долларов. На Голландских серверах запрещены CDN (Content Delivery Network) и Streaming media services, так что самые дешёвые сейчас сервера это США, в Далласе цены от 179 долларов, но рекомендую брать в Вашингтоне за 209 долларов.
Сейчас предлагаем сервера 1Gbs / 100TB в Лондоне от $149
Предлагаем свои разработки в организации раздачи видео для онлайн кинотеатров ссылка rel="nofollow">ссылка</a>
Нет, на юкозе ссылки не защитить, потому что нет поддержки PHP. Можно плеер вставлять в защищённом фрейме, по типу Вконтакта, но сам фрейм по серьёзному не защитить… Можно конечно проверять с какого домена вызывается фрейм, но как известно Лиса и Сафари не отправляют рефку, да и в Опере рефку можно отключить в два клика мышкой… Единственный плюс что во фрейме будет ваш плеер, в котором можно покрутить рекламу :)))
Друзья! Я сама не занимаюсь настройкой серверов! У меня есть админ, который приглядывает за моими серверами, асю моего админа я давала выше! Если вам надо настроить видеосервер стучите к нему в асю!
А если у вас есть вопросы по программной обвязке сервера, спрашивайте, что знаю расскажу!
Ну rtmp вроде как NginX не раздаёт… Через NginX можно защитить любую статику за которую отвечает NginX, другой вопрос, а стоит ли ставить громоздкую систему защиты например на картинки?
По "html-mp3-онлайн-радио" вообще не поняла что вы имели в виду?
про картинки речи нет это ТВ онлайн раздается в rtmp (erlyvideo).
если не NginX то м.б. средствами htaccess?
"html-mp3-онлайн-радио" IceCast2 раздает поток радио в формате мп3.
всех приветствую я вот недавно открыл сайт и хочу чтобы на моем сайте можно было смотреть фильмы и у меня вот такая проблема я узнал что прямых ссылок нет и незнай что делать, где брать фильмы незнаю, помогите пожалуста где мне взять прямые ссылки на фильмы.Сразу говорю что загружать фильмы на видеохостинги немогу так как очень слабый интернет.Помогите может кто знает как эту проблему решить
"Секретное слово" это просто набор знаков из букв, цифр и других печатных символов. Длина ключа должна быть более 12 символов, так как в свободном доступе имеются базы хешей всех слов до 10 символов, так что расшифровать хешь из короткого пароля дело нескольких секунд.
Можно сделать например вот так:
$key = "Нифига не расшифруете мой ключь!";
$ip = md5(getenv(”REMOTE_ADDR”).$key);
$ip = md5(getenv(”REMOTE_ADDR”).”Нифига не расшифруете мой ключь!922f3b5fcb227cfae135299e786edd8”);
Так понятней?
Есть у меня стойкое чувство что тебе это не понадобиться… Если ты не можешь "догнать" банальных вещей, то как ты видеосервер собираешься настраивать?
не подскажете. достаточно ли будет 100 мб канала.для сервера? на сервере будет архив видео роликов.ни где не могу найти однозначную информацию с какой скоростью транслируетса видео. например при 10 одновременных подключениях насколько грузят канал?
Это зависит от битрейта видеороликов. Моё видео например закодированно с низким битрейтом до 500 кбит, соответственно на 100 мбитном канале смогут одновременно смотреть 200 человек, на гигабитном канале 2000 пользователей.
Если у вас видео формата mp4 с большим битрейтом, то соответственно и без тормазов смогут смотреть меньшее количество пользователей.
Это конечно в идеале так, на самом деле дела обстоят немного хуже. Скорости у всех пользователей разные, некоторые захотят скачать видео качалкой с мультисесиями, естественно они "передавят" других юзеров которые "честно" смотрят через плеер. Не факт что ваш хостер сможет выдать вам все 100 Мбит. Могут возникнуть проблемы с дисковой системой, особенно на програмной рейде, когда сотни подключеных юзеров начнуть "рвать" диски в рейде, а nginxу банально не хватит памяти закешировать запросы.
Нет, тут только скрипты для видеосервера, скрипты для сайта вам придётся написать самостоятельно, я же не знаю какой у вас двиг под сайтом используется, да я и совсем не специалист в этой области. Могу рассказать только как я у себя сделала.
В плеер я подставляю запрос плей листа вот такого вида
ссылка это генератор плей листов в GET запросе плей листа отправляется номер фильма,…. и в конце это хешь привязки запроса, на тот случай чтобы личеры не подсватались к моему генератору :)))
Вообщем у меня ссылки хранятся в БД сайта в таком виде
Ну я же всё расписала в первом сообщении, перечитайте внимательней ещё раз!
get.php ложим в корень домена, но нужно настроить, вернее скомпилировать сервер NginX с поддержкой псевдостреминга, по умолчанию NginX ставиться без этого модуля. После компиляции правим конфиг как я писала в ТС.
А по скриптам для сайта обратитесь к програмистам которые пишут скрипты под двиг вашего сайта, с таким заданием справиться даже начинающий програмер знакомый со структурой вашей СМС.
Сейчас можно сделать тоже самое без использования php, средствами одного лишь nginx.
Тут описание модуля: ссылка
Там есть примеры настройки nginx.conf и скрипта, генерирующего ссылки.
Привязка по секретному слову и по времени довольно слабенькая защита от личеров :((( интв.ру довольно долго использовал аналогичную защиту и это не сколько не помешало личерам юзать их ссылки. Для статики это отличный вариант, например закрыть графику сайта модом секурити, но для защиты видео этот вариант не подходит.
Подходит :) Ведь в качестве секретного слова можно указать все что угодно, в том числе и IP-адрес посетителя. Так что ссылка будет привязана к IP-адресу и будет действовующей ограниченное время. Тут прямую ссылку уже никак не вытащить, она просто закрыта извне.
Ну если можно привязать ссылку к IP и секретному слову, то не всё так плохо :)))
Но лично мне этот вариант всё равно не подходит, дело в том что у меня файлы лежат на зеркальных серверах, на раздельных SATA дисках и это именно обработчик flv запросов решает с какого сервера и конкретного диска начать отдачу файла. В случае не совпадения хеша обработчик решает с какого сервера/диска и какой именно откручивать плейбек (рекламный ролик) у меня их несколько… ну и наконец обработчик проверяет рефки, если запрос пришёл не с моего домена то такой домен записывается в файл, а я потом иногда просматриваю какие сайты у меня воруют ссылки :)))
Ну да, согласен, что если нужен расширенный функционал по управлению (указывать разные "фиги" ворам, распределять нагрузку между серверами), то конечно лучше через php.
Для меня осталось решить вопрос с кэшированием. Ведь если показывать всем уникальные ссылки, то кэшировать страницы сайта по-простому уже не получится.
Ребята, а обратный способ, чтобы ссылку из видеосервера взять прямо такого без запрета.Просто в бесплатных хостингах есть такая проблема. И как-то можно php ссылку поменять или конвертировать так,чтобы uppod поддержовал?Спасибо
В инете много хвастливых заявлений что алгоритм MD5 давно сломан, но в паблике я пока не видела програм которые бы открывали хешь md5 за несколько минут. Если ключик хеша короткий, до 10 символов, то теоретически сломать такой хешь не проблема, базы всех хешей имеются в сети, можно попробовать заюзать проги взлома MD5…. но это всё теория :))) На практике ключи хешей очень длинные и переборщик в лучшем случае покажет вам время перебора этак в лет 350, да и простецкие операции, например инвертирование всех битов хеша (логическое XOR) поставит в тупик любой переборщик :)))
Во вторых видеохостинги могут проверять домен куда отгружается видео, если домен отличается от разрешёных,… то сменить ключи не проблема :)))
Есть другие способы, как заюзать чужие ссылки! :)))
Например флеши (читай плееру) вполне по зубам спроксировать запрос плей-листа из по IP юзера и передать полученную ссылку на обработку например скрипту php, который в свою очередь обработает ссылку в приемлимый плей лист для вашего плеера и передаст ему для воспроизведения. Скажу честно, я просила Uppod сделать мне по лицензии такой чудо-плеер, но к их чести, Uppod отказались, сказали что не занимаются взломом чужих защит…
Ещё одно слабое место в защите видеохостингов это запрос плей листа. Далеко не у всех этот запрос надёжно защищён. Например некоторые видеохостинги понадеялись на защиту лицензионного персонального кодека Uppod… не чего не буду про это говорить, но скажем так это не панацея от пытливых умов :)))
На интв оригинальная защита стоит, я такого не у одного видеохостинга не встречала! Прямо в заголовке запроса ПЛ отправляется 2 ключа, публичный и приватный… Как бы всё хорошо, вот тока публичный ключ можно взять из заголовка, а алгоритм приватного ключа есть в самом плеере, взломать плеер и выдернуть алгоритм это 3 клика мышкой для знающего человека :))) Вам осталось научить ваш плеер отправлять такие запросы. Правда есть проблема, ключи меняются как правило, каждую неделю, чаще всего по воскресеньям…
Как видите, при желании можно поюзать халяву, вот только сначала хорошенько подумайте, а оно вам надо? Видеохостинг может в любую минуту сменить систему защиты, которая вам окажется не по зубам и годы работы по вашему сайту пойдут коту под хвост! Бесплатный сыр бывает только в мышеловке…
Выше я давала асю нашего админа, постучитесь к нему! Он вам поставить недорого такую защиту на ваш видеосервер. Я сама серверами не занимаюсь! Могу только подсказать по програмной обвязке…
я тоже делаю кинопортал изначально планировалось сделать онлайн просмотр, что посоветуете? Ваш сайт мне знаком очень давно Кинобанда…Как вы делаете? снимаете сервера под видео? или как делают остальные находят стоящий сайт стягивания с него контект…попросту воруя…у вас есть ася Вероника?
мне бы хотелось проконсультироваться у вас по поводу некоторых моментов, например я никак не могу сделать блок алфавит чтобы при нажатии выводились все новости на эту букву…или блок лучшие фильмы, можно с вами сотрудничать? Портал только в разработке, но никак не могу все доделать попросту нехватает знаний…
Я подозреваю что вы делаете сайт на ДЛЕ или ВП, к сожалению не чем помочь не могу, не когда не работала с этими движками. Обратитесь за помощью к програмерам которые специализируются именно по вашему движку.
Первый свой сайт я делала сама, я немного знакома с архитектурой СМС Nuke, поэтому выбрала один из стареньких бесплатных клонов Nuke и переписала его под нужные мне задачи… А при создании второго сайта, сильно не умничая, просто заказала разработку специального двига с нужными мне параметрами одному хорошему програмисту. :)))
Здравствуйте.
Вы писали, что можно ограничить время отдачи файла для "гостей".
Как реализовать на php() я знаю, но как это проверить в nginx нет.
Прошу подсказать нужную дерективу…
Я вообще то говорила что можно для "гостей" сайта уменьшить скорость отдачи файлов, хотя наверно можно и ограничить по количеству отданных байт, то бишь получиться ограничение для "гостей" по "времени", а точнее по количеству отданных байт…
А ограничить скорость можно например так, у вас есть папка с видео, на эту папку вещаем два разных поддомена и в конфиге NginX выставляем нужные скорости отдачи для поддоменов. Для "гостей" выдаём ссылку на поддомен с низкой скоростью, а для "своих" даём "быструю" ссылку.
Здравствуйте.
Могли бы Вы еще посоветовать человека, который смог бы настроить обработку плейлистов? Ваш программист к сожалению не может подсказать в этом вопросе :(
Вот моя ася на всякий :) 249404307
Если у Вас будет пару свободных минут, стукните пожалуйста.
Сервер наладили, нужно защиту наладить. Сколько не читаю эту тему, так и не могу врубиться как это всё реализовать. Кто может помочь пишите на ISQ 633659540
А какие проблемы с плейлистами? Генератор плейлистов подставляет ссылки с привязкой по IP и все дела, единственно что нужно так же защитить и саму ссылку на ПЛ, а то личеры могут подсвататься… Рекомендую ссылку так же подвязывать к IP… Uppodовский кодек тут слабое утешение… :)))
Да уж. У меня стоит защита по айпи. Но от парсера плейлиста защиты не нашлось :( Программист Ваш не отвечает. Не иогли бы Вы подсказать может, кого-то еще. Сердце кровью обливается, видя как парсят мои сериалы обходя просто защиту прямой ссылки. И сервер уже ложится, лайт не выдерживает нагрузки :(
Не совсем поняла, вы говорите что у вас ссылки подвязаны к IP и чуть ниже пишите что у вас парсеры выдергивают прямые ссылки… Если ссылки подвязаны к IP то не какой парсер не страшен, поскольку ссылки будут работать только из под IP парсера.
Не знаю про какого программиста вы говорите, у меня нету не какого программиста. Возможно вы имели в виду нашего админа? Так он системный администратор в ДЦ, а совсем не программист!
Вытягивали сам плейлист с генерированными уже ссылками для конкретного айпи. Уже нашла программиста ,который сделал привязку по айпи и к плейлистам. Не знаю надолго ли хватит такой защиты..воришки такие неугомонные, если честно.
Сисадмин, говорите, я тогда неправильно поняла, уж извините.
Нужен человек, который сможет реализовать защиту видео и настроить сервер для видео. За достойное вознаграждение, пишем сюда SanchezBoy(gav)mail.ru или skype sanchez-boy.
Ну как бы это стандартный PHP, я не знаю почему вылазит ошибка, у меня нормально работает. Можете написать свой кусок кода который бы распарсивал серверную переменную $_SERVER[’REQUEST_URI’]. Как я уже писала выше, проблема в том что регулярка в NginX сильно "обрезанна" по функционалу в сравнении с тем же PHP и не может выбрать полностью значение $_SERVER[’REQUEST_URI’].
Можно поступить по другому и не "извращаться" с проверкой команды "прсевдостреминга", правда сразу скажу что это всё из области теории и я не проверяла как это будет работать на сервере. Вообщем команда "перемотки NginX по умолчанию "?start=" но что нам мещает изменить стандартную команду на свою, но такую чтобы регулярка NginX смогла её выбрать самостоятельно? Нужно только использовать такой символ чтобы и регулярка смогла выбрать всю строку без "танцев с бубном" и чтобы этот символ не встречался в названии файлов. Можно например задействовать для этих целей символ ":" (двоеточие), не забудьте в настройках плеера именно этот символ указать в качестве команды стреминга.
Но как можно в nginx поменять "?start=" на свою команду? И в плеере же есть только возможность изменить слово "start" Ну поменяем мы его на ":" И будет посылаться "?:=" или я всётаки ничего не понимаю?
Можете пожалуйста скинуть свой php файл мне на ящик? А то я походу что-то неправильно делаю
(kola138"пёс"mail.by)
Я придумал немного подругому защищать видео
На сайте вставил php код который добавляет ip адрес в базу данных, пользователя который находится в оплаченой группе. И в 3 часа ночи база очищается (у меня)
Так вот мне теперь главная задача сделать так что бы сервер подключался к базе и проверял есть ли там этот ip который просит скачку если да то отдаёт если нет то нет, Но тут походу без php не обойтись.
Или можно сделать это на уровне сервера, а не nginx. Например к серверу пытается конектится клиент а он проверяет есть ли этот клиент в базе.
или даже не через sql базу делать а через текстовый файл.
Я думаю моя идея вам понятна и вроде очень даже не плоха.
Но я понятия не имею как её организовать(
Во например типо firewall сделать который будет доступ только тем давать кто в базе)
Вы там про програмиста писали но может скажете его маил а то isq нету и не хочется с ним возится.
> И в плеере же есть только возможность изменить слово "start" Ну поменяем мы его на ":" И будет посылаться "?:=" или я всётаки ничего не понимаю?
Как бы всё вы правильно понимаете… вот тока плеер Uppod по своему это воспринимает! :))) Я сейчас создала стиль в котором задала команду для стреминга ":" (без кавычек) и строка для перемотки которую генерирует плеер выглядит вот так name.flv:123456 В принципе наверно можно переписать обработчик именно под этот символ ":" и уже средствами php генерировать нужную строку, например путём банальной замены символа ":" на "?start="…
Вместо строк
$url=$_SERVER[REQUEST_URI];
$url=explode(?,$url);
$url=$url[1];
if (isset($url)){$filename .=?.$url;}
Правда это сработает только в том случае, если в $filename будет имя файла вместе со смещением, типа name.flv:123456 Надеюсь регулярка NginX сможет выбрать всю строку….
>Я придумал немного подругому защищать видео
На сайте вставил php код который добавляет ip адрес в базу данных, пользователя который находится в оплаченой группе. И в 3 часа ночи база очищается (у меня)
Ууу, как всё громоздко получилось… Вам надо перед каждой раздачей видео дёргать sql на предмет разрешена ли отдача для этого IP :((( А если юзер на перемотке смотрит… а если таких юзеров несколько тысяч одновременно? Серевер с SQL загонят в глубокую кому очень быстро…
А вообще я считаю это в корне не правильно так извращаться от того что глючит скрипт php! Проше всего разобраться в php коде и устранить ошибку! Правда я понять не могу на что там ругается интерпретатор?
Значит если в стилях вместо start поставить : то будет посылаться
video.flv:1234567 а не video.flv?:=1234567
Или как вы это изменили?
Вы сделали стиль с : но ещё не тестировали? с
$filename = str_replace(":" ,"?start=",$filename);
Может результаты тут напишете?
Я сделала стиль и тестировала его локально, HTTP дебагером вытянула ссылку которую отправляет плеер при перемотке. Она выглядит именно как video.flv:1234567
Вот только я не пробовала на сервере что получает регулярка NginX… Попробуйте и отпишитесь здесь :)))
Ссылка выглядит так ссылка ссылка
Переменная start и отправлять нужно байты
файл file.php лежит в папке /video/ на сервере рядом с видео файлами
Кто знает как, тот может ложить его куда угодно.
И ещё многие не поняли как такую ссылку можно вставлять
ТАК ВОТ ВЫ САМИ ДОЛЖНЫ ЕЁ ГЕНЕРИРОВАТЬ У СЕБЯ НА САЙТЕ вот так
$ip = md5(getenv("REMOTE_ADDR")."key");
Ссылка выглядит так ссылка ссылка
Переменная start и отправлять нужно байты
файл file.php лежит в папке /video/ на сервере рядом с видео файлами
Кто знает как, тот может ложить его куда угодно.
И ещё многие не поняли как такую ссылку можно вставлять
ТАК ВОТ ВЫ САМИ ДОЛЖНЫ ЕЁ ГЕНЕРИРОВАТЬ У СЕБЯ НА САЙТЕ вот так
$ip = md5(getenv("REMOTE_ADDR")."key");
Вы конечно молодец! Вот только раздавать файлы через сокет средствами PHP совсем не айс :((( Рекомендую всё таки для этих целей использовать NginX!!!
И ещё я как то совсем забыла в топик-стартере написать что папка с файлами в ссылке должна отличаться от реальной папки с контентом на сервере!!! Если имена папок совпадают, то не что не помешает личерам попользовать ваши файлы ломясь через открытый порт Апача! Если в NginX мы в конфиге запретили удалёный доступ к файлам, то в Апче не чего подобного мы не прописывали!
есть сайт на рег.ру www.ontv.am
видео архив находится в другом городе, работает как часы < Lighthttpd > Защита от хотлинка ,
с перемотки пока не разобрался
принцип работы создаёш папку также будет называтся и плейлист
в эту папку закидываешь видео файлы
а скрипт уже сам всё генерирует и раскидывает по сезонам
с привязкой файлов из плейлиста к айпи + секрет_кей юзера
как и защита на адрес самого плейлиста
Зы.. продам за нормальную цену там договоримся просто нужно отбить потраченные деньги на скрипт
Помогите установить, у меня сайт на Ucoz ,а хостинг я купил на джино.ру как такое сделать ?
ну хотя-бы сделать чтобы не могли брать ссылки на видео .
Спасибо.
а папка с файлами вообще не должна лежать в паблике, чтобы физически по http нельзя было скачать напрямую.
По сути тоже самое, но не надо лезть в nginx.
Но минусы есть:
1. Если кто-то напишет парсер страниц, и будет сначала выявлять ссылки, а потом скачивать вы не защититесь
2. Куки не всегда можно использовать: так флеш плеер, например, не передает куки и даже reffer не передает.
О перемотке придётся забыть?
Если не лезти к NginX то любой http дебагер выдаст с головой твою папку с контентом, потому как она появится в запросе плеера и что мне помешает ставить прямые ссылки с твоего сервера?
В моём варианте во первых не где не фигурирует реальное название папки с контентом, во вторых даже если узнают реальную папку NginX не отдаст с неё контент внешнему запросу, он отдаёт контент с этой папки только с локального запроса…
1. О перемотки забыть не придется. Параметр (секунда, милисекунда или байт) так же может передаваться в строке URL. За отдачу файла с определенной позиции отвечает другой модуль nginx, который вполне совместим с X-Accel-Redirect. Просто придется копировать параметр "start"
2. В дебагере не будет прямой ссылки. Как Вы думаете, что делает X-Accel-Redirect?
Более того, я сказал ведь (и указал, что это плюс), что папка с файлами не лежит в паблике, а значит по http впринципе без таких редиректов не получить доступ.
Ну вообщем тот же самый способ, что и я предложила, вся разница только в том что у тебя можно не ставить локейшен на реврайт в конфиге NginX :))) Все остальные настройки NginX обязательны, включая и компиляцию NginX с модулем видеострима…
Похоже, но различия, все же, есть. Самое главное реализация проверки, у меня на уровне скрипта, а у Вас на уровне сервера. Очевидно, что гибкости больше на уровне скрипта, а вероятность ошибки/сбоя меньше на уровне сервера.
А как подобную защиту сделать если сайт на одном сервере , а файлы на другом сервере . Реально ли это ? Напишите подробней если да . Потому что делал на проверку рефера , но в мозиле не показывает да и защита не сильна так как ради интереса в штатном юкозовском плеере запустил (защищенный файл)
Почему на плеере не работает HttpSecureLinkModule, с аргументом arg_e (время жизни ссылки)?
ссылка вида: ссылка
В других плеерах (JW Player) работает. В других плеерах (JW Player) работает.
Пожалуйста исправьте глюк!
Здравствуйте, уважаемые дамы и господа!
Мне нужен надежный плеер(быстрая работа, надежно защищенный контенет) для создания видеохостинга. Я не очень разбираюсь в этих веб вопросах и поэтому хочу найти человека, который бы мог меня проконсультировать, а возможно и поработать вместе со мной. У кого есть желание и возможность откликнитесь мне на почту sezotov@gmail.com или пишите вконтактe id:sezotov.
Спасибо!
Требуется программист, для настройки VPS сервера
Народ помогите!
Я решил создать сайт тематике "кино онлайн", сделал сайт который стоит на юкозе. Затем я арендовал облачный VPS (ОС Вин 2008 сервер) для хранения видео файлов.
Теперь проблема: Как мне настроить VPS, для показа, трансляции видео в плеере uppod swf на сайте, также как это сделано на всех сайтах кино?
пишите на почту: ya.pan2004@yandex.ru
К сожалению форум выстригает некоторые символы, вообщем в строке реврайта
get.php?hash="знак доллара"1&filename="знак доллара"2 last;
"знак доллара" это "$"
Не совсем понятно в первом образце что куда тыкать и куда знак доллара вставлять, во вторых как генерировать ссылку для плеера если у меня видео автоматом добавляется с сайта , в третьих путь к видео файлу у меня например такой /media/videos/flv для flv файла
Может есть понимающие люди которые просто напишут как быть в таких случаях.
Написать в аську не могу не пользуюсь, если есть скайп данного сисадмина пожалуйста напишите пожалуйста здесь.
Если есть знатоки просьба написать подробный.
Всем привет!
Если применить данный способ защиты по ip, то файлы перестают работать в мобильных устройствах (планшетах) если способ исправить и побороть эту болезнь?
Заранее спасибо за любую помощь.
Кому-нибудь удалось сделать подобную защиту на ucoz (сериалы с плейлистами)? Видел работающее решение на сайте онлайнфильм. Может поделитесь информацией или поможете с установкой (разумеется не бесплатно)?
А как реализовать если сайт на одном сервере находиться а сервер с фильмами на другом? как генерировать ключи таким образом что бы они подходили друг другу?
Если кому нужна привязка к IP и времени и ключу (ip+key+time) без php и nginx обращайтесь. Поставлю ПО которое можно использовать как для mp4 как и HLS (m3u8). Например https://cdn.site.com/file/film.mp4?key=хэш или https://cdn.site.com/file/film.mp4/playlist.m3u8?key=хэш ресурсов не кушает как NGINX и php
Нужна всего лишь поддержка PHP для генерации хэша к ссылке.
Можешь посмотреть как это работает в связке с Uppod на моём сайтике
Вот так работает мой плеер у тех кто его крадёт
Огромное спасибо Вам!
А можно тоже самое сделать с сервером apache?!
Что мешает на фронэнд поставить NginX? У меня кстати так и сделано… NginX это лучшее решение, на сегодняшний день, для раздачи видео! Это очень быстрый и экономичный сервер, поддерживает технологии псевдостреминга flv и mp4, позволяет защитить свой контент, не случайно большинство видеохостингов используют именно NginX!
tritonline, для вас пишу, все не обязательно делать в конфиге, можно попросту написать мод реврайт в хтаккессе. И вуаля, теперь для тех кто зашел на наш сайт получает фильм, а для тех кто смотрит на другом сайте наш ролик ,получают наш рекламный ролик.
Вообщем спасибо за наводку, бью себя по голове и не могу понять как я не мог догадатся.
У меня например сайт находится на одном домене, а сервер на другом.
Кстати попробуй скачать её, по идее должен отгружаться один из моих плейбеков рекламных роликов. Плейбеки в случайном порядке выбирает обработчик flv запросов кстати…
как мне узнать какая у меня ссылка будет которую мне вставлять чтобы у всех работало на моем сайте
ну а ссылка так и будет
либо перепеши реврайт nginx и обработчик под нужные тебе параметры.
Для реарайта ключевой стринг video, после чего он среврайтит ссылку в
Естественно хешь нужно генерировать для каждого пользователя!
$ip = md5(getenv(”REMOTE_ADDR”).”key”);
Тут генерируется хеш md5 из IP пользователя и ключа ”key” Ключ сделайте длинее 16 символов! Чтоб его невозможно было подобрать методом перебора! Тот же самый ключ подставте и в обработчик.
$ip = md5(getenv(”REMOTE_ADDR”).”key”); далее в скрипте добавляю site.ru/video/$ip/id.flv, но плеер выдаёт что не может найти файл. Видимо не совсем подходит мне ваш конфиг, сказали что для nginx еще нужно php настроить. Ещё у меня в nginx настроен стриминг и он отдаёт видео по порту 81.
Могу порекомендовать моего админа, его ася один14466966один он недорого поможет тебе настроить видеосервер. Это очень грамотный специалист, поговори с ним. Он поможет тебе правильно настроить и оптимизировать сервер. Он у меня постоянно что то эксперементирует, подкручивает, подстраивает и в итоге мои сервера работают как часики! Я даже не знаю что бы я без него делала!
Могу подсказать один московский ДЦ, стоимость гигабитного порта 8 тысяч рублей, правда порт расшарен, то есть на два сервера подключен, но у меня получалось выжимать 650 Мбит, видимо передавливала соседа, когда он не использовал порт. Траф безлимитный, но с единственым условием, РФ должен преобладать над забугорным трафом. У ДЦ свой пул IP, абузы пойдут на их адрес, обещают разумную абузоустойчивость, то есть если вы удаляете абузный контент санкций к вам не будет. Если интересует, стучите ко мне в асю 575699639 я вам дам асю директора того ДЦ, вы обсудите с ним все цены сами :)
Теперь можно взять сервер с гигабитный портом в Англии всего за 105 долларов!!! Смотрите вот тут
Вот такая машинка Intel Dual Core E5200 2.5GHz / 2GB / 250GB / 1Gbs / 100TB без установочной платы и всего 105 далларов в месяц с гигабитным портом! Трафика 100 Тб, но в такой конфигурации сервера вы гарантированно не выйдите из лимита.
Если у вас большая посещалка, то рекомендую обратить внимание на последний сервер из этой линейке, это то что вам нужно! По своему опыту использования таких серверов могу сказать что сервер за 199 доларов сможет обслуживать сайт с суточной посещалкой в районе 20 тысяч, вернее лучше брать несколько серверов из расчёта 1 сервер на 20 тысяч посетителей. Но за таким сервером нужно следить! Ему вполне по плечу выдавить весь гигабит, даже при большой интенсивности запросов файлов и при паре тысячах одновременых конектов, есть большой шанс вылезти за лимит. Сильно экономить трафик вам поможет ограничение скорости отдачи файлов, сделайте так чтоб файл прогружался с небольшим опережением показа видео.
Скажите 105 долларов это в год или в месяц?
И кстати за 105 долларов больше нет серверов в Англии, теперь там машинки пошустрее дают и цена на них начинается с 279 долларов. На Голландских серверах запрещены CDN (Content Delivery Network) и Streaming media services, так что самые дешёвые сейчас сервера это США, в Далласе цены от 179 долларов, но рекомендую брать в Вашингтоне за 209 долларов.
Предлагаем свои разработки в организации раздачи видео для онлайн кинотеатров ссылка rel="nofollow">ссылка</a>
$url=$_SERVER[REQUEST_URI];
$url=explode(’?,$url);
$url=$url[1];
if (isset($url)){$filename .=’?’.$url;}
Parse error: syntax error, unexpected T_STRING
А без них работает без перемотки
Может вы уже нашли другой способ перемотки?
А если у вас есть вопросы по программной обвязке сервера, спрашивайте, что знаю расскажу!
По "html-mp3-онлайн-радио" вообще не поняла что вы имели в виду?
если не NginX то м.б. средствами htaccess?
"html-mp3-онлайн-радио" IceCast2 раздает поток радио в формате мп3.
PS. От старого логина не помню пароль.
$ip = md5(getenv(”REMOTE_ADDR”).”key”);
и получаете ссылку уже вида
А можно подробнее "дабавляете в ссылку хеш из ip юзера и секретного слова" что за секретная слова?
Можно сделать например вот так:
$key = "Нифига не расшифруете мой ключь!";
$ip = md5(getenv(”REMOTE_ADDR”).$key);
Так понятней?
Есть у меня стойкое чувство что тебе это не понадобиться… Если ты не можешь "догнать" банальных вещей, то как ты видеосервер собираешься настраивать?
Если у вас видео формата mp4 с большим битрейтом, то соответственно и без тормазов смогут смотреть меньшее количество пользователей.
Это конечно в идеале так, на самом деле дела обстоят немного хуже. Скорости у всех пользователей разные, некоторые захотят скачать видео качалкой с мультисесиями, естественно они "передавят" других юзеров которые "честно" смотрят через плеер. Не факт что ваш хостер сможет выдать вам все 100 Мбит. Могут возникнуть проблемы с дисковой системой, особенно на програмной рейде, когда сотни подключеных юзеров начнуть "рвать" диски в рейде, а nginxу банально не хватит памяти закешировать запросы.
В плеер я подставляю запрос плей листа вот такого вида
Вообщем у меня ссылки хранятся в БД сайта в таком виде
Генератор плей листов добавляет к этой ссылке хешь и получается ссылка вида
Если у вас один видеофайл, то вы можете сразу подставлять ссылку на видео с хешем в плеер.
get.php ложим в корень домена, но нужно настроить, вернее скомпилировать сервер NginX с поддержкой псевдостреминга, по умолчанию NginX ставиться без этого модуля. После компиляции правим конфиг как я писала в ТС.
А по скриптам для сайта обратитесь к програмистам которые пишут скрипты под двиг вашего сайта, с таким заданием справиться даже начинающий програмер знакомый со структурой вашей СМС.
Тут описание модуля:
Там есть примеры настройки nginx.conf и скрипта, генерирующего ссылки.
Но лично мне этот вариант всё равно не подходит, дело в том что у меня файлы лежат на зеркальных серверах, на раздельных SATA дисках и это именно обработчик flv запросов решает с какого сервера и конкретного диска начать отдачу файла. В случае не совпадения хеша обработчик решает с какого сервера/диска и какой именно откручивать плейбек (рекламный ролик) у меня их несколько… ну и наконец обработчик проверяет рефки, если запрос пришёл не с моего домена то такой домен записывается в файл, а я потом иногда просматриваю какие сайты у меня воруют ссылки :)))
Для меня осталось решить вопрос с кэшированием. Ведь если показывать всем уникальные ссылки, то кэшировать страницы сайта по-простому уже не получится.
Во вторых видеохостинги могут проверять домен куда отгружается видео, если домен отличается от разрешёных,… то сменить ключи не проблема :)))
Есть другие способы, как заюзать чужие ссылки! :)))
Например флеши (читай плееру) вполне по зубам спроксировать запрос плей-листа из по IP юзера и передать полученную ссылку на обработку например скрипту php, который в свою очередь обработает ссылку в приемлимый плей лист для вашего плеера и передаст ему для воспроизведения. Скажу честно, я просила Uppod сделать мне по лицензии такой чудо-плеер, но к их чести, Uppod отказались, сказали что не занимаются взломом чужих защит…
Ещё одно слабое место в защите видеохостингов это запрос плей листа. Далеко не у всех этот запрос надёжно защищён. Например некоторые видеохостинги понадеялись на защиту лицензионного персонального кодека Uppod… не чего не буду про это говорить, но скажем так это не панацея от пытливых умов :)))
На интв оригинальная защита стоит, я такого не у одного видеохостинга не встречала! Прямо в заголовке запроса ПЛ отправляется 2 ключа, публичный и приватный… Как бы всё хорошо, вот тока публичный ключ можно взять из заголовка, а алгоритм приватного ключа есть в самом плеере, взломать плеер и выдернуть алгоритм это 3 клика мышкой для знающего человека :))) Вам осталось научить ваш плеер отправлять такие запросы. Правда есть проблема, ключи меняются как правило, каждую неделю, чаще всего по воскресеньям…
Как видите, при желании можно поюзать халяву, вот только сначала хорошенько подумайте, а оно вам надо? Видеохостинг может в любую минуту сменить систему защиты, которая вам окажется не по зубам и годы работы по вашему сайту пойдут коту под хвост! Бесплатный сыр бывает только в мышеловке…
Первый свой сайт я делала сама, я немного знакома с архитектурой СМС Nuke, поэтому выбрала один из стареньких бесплатных клонов Nuke и переписала его под нужные мне задачи… А при создании второго сайта, сильно не умничая, просто заказала разработку специального двига с нужными мне параметрами одному хорошему програмисту. :)))
Вы писали, что можно ограничить время отдачи файла для "гостей".
Как реализовать на php() я знаю, но как это проверить в nginx нет.
Прошу подсказать нужную дерективу…
Спасибо!
А ограничить скорость можно например так, у вас есть папка с видео, на эту папку вещаем два разных поддомена и в конфиге NginX выставляем нужные скорости отдачи для поддоменов. Для "гостей" выдаём ссылку на поддомен с низкой скоростью, а для "своих" даём "быструю" ссылку.
144669661
Могли бы Вы еще посоветовать человека, который смог бы настроить обработку плейлистов? Ваш программист к сожалению не может подсказать в этом вопросе :(
Вот моя ася на всякий :) 249404307
Если у Вас будет пару свободных минут, стукните пожалуйста.
Не знаю про какого программиста вы говорите, у меня нету не какого программиста. Возможно вы имели в виду нашего админа? Так он системный администратор в ДЦ, а совсем не программист!
Сисадмин, говорите, я тогда неправильно поняла, уж извините.
у сайта onlainfilm(.)ucoz(.)ua может также или похоже сделано.
У них защищено видео как описала veronica? или как то по другому
у меня тоже сайт на ucoz вот и интересуюсь.
есть сайт на ucoz (включена поддержка php) , свой сервер где лежат фильмы, думаю о защите ссылок.
echo "код вашего плеера";
И в том месте кода плеера, где у вас ссылка на фильм, который на Вашем сервере, подставляете переменную "ip", например если фильмы в папке "video":
А потом делаете iframe на этот пхп файл, который отдает код вашего плеера с зашифрованной ссылкой.
сайт на uCoz но хостинг куда я загружаю фильмы другой.
Вот моя аська: 262863287
$url=$_SERVER[’REQUEST_URI’];
$url=explode(’?’,$url);
$url=$url[1];
if (isset($url)){$filename .=’?’.$url;}
Parse error: syntax error, unexpected T_STRING
А без них работает без перемотки
Может вы уже нашли другой способ перемотки??
Можно поступить по другому и не "извращаться" с проверкой команды "прсевдостреминга", правда сразу скажу что это всё из области теории и я не проверяла как это будет работать на сервере. Вообщем команда "перемотки NginX по умолчанию "?start=" но что нам мещает изменить стандартную команду на свою, но такую чтобы регулярка NginX смогла её выбрать самостоятельно? Нужно только использовать такой символ чтобы и регулярка смогла выбрать всю строку без "танцев с бубном" и чтобы этот символ не встречался в названии файлов. Можно например задействовать для этих целей символ ":" (двоеточие), не забудьте в настройках плеера именно этот символ указать в качестве команды стреминга.
Можете пожалуйста скинуть свой php файл мне на ящик? А то я походу что-то неправильно делаю
(kola138"пёс"mail.by)
Я придумал немного подругому защищать видео
На сайте вставил php код который добавляет ip адрес в базу данных, пользователя который находится в оплаченой группе. И в 3 часа ночи база очищается (у меня)
Так вот мне теперь главная задача сделать так что бы сервер подключался к базе и проверял есть ли там этот ip который просит скачку если да то отдаёт если нет то нет, Но тут походу без php не обойтись.
Или можно сделать это на уровне сервера, а не nginx. Например к серверу пытается конектится клиент а он проверяет есть ли этот клиент в базе.
или даже не через sql базу делать а через текстовый файл.
Я думаю моя идея вам понятна и вроде очень даже не плоха.
Но я понятия не имею как её организовать(
Во например типо firewall сделать который будет доступ только тем давать кто в базе)
Вы там про програмиста писали но может скажете его маил а то isq нету и не хочется с ним возится.
Как бы всё вы правильно понимаете… вот тока плеер Uppod по своему это воспринимает! :))) Я сейчас создала стиль в котором задала команду для стреминга ":" (без кавычек) и строка для перемотки которую генерирует плеер выглядит вот так name.flv:123456 В принципе наверно можно переписать обработчик именно под этот символ ":" и уже средствами php генерировать нужную строку, например путём банальной замены символа ":" на "?start="…
Вместо строк
$url=$_SERVER[REQUEST_URI];
$url=explode(?,$url);
$url=$url[1];
if (isset($url)){$filename .=?.$url;}
поставьте
$filename = str_replace(":" ,"?start=",$filename);
Правда это сработает только в том случае, если в $filename будет имя файла вместе со смещением, типа name.flv:123456 Надеюсь регулярка NginX сможет выбрать всю строку….
>Я придумал немного подругому защищать видео
На сайте вставил php код который добавляет ip адрес в базу данных, пользователя который находится в оплаченой группе. И в 3 часа ночи база очищается (у меня)
Ууу, как всё громоздко получилось… Вам надо перед каждой раздачей видео дёргать sql на предмет разрешена ли отдача для этого IP :((( А если юзер на перемотке смотрит… а если таких юзеров несколько тысяч одновременно? Серевер с SQL загонят в глубокую кому очень быстро…
А вообще я считаю это в корне не правильно так извращаться от того что глючит скрипт php! Проше всего разобраться в php коде и устранить ошибку! Правда я понять не могу на что там ругается интерпретатор?
video.flv:1234567 а не video.flv?:=1234567
Или как вы это изменили?
Вы сделали стиль с : но ещё не тестировали? с
$filename = str_replace(":" ,"?start=",$filename);
Может результаты тут напишете?
Вот только я не пробовала на сервере что получает регулярка NginX… Попробуйте и отпишитесь здесь :)))
Так вот:
я взял файл xmoov.php тута на форуме убрал с него всё лишнее (ограничение скорости)
совместил с твоим кодом и вуаля! вот зацените результат.
Реврайт для nginx:
location ~ \.flv$ {
rewrite ^/video/([^/]*)/([^/]*)(/?)+$ /video/file.php?hash=$1&file=$2 last;
flv;
limit_rate 300k;
}
php код file.php:
<?php
$hash =$_GET[hash];
$ip = md5(getenv("REMOTE_ADDR")."key");
if ($hash == $ip){
define(XMOOV_PATH_ROOT, );
define(XMOOV_PATH_FILES, );
define(XMOOV_GET_FILE, file);
define(XMOOV_GET_POSITION, start);
define(XMOOV_GET_AUTHENTICATION, key);
if(isset($_GET[XMOOV_GET_FILE]))
{
$seekPos = isset($_GET[XMOOV_GET_POSITION]) ? intval($_GET[XMOOV_GET_POSITION]) : 0;
$fileName = htmlspecialchars($_GET[XMOOV_GET_FILE]);
$file = XMOOV_PATH_ROOT . XMOOV_PATH_FILES . $fileName;
if (!file_exists($file))
{
print(ERROR: ( . $fileName . ) not found);
exit();
}
if(file_exists($file) && strrchr($fileName, .) == .flv && strlen($fileName) > 2 && !eregi(basename($_SERVER[PHP_SELF]), $fileName) && ereg(^[^./][^/]*</div><span id="forum_podpis">Если пишете о проблеме, то приложите, пожалуйста, ссылку на свой плеер отсюда — ссылка target="_blank">Плеер: Файл > Код > Ссылка
</span><span id="forum_podpis"><span class="red">Вставка кода — </span> <input name="rem" checked="checked" type="checkbox"> дублировать ответы на kola138@mail.by (обратная связь только через форум) </span><input name="ncnum" id="ncnum" value="nc112" type="hidden"><input name="up" value="" type="hidden"><input name="margin" value="0" type="hidden"><input name="key_post" value="2697" type="hidden"><input name="key_link" value="talk4" type="hidden"><div id="right_submit"><input style="display: none;" disabled="disabled" name="close" id="close" onclick="close_form()" value="Отмена" type="button"> <input name="submit" id="submit" value="Отправить" type="submit"></div></form>, $fileName))
{
$fh = fopen($file, rb) or die (ERROR: xmoov-php could not open ( . $fileName . ));
$fileSize = filesize($file) (($seekPos > 0) ? $seekPos + 1 : 0);
header("Content-Type: video/x-flv");
header("Content-Disposition: attachment; filename=\"" . $fileName . "\"");
header("Content-Length: " . $fileSize);
if($seekPos != 0)
{
print(FLV);
print(pack(C, 1));
print(pack(C, 1));
print(pack(N, 9));
print(pack(N, 9));
}
fseek($fh, $seekPos);
while(!feof($fh))
{
{
while (!feof($fh))
{
print(fread($fh, 16384));
}
}
}
}
}
}
echo "фигу вам! :) ";
?>
Ссылка выглядит так
Переменная start и отправлять нужно байты
файл file.php лежит в папке /video/ на сервере рядом с видео файлами
Кто знает как, тот может ложить его куда угодно.
И ещё многие не поняли как такую ссылку можно вставлять
ТАК ВОТ ВЫ САМИ ДОЛЖНЫ ЕЁ ГЕНЕРИРОВАТЬ У СЕБЯ НА САЙТЕ вот так
$ip = md5(getenv("REMOTE_ADDR")."key");
Вроде всё.
Так вот:
я взял файл xmoov.php тута на форуме убрал с него всё лишнее (ограничение скорости)
совместил с твоим кодом и вуаля! вот зацените результат.
Реврайт для nginx:
location ~ \.flv$ {
rewrite ^/video/([^/]*)/([^/]*)(/?)+$ /video/file.php?hash=$1&file=$2 last;
flv;
limit_rate 300k;
}
php код file.php:
<?php
$hash =$_GET[hash];
$ip = md5(getenv("REMOTE_ADDR")."key");
if ($hash == $ip){
define(XMOOV_PATH_ROOT, );
define(XMOOV_PATH_FILES, );
define(XMOOV_GET_FILE, file);
define(XMOOV_GET_POSITION, start);
define(XMOOV_GET_AUTHENTICATION, key);
if(isset($_GET[XMOOV_GET_FILE]))
{
$seekPos = isset($_GET[XMOOV_GET_POSITION]) ? intval($_GET[XMOOV_GET_POSITION]) : 0;
$fileName = htmlspecialchars($_GET[XMOOV_GET_FILE]);
$file = XMOOV_PATH_ROOT . XMOOV_PATH_FILES . $fileName;
if (!file_exists($file))
{
print(ERROR: ( . $fileName . ) not found);
exit();
}
if(file_exists($file) && strrchr($fileName, .) == .flv && strlen($fileName) > 2 && !eregi(basename($_SERVER[PHP_SELF]), $fileName) && ereg(^[^./][^/]*$, $fileName))
{
$fh = fopen($file, rb) or die (ERROR: xmoov-php could not open ( . $fileName . ));
$fileSize = filesize($file) (($seekPos > 0) ? $seekPos + 1 : 0);
header("Content-Type: video/x-flv");
header("Content-Disposition: attachment; filename=\"" . $fileName . "\"");
header("Content-Length: " . $fileSize);
if($seekPos != 0)
{
print(FLV);
print(pack(C, 1));
print(pack(C, 1));
print(pack(N, 9));
print(pack(N, 9));
}
fseek($fh, $seekPos);
while(!feof($fh))
{
{
while (!feof($fh))
{
print(fread($fh, 16384));
}
}
}
}
}
}
echo "фигу вам! :) ";
?>
Ссылка выглядит так
Переменная start и отправлять нужно байты
файл file.php лежит в папке /video/ на сервере рядом с видео файлами
Кто знает как, тот может ложить его куда угодно.
И ещё многие не поняли как такую ссылку можно вставлять
ТАК ВОТ ВЫ САМИ ДОЛЖНЫ ЕЁ ГЕНЕРИРОВАТЬ У СЕБЯ НА САЙТЕ вот так
$ip = md5(getenv("REMOTE_ADDR")."key");
Вроде всё.
И ещё я как то совсем забыла в топик-стартере написать что папка с файлами в ссылке должна отличаться от реальной папки с контентом на сервере!!! Если имена папок совпадают, то не что не помешает личерам попользовать ваши файлы ломясь через открытый порт Апача! Если в NginX мы в конфиге запретили удалёный доступ к файлам, то в Апче не чего подобного мы не прописывали!
А можно в этом коде это поменять?
Нужна Ваша помощь не безвозмездная )
видео архив находится в другом городе, работает как часы < Lighthttpd > Защита от хотлинка ,
с перемотки пока не разобрался
принцип работы создаёш папку также будет называтся и плейлист
в эту папку закидываешь видео файлы
а скрипт уже сам всё генерирует и раскидывает по сезонам
с привязкой файлов из плейлиста к айпи + секрет_кей юзера
как и защита на адрес самого плейлиста
Зы.. продам за нормальную цену там договоримся просто нужно отбить потраченные деньги на скрипт
если интересно пишите скайп binders-76
ну хотя-бы сделать чтобы не могли брать ссылки на видео .
Спасибо.
отдавать ссылки типа: download.php?id=4l&hash=ksabbhmj7jablvnd9
где hash = md5 от id + каких-то данных, будь то ip или куки или еще что-либо.
На стороне сервера нужно проверять соответствие id, hash и ip или куки.
и в случае успеха отдавать:
header("Content-Length: " .(string)(filesize($file_path)) );
header(Content-Disposition: attachment; filename=".addslashes($file_name).");
header("X-Accel-Redirect: /".$file_path_full);
а папка с файлами вообще не должна лежать в паблике, чтобы физически по http нельзя было скачать напрямую.
По сути тоже самое, но не надо лезть в nginx.
Но минусы есть:
1. Если кто-то напишет парсер страниц, и будет сначала выявлять ссылки, а потом скачивать вы не защититесь
2. Куки не всегда можно использовать: так флеш плеер, например, не передает куки и даже reffer не передает.
Как защитить от скачивиния ботов вопрос другой!
Если не лезти к NginX то любой http дебагер выдаст с головой твою папку с контентом, потому как она появится в запросе плеера и что мне помешает ставить прямые ссылки с твоего сервера?
В моём варианте во первых не где не фигурирует реальное название папки с контентом, во вторых даже если узнают реальную папку NginX не отдаст с неё контент внешнему запросу, он отдаёт контент с этой папки только с локального запроса…
2. В дебагере не будет прямой ссылки. Как Вы думаете, что делает X-Accel-Redirect?
Более того, я сказал ведь (и указал, что это плюс), что папка с файлами не лежит в паблике, а значит по http впринципе без таких редиректов не получить доступ.
кому интересно пишите 392851985
Приводит к ошибке. В чем может быть проблема?
echo $ip = md5(getenv("REMOTE_ADDR")."key");
?>
&file=
&file=
ссылка вида:
В других плеерах (JW Player) работает. В других плеерах (JW Player) работает.
Пожалуйста исправьте глюк!
Мне нужен надежный плеер(быстрая работа, надежно защищенный контенет) для создания видеохостинга. Я не очень разбираюсь в этих веб вопросах и поэтому хочу найти человека, который бы мог меня проконсультировать, а возможно и поработать вместе со мной. У кого есть желание и возможность откликнитесь мне на почту sezotov@gmail.com или пишите вконтактe id:sezotov.
Спасибо!
Народ помогите!
Я решил создать сайт тематике "кино онлайн", сделал сайт который стоит на юкозе. Затем я арендовал облачный VPS (ОС Вин 2008 сервер) для хранения видео файлов.
Теперь проблема: Как мне настроить VPS, для показа, трансляции видео в плеере uppod swf на сайте, также как это сделано на всех сайтах кино?
пишите на почту: ya.pan2004@yandex.ru
rewrite ^/video/(w+)/(.+)$ /get.php?hash=&filename= last;
...
}
location /video {
internal;
flv;
}
К сожалению форум выстригает некоторые символы, вообщем в строке реврайта
get.php?hash="знак доллара"1&filename="знак доллара"2 last;
"знак доллара" это "$"
Не совсем понятно в первом образце что куда тыкать и куда знак доллара вставлять, во вторых как генерировать ссылку для плеера если у меня видео автоматом добавляется с сайта , в третьих путь к видео файлу у меня например такой /media/videos/flv для flv файла
Может есть понимающие люди которые просто напишут как быть в таких случаях.
Написать в аську не могу не пользуюсь, если есть скайп данного сисадмина пожалуйста напишите пожалуйста здесь.
Если есть знатоки просьба написать подробный.
Если применить данный способ защиты по ip, то файлы перестают работать в мобильных устройствах (планшетах) если способ исправить и побороть эту болезнь?
Заранее спасибо за любую помощь.
location / {
allow айпи сервера сайта;
deny all;
return 404;
}
location / {
rewrite ^/video/(w+)/(.+)$ /get.php?hash=&filename= last;
}
location /files/video {
root $root_path;
internal;
mp4;
}
убираю нормально
пишу в блоке server, папка с видео ка видите от корня /files/video/1.mp4
location /video/ {
rewrite ^/video/(.*) /get.php?path= last;
}
location /videofiles {
internal;
mp4;
}
первый location описывает реврайт для ссылок вида
второй запрещает прямую скачку файлов mp4 из папки /videofiles
path может выглядеть как угодно, к примеру hash/time_stamp/file_name.mp4 и соответственно
ваша ссылка
rewrite ^/video/(.*) /get.php?path= last;
}
Нужна всего лишь поддержка PHP для генерации хэша к ссылке.