Настройка показа видео на дорвее
patlatВсех приветствую, предоставляю на Ваше суждения статью о том, как настроить показ потокового видео на своём дорвее. Постараюсь без лишний воды, но некоторые пояснительные моменты всё же придётся вставлять чтоб не нарушать логическую последовательность подачи информации. И так, начнём. Сначала предыстория.
Предыстория
Решил я написать дорген на ВПС. Он получает ссыль на сайт с видео контентом, полностью его копирует, с некоторыми изменениями в контенте, удаляет всё, что не нужно и добавляет всё, что нужно, а главное, чтоб не осталось ни одного хозяйского урла.
В общем, решил и написал.
Подобрал я один сайтик киношный в интересном для меня гео, который ещё достаточно молодой, но очень перспективный в росте трафика. Закинул его в свой дорген, запустил. Сайт скопировался норм, вёрстка в идеале, хозяйских ссылок не осталось, всё ненужное удалилось, а нужное соответственно добавилось. Начал проверять переходы по ссылкам и открытия видео.
И вот с видео оказалась засада. После безуспешных попыток открыть видео, я решил сменить сайт, уже чисто для теста. И менял так сайты несколько раз. Так как на разных сайтах были разные результаты. Одни видео открывались, другие не открывались.
Сдаваться я не стал, а полез гуглить, чтоб решить создавшуюся проблему. На этом предыстория заканчивается.
Общая информация
Так как статью будут читать так же и новички, поэтому напишу немного разъяснительной инфы, чтоб складывалась объективное понимание от прочитанного.
Что такое потоковое видео на сайте и его принцип работы.
Потоковое видео (стриминг) — это технология, которая позволяет воспроизводить видео на сайте в режиме реального времени без необходимости полного скачивания файла на устройство пользователя.
При потоковой передаче видео данные разбиваются на небольшие пакеты, которые отправляются на устройство пользователя. Эти фрагменты загружаются и воспроизводятся по мере их получения, что позволяет начать просмотр почти сразу, даже если видео еще не полностью загружено.
Что такое балансёр показа потокового видео и его принцип работы.
Балансёр показа потокового видео — это технология, которая распределяет нагрузку при воспроизведении видео среди нескольких серверов.
Когда мы запускает потоковое видео, его запрос направляется на сервер и, в зависимости от настроек балансера, нас направляют на один из серверов, где мы получаем пакеты файлов для отображения видео.
Что такое iframe и его принцип работы.
Iframe,— это HTML-элемент, который позволяет встраивать один веб-документ в другой. Это упрощает процесс добавления видео на сайт, позволяя нам интегрировать видео без необходимости загружать и хранить файлы на своих серверах.
Когда мы вставляете видео через iframe, мы добавляете на свою веб-страницу небольшой фрейм, который действует как "окно" для внешнего контента. Этот фрейм загружает и отображает содержимое из указанного урла, что позволяет показывать видео с другого веб-сайта внутри нашей страницы сайта.
Пример:

С общей инфой достаточно.
Практическая часть
После анализа и проведения тестовых исследований, я выявил следующие проблемы из за которых не отображаются видео.
1. Часть сайтов после запроса к ним, не отдаёт ссылку на балансёр, так как палит рефер запроса. Другими словами, хозяин кинозала видит, что кино просматривают не с его кинотеатра.
2. Некоторые сайты, используют балансёры не со своих серверов, а с со сторонних ресурсов, это хорошо, но плохо то, что ссылку на эти ресурсы они отдают только после обращения к их серверу, то есть, опять проверка рефера
3. Часть сайтов, используют свои сервера для отдачи пакетов видео. Здесь вообще матрёшка, то есть сначала проверка на сайте который копируем, следующая проверка на ресурсе где пакеты.
Из выше сказанного, обозначается основная причина возникновения моей проблемы. Это рефер при передачи запроса.
Ещё один важный момент, когда мы встраиваем ресурс с другого сервера в наш сайт с помощью элемента <iframe>, а далее клиент открывает нашу страницу в своём браузере, то браузер клиента берёт ссылку с iframe и отправляет запрос по взятой этой ссылки, а в Referer прописывает тот сайт от кого он получил эту страницу, то есть мой сайт.
На все свои поиски относительно переопределения рефера, я получил вот такой ответ, что переопределить заголовок Referer при передаче запросов через iframe напрямую не получится. Этот заголовок формируется и отправляется браузером автоматически, и его цель — указать серверу, откуда пришел запрос.
Я всё же не сдавался, решил для начала поиграть с атрибутам «referrerpolicy» тега <iframe>, это было самое наипростейшее и соответственно не помогло.
Так же попробовал переопределить рефер в JavaScript:
Пример:

Но результат был везде один и тот же, точнее отсутствие результата. Браузер ни в какую не хотел менять мой URL в Referer на URL копируемого сайта.
Подходя к данной точке у меня уже сложилось понимание того, что лёгких путей не будет, то есть решить вопрос добавлением небольшого куска кода у меня вряд ли получится.
После этих без успешных тестов и массы перелопаченного материала я пришёл к решению затестить – Обратный прокси сервер.
Обратный прокси-сервер — это сервер, который принимает запросы от клиентов и перенаправляет их на другие серверы. В контексте показа потокового видео через <iframe>, обратный прокси-сервер может быть использован для промежуточной обработки запросов от клиента(браузер) к серверу копируемого сайта. Другими словами, мы не даём браузеру напрямую общаться с хозяином кинозала, а предоставляем им общение через посредника, то есть через нас.
Пример сценария общения с сервером копируемого сайта:
- Пользователь заходит на страницу с встроенным видео через свой браузер.
- Браузер отправляет запрос к нашему серверу https://наш_сервер.com/video/your_video_id.
- Наш сервер перенаправляет запрос на сервер который мы копируем, заменяя заголовок Referer на https:// сервер_который_копируем.com/attributes
- Внешний сервер отправляет ссылку потокового видео на наш сервер, воспринимая нас как браузер Пользователя.
- Наш сервер передает ссылку потокового видео обратно в браузер.
- Браузер воспроизводит видео
Для понимания сценария, ниже два примера, как <iframe> выглядел раньше и как он стал выглядеть для нашего обратного прокси.
Вариант до нашего вмешательства:
<iframe title="video" src="https:// сайт_который_копируем.com/player/ot/f7c61acb952091babaa88dfdad61d3" width="100%" style="height:400px" frameborder="0" scrolling="no" allowfullscreen></iframe>
Вариант для обратного прокси:
<iframe title="video" src="https://наш_сервер.com/proxy/f7c61acb952091babaa88dfdad61d3" width="100%" style="height:400px" frameborder="0" scrolling="no" allowfullscreen></iframe>
Как видите, мы изменили ссылку для запроса с браузера, теперь браузер будет запрашивать видео пакеты у нас, а мы в свою очередь, копируем все его заголовки и перенаправляем запрос к серверу копируемого сайта.
С применением данной техники, для многих сайтов, мы решим проблему. Почему для многих, а не всех?
Суть в том, что данная схема будет работать, если сервер с которого мы копируем, получает потоковое видео со стороних ресурсов, к примеру таких как Ютуб. То есть, сайт-кинозал отдал нам ссыль где пакеты, мы передали эту ссыль в браузер, а браузер уже на прямую станет запрашивать пакеты видео файлов с этого ресурса
Но есть ещё вариант того, что хозяин кинозала, держит видео файлы на своих серверах. Как же быть в таком случаи?
В данном случае, так же нет ни чего страшного, единственное, нам самим придётся принимать все пакеты с файлами и передавать их браузеру.
Как это выглядит?
В примере сценария, после четвёртого пункта, мы проверяем ответ от сервера, то есть, смотрим что за ресурс он передаёт нам как хранителя видео пакетов, если это по типу Ютуб, то отдаём его Пользователю (браузер), если же это его собственные сервера, то их так же начинаем проксировать. Так как, на своих серверах, хозяин кинозала опять начинает проверять откуда смотрится фильм и запрашивать рефер.
Проверить ответ от сервера, чтоб определить что за ресурс он нам передаёт в качестве хранителя видео, можно с помощью сниффера. То есть, сниффаем запросы от нашего сервера к серверу копируемого сайта.
Сниффер— это программное средство, которое используется для перехвата и анализа данных, передаваемых по интернет сети.
И последнее, покажу принцип реализации всего выше описанного. По естественным причинам, весь код реализации я выложить не могу, опишу макетную часть.
Свой веб сервер, он же дорген, я распределил на два обработчика.
Первый обработчик, он же основной принимает все запросы, которые идут на прямую к моему серверу.
Второй обработчик, он же прокси сервер, который обрабатывает только те запросы которые необходимо проксировать, то есть быть посредником между браузером пользователя и сервером кинозала.
Ниже я написал код макета реализации проксирования копируемого сайта на Golang

Если не вдаваться в более глубокое погружение, то на этом можно закончить. Я постарался максимально просто и доступно объяснить принцип работы потокового видео и проксирования копируемого сайта. Надеюсь моя статья вам понравилась и будет полезной в вашей работе.
Организаторы и Партнеры конкурса:
- Администрация группы "Дорвеи и Дорвейщики (https://in.gl/doorway-tg))"
- Vip Клуб Дорвейщиков (https://in.gl/vip-chat)
- Пуш партнерская программа hClicks.com (https://in.gl/hclicks)
- Прямой рекламодатель казино 7 Slots (https://7affiliates.com/ru/webmaster/register/?tracker=1388)
- Новая ПП с “витриной ссылок” AdsPlain.com (https://in.gl/adsplain)
- Генерации ИИ Контента ClipAI.pro (https://clipai.pro/)
- Cервис ускорения индексации - SpeedyIndex (https://t.me/SpeedyIndexBot?start=-15)
- Кручу Верчу (https://t.me/Kruchu_Werchu) - информационный партнер
- MAXIMAFFILIATE (https://t.me/maximaffiliate) - информационный партнер