.htaccess .mp4 мобильное видео с горячей ссылкой не воспроизводится

0

Привет. Итак, у меня есть куча видео, которое пользователи должны видеть только на странице video.php с тегом html5. Когда вы напрямую обращаетесь к файлу mp4, он должен перенаправить вас на домашнюю страницу. Это работает отлично, используя приведенный ниже код.

Я использовал этот код:

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?mydomain.com [NC]
RewriteRule \.(mp4)$ - [NC,F,L]

Однако на любом мобильном устройстве перенаправление работает, но видео перестали играть, как только я внедрил новое правило. Поэтому я нашел этот код откуда-то в надежде, что он сработает:

# for android/ipad/iphone/BlackBerry/Nokia/Samsung/Windows Phone
RewriteCond %{HTTP_USER_AGENT} !(Android|iPad|iPhone|BlackBerry|Nokia|SAMSUNG|Windows\ Phone)

По-прежнему не повезло, hotlinking на мобильных и настольных компьютерах, за исключением мобильных, видеофайлы не воспроизводятся. Я вернусь к исходному коду:

RewriteEngine on   

RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?mydomain.com [NC]
RewriteRule \.(mp4|jpg|gif)$ - [NC,F,L]

Если кто-нибудь может помочь мне понять, почему видео не играет с hotlinking, я был бы признателен!

  • 0
    Может быть, эти мобильные телефоны не посылают рефералов, как вы ожидаете их тоже? Кроме того, многие поставщики мобильного доступа активно используют свои собственные прокси между вашим сервером и мобильным устройством, поэтому, возможно, вы не получите фактическую строку агента мобильного пользователя и / или реферера с запросом. И, наконец, использование этого, когда ваша страница запрашивается через HTTPS, практически не имеет смысла, потому что все современные браузеры не отправляют реферер при использовании HTTPS. Итак, подведем итог: HTTP Refer (r) er так же бесполезен, как и когда-либо для каких-либо подобных целей, только в еще большей степени в наше время :-)
Теги:
.htaccess
hotlinking

1 ответ

0
Лучший ответ

Поэтому, пробовав все, я пришел к решению проблемы. Вместо использования.htaccess я сделал следующее:

Создайте уникальное имя папки для ваших видео. например, KV93BGYFQW9024J, поэтому URL-адрес будет для видео: (возможно, вы сможете воссоздать это каждый день, сохраняя его в базе данных в качестве ссылки)

mydomain.com/KV93BGYFQW9024J/video.mp4

Теперь создайте файл php, который выглядит так:

<?php
        $video = "video.mp4" //Video name can be retrieved from database using a token passed to this page

    $auth=true; // Authentication can be done here;

    if($auth){
        $path = "KV93BGYFQW9024J/";
        header("Content-type: video/mp4");
        header("Content-Length: ".filesize($path)); // provide file size
        header("Expires: -1");
        header("Cache-Control: no-store, no-cache, must-revalidate");
        header("Cache-Control: post-check=0, pre-check=0", false);
        readfile($path);
    }else{
        echo "Not Authenticated";
    }
?>

А затем, наконец, на реальной странице вы можете

<video id="example_video_1" controls preload="none" autoplay="false" >
      <source src="video.php?id=ISHF298YFGY25H01" type='video/mp4' />  
</video>

Маркер должен ссылаться на имя видео. Я знаю, что это просто отбрасывание, но помогает избежать подталкивания пользователей от обнюхивания других видео. Все и все, что вы не можете напрямую получить доступ к видео без проверки подлинности, и если вам удается получить доступ к папке, вы можете указать случайное повторное создание имени каждые 1-12 часов в зависимости от длины видео.

Если бы кто-нибудь еще мог дать мне лучшее решение, это было бы оценено. Это поможет сейчас, но я все еще вижу папку даже со случайным сгенерированным именем каждые 2 часа (в моем случае), являясь лазейкой безопасности.

благодаря

О, да, проблема здесь благодаря моему другу, файл полностью загрузится в серверный баран, если у вас есть файл 20 МБ, все файлы загружаются в RAM, а затем передаются пользователю. Если у вас 1000 одновременных подключений, у вас не будет бара. Любые дополнения по этому вопросу также будут оценены.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню