SecurityPlayerAccess control

Привязка к домену и гео-ограничения для встроенного видео

Как в плеере UFOLOAD работают списки доменов для встраивания, запреты по странам и IP и подписанные ссылки, как устроено сопоставление и где у каждого предел.

Как только видео опубликовано, любой, кто может прочитать исходный код вашей страницы, способен скопировать его адрес. Иногда это не проблема. Но часто проблема: другой сайт встраивает ваш плеер и тратит ваш трафик, лицензия действует только в некоторых странах или диапазон адресов постоянно выкачивает вашу библиотеку. Для таких случаев в UFOLOAD есть несколько механизмов, и работают они на разных уровнях. В этой статье объясняется, что делает каждый из них, как работают правила сопоставления и где у каждого предел, чтобы вы могли разумно их сочетать, а не полагаться на один переключатель.

Механизмы в двух словах

МеханизмЧто ограничиваетГде настраивается
Разрешённые домены для встраиванияКакие сайты могут показывать ваш плеер в iframeСтудия плеера, вкладка «Доступ»
Запрещённые страныЗрителей из перечисленных странСтудия плеера, вкладка «Доступ»
Запрещённые IP-адресаОтдельные адреса и маскиСтудия плеера, вкладка «Доступ»
Разрешённые домены для скачиванияКакие сайты могут открывать страницу скачиванияСтудия плеера, вкладка «Доступ»
Подписанные ссылки со сроком действияКак долго и для кого действует адрес воспроизведенияAPI, POST /files/{id}/links

Всё перечисленное входит в настройки плеера и доставки вашего аккаунта и применяется ко всем вашим видео. Правила доступны на любом тарифе; только сама кнопка скачивания есть лишь на тарифах Pro и Max, как указано на странице тарифов.

Шаг 1: привяжите встраивание к своим доменам

Встроенный плеер работает внутри iframe на чужой странице, и браузер сообщает ему, что это за страница, через referrer. Плеер передаёт этот хост серверу, а тот сравнивает его с вашим списком. Если хоста в списке нет, сервер отвечает 403, и плеер вместо видео показывает сообщение о недоступности.

Правила сопоставления строгие, и их стоит знать точно:

  • example.com разрешает ровно этот хост и ничего больше. Он не разрешает www.example.com.
  • *.example.com разрешает все поддомены example.com, но не сам example.com. Чтобы охватить сайт и его поддомены, добавьте обе записи.
  • Регистр не важен, порты и точка в конце игнорируются, поэтому Example.com:8080 совпадает с example.com.
  • В списке может быть до 100 записей. Пустой список означает, что плеер можно встраивать где угодно, — это значение по умолчанию.
  • Указывайте просто имена хостов. Если по ошибке вставить полный адрес, сохранится только хост.
Внимание

Прежде чем включать список, добавьте в него все хосты, на которых вы реально встраиваете видео, включая тестовые и превью-домены. Видео, которое вдруг показывает сообщение о недоступности на вашем собственном тестовом сайте, — самый частый сюрприз.

Чего привязка к домену не делает

Этот механизм останавливает бытовой хотлинкинг: когда кто-то вставляет ваш iframe на свою страницу. Это не граница безопасности, и лучше понимать почему. Проверка опирается на referrer, который отправляет браузер. Если страница убирает referrer, плеер не может определить, где он встроен, и в этом случае не блокирует воспроизведение, потому что иначе настройки приватности и политики referrer ломали бы легитимные встраивания. Точно так же настойчивый посетитель, скопировавший подписанный адрес плейлиста из панели сети, может воспроизводить его в другом месте, пока не истечёт срок, потому что сегменты проверяются по подписи ссылки, а не по странице, которая их запрашивает. Публичная страница просмотра видео списком доменов тоже не ограничивается: её может открыть любой, у кого есть ссылка.

Поэтому воспринимайте список как забор, который не пускает честных соседей. Для более строгого контроля над потоком, который вы отдаёте сами, используйте подписанные ссылки, описанные ниже. Если вам нужно обратное — видео, которое могут открыть только избранные люди, — учтите, что в UFOLOAD нет приватных видео и DRM; прочитайте статью свой сервер, бесплатные платформы или видеохостинг, прежде чем доверять ему конфиденциальный контент.

Шаг 2: заблокируйте страны и IP-адреса

Правила по странам и IP применяются в двух местах: когда зритель открывает страницу просмотра или встраивания и при каждом запросе плейлиста и сегментов на уровне доставки. Проверка при доставке выполняется для каждого запроса, а не кэшируется, поэтому добавленное правило действует уже на следующий сегмент, и тот, у кого уже есть ссылка, не обойдёт правило, просто сохранив её.

  • Страны указываются двухбуквенными кодами ISO 3166-1 alpha-2 через запятую, например US, CN, RU. Страна зрителя определяется по IP-адресу через базу геолокации. В каждом списке может быть до 100 записей.
  • IP-адреса могут быть отдельным адресом, например 203.0.113.7, или маской со звёздочкой в последнем октете, например 203.0.113.*, которая охватывает весь диапазон из 256 адресов. Адреса IPv6 можно указывать точно.

Два практических предостережения. Маски — грубый инструмент: маска .* на мобильной или офисной сети блокирует всех легитимных пользователей за ней. А география по IP точна ровно настолько, насколько точны данные об адресах. Посетители с VPN или прокси выглядят так, будто находятся там же, где выходной узел, поэтому запрет страны — это способ сократить нежелательный трафик или добросовестно соблюсти региональную лицензию, но не гарантия.

Совет

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

Если вы воспроизводите поток на своей странице через hls.js (см. встраивание HLS-видео), список доменов не участвует, потому что плеер вообще не запрашивает разрешения у страницы UFOLOAD. Контроль обеспечивает сама ссылка. POST /api/v1/files/{id}/links выдаёт ссылки на воспроизведение и скачивание со сроком действия от 60 секунд до 30 дней. Добавьте bind_ip, чтобы привязать ссылку к одному IPv4-адресу, или bind_cookie, чтобы привязать её к значению cookie, которое ваш сервер устанавливает посетителю; в ответе тогда будет указано имя cookie, которая должна сопровождать запрос.

bash
curl -X POST "https://ufoload.com/api/v1/files/FILE_ID/links" \
  -H "Authorization: Bearer $UFOLOAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"ttl": 600, "bind_ip": "203.0.113.7"}'

Короткий срок действия вместе с привязкой — самый сильный из доступных инструментов: ссылка, скопированная с вашей страницы, становится бесполезной через несколько минут и бесполезна с любого другого адреса. Цена в том, что ссылки нужно выдавать со своего сервера при каждом просмотре страницы, — именно такую схему описывают руководство по загрузке и API и документация API.

Домены для скачивания

Плееры на тарифах Pro и Max могут показывать кнопку «Скачать». Отдельный список — разрешённые домены для скачивания — работает точно так же, как список для встраивания, но определяет, какие сайты могут открывать страницу скачивания во фрейме. Оставьте его пустым, чтобы разрешить все сайты. Посетители, открывающие страницу скачивания напрямую на UFOLOAD, не ограничиваются — так же, как и со страницей просмотра.

Шаг 3: сохраните и проверьте

  1. Сохраните списки на вкладке «Доступ».
  2. Откройте страницу на разрешённом домене в приватном окне и убедитесь, что видео воспроизводится. Проверьте и вариант с поддоменом.
  3. Откройте тот же код встраивания с домена, которого нет в списке, например с локальной тестовой страницы под другим именем хоста, и убедитесь, что плеер показывает сообщение о недоступности.
  4. Правило по стране или IP проверяйте без входа в аккаунт, по возможности из сети, которая под это правило попадает.
  5. Держите политику referrer своей страницы на разумном значении, например strict-origin-when-cross-origin. Политика no-referrer скрывает хост от плеера, и тот не может применить список.

Вместе список доменов для встраивания и подписанные ссылки с коротким сроком покрывают большинство реальных случаев: бытовой хотлинкинг блокируется на входе, а тому, кто идёт дальше, приходится добывать ссылку, которая скоро истечёт. Если реклама доступна и вы показываете её в плеере, руководство по монетизации объясняет рекламные форматы и то, как расставляются рекламные паузы. Полный перечень возможностей плеера — на странице возможностей, а чек-лист выбора видеохостинга показывает, каких механизмов контроля доступа требовать от любого провайдера.

Попробуйте с бесплатным аккаунтом

Загрузите видео и получите HLS-плеер и API-ключ за несколько минут. Лимиты тарифов указаны на странице тарифов.