Устранение неполадок и часто задаваемые вопросы

Назад к функциям инфраструктуры платного доступа


Q1: Не работает защита от вставки прямых ссылок. Поток все время открыт для просмотра.

У этого может быть всего лишь несколько причин.

  1. Проверьте секцию "Geo and IP-based restrictions" в вашем правиле WMSAuth. Пользователи из стран и диапазонов IP-адресов, включенных в разрешительный список, имеют доступ к потокам, подпадающим под действие данного правила, независимо от подписи. Пожалуйста, обратите внимание на то, как следует использовать ограничения по географическому признаку, в вопросах Q5 и Q6 из данного раздела.
  2. Перейдите в меню "Nimble -> HTTP origin applications" и убедитесь, что имя приложения потока отсутствует в списке. Приложения, указанные в этой секции не восприимчивы к любым параметрам настройки сессии, включая защиту от вставки прямых ссылок WMSAuth.
  3. Проверьте параметр "Time tolerance" в вашем правиле WMSAuth. Он означает максимально допустимую разницу во времени между веб-сервером и медиа-сервером. Имеет смысл использовать этот параметр, если вы не можете настроить одно и то же время на обоих серверах. Если значение параметра "Time tolerance" больше разницы во времени между веб-сервером и медиа-сервером, тогда оно фактически увеличивает срок действия подписи. Мы рекомендуем установить правильное время на всех ваших серверах и указать значение параметра "Time tolerance" в интервале 60-90 секунд.

Q2: Не работает защита от вставки прямых ссылок. Поток все время заблокирован.

Все в порядке, это означает, что настройки ещё не завершены. В основе защиты от вставки прямых ссылок лежат 4 параметра: поток, пароль, время и IP-адрес. Давайте проверим, что именно было пропущено.

  1. Поток доступен
    1. Во-первых, создайте тестовую веб-страницу, которая будет содержать только код подписи URL и плеер, чтобы проверить итоговый URL.
    2. Отключите защиту WMSAuth, чтобы проверить воспроизводится ли оригинальный поток. Это может быть сделано путём корректировки названия потока в правиле WMSAuth. Достаточно поменять имя на любое другое, например, "live" на "live_wmsauth_disabled", и сохранить настройки.
    3. Всё ещё не проигрывается? Пожалуйста, убедитесь, что поток доступен.
    4. Прогрывается нормально? Включите защиту WMSAuth снова.
  2. Пароль указан верно
    1. Проверьте ключ, который используется в коде подписи URL и в правиле WMSAuth — они должны совпадать.
    2. Если вы используете язык PHP для подписей, убедитесь в том, что ваш ключ не содержит знак доллара ($), т.к. этот знак является зарезервировнным символом для языка PHP.
  3. Время установлено правильно
    1. Проверьте время медиа-сервера — оно должно быть правильно установлено и соответствовать временной зоне. Примените настройки и для Wowza, и для Nimble Streamer.
    2. Проверьте, что время медиа-сервера такое же, как время веб-сервера. Разница во времени должна быть меньше параметра "Time tolerance", который устанавливается сразу после поля "Password" в правиле WMSAuth.
    3. Увеличьте параметр validminutes. Этот параметр определяет время, в течение которого подписанная ссылка будет пригодна для проверки.
  4. IP-адрес соответствует подписи
    1. Добавьте значение IP-адреса посетителя на тестовую веб-страницу. В языке PHP это можно сделать так: "echo $_SERVER['REMOTE_ADDR'];". Убедитесь, что вывод содержит ваш собственный IP-адрес. Если нет, тогда необходимо следовать этой статье для получения корректного IP-адреса посетителя.
    2. Если все еще не работает, перейдите в меню "Control -> WMSAuth paywall setup" и нажмите на "Server logs". Затем попробуйте воспроизвести поток. В течение нескольких секунд в логе появятся сообщения с описанием ошибки.
    3. Если вы видите сообщение "we cannot find hash match for _IP_", где _IP_ является фактическим IP-адресом, проверьте, что этот адрес совпадает с тем, что выведен на вашей тестовой странице. Если же вы видите какое-либо другое сообщение, обратитесь к вопросу Q3 из данного раздела.
    4. Если адрес, который отображен на вашей тестовой странице, совпадает с адресом из лога, вам стоит вернуться к пункту "Пароль указан верно". Если нет, тогда вы столкнулись с редким случаем, когда ваш интернет-провайдер динамически меняет IP-адрес пользователя при каждом запросе. Следовательно, использовать IP-адрес в подписи для идентификации пользователя не имеет смысла, и вам придется сделать это другим способом. Для такого случаая можно использовать платформу оплаты за просмотр. Пожалуйста, прочитайте эту статью, чтобы ознакомиться с деталями реализации.

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

  1. URL тестовой веб-страницы, указанной в пункте 1.
  2. Исходный код веб страницы, чтобы мы могли проверить, что он в порядке.

Q3: Что означают сообщения в логе WMSAuth?

Итак, вы перешли в меню "Control -> WMSAuth paywall setup" и нажали на ссылку "Server logs".
Следующие сообщения встречаются наиболее часто:

  • signature is correct but link expired — пользователь запросил защищенный медиа-контент по ссылке с истекшей подписью. Срок действия подписи задается параметром validminutes. Это могла быть как попытка повторного использования ссылки, так и ошибка в настройках защиты. Если такого поведения не должно быть в данном случае, пожалуйста, обратитесь к пункту "Время установлено правильно" вопроса Q2 из данного раздела.
  • we cannot find hash match for _IP_ — пользователь запросил защищенный медиа-контент по ссылке с некорректной подписью. Это могла быть как попытка использования корректно подписанной ссылке с другого IP-адреса (ре-стриминг), так и ошибка в настройках защиты. Если такого поведения не должно быть в данном случае, пожалуйста, обратитесь к пункту "IP-адрес соответствует подписи" вопроса Q2 из данного раздела.
  • Time, hashvalue or validminues is null for _IP_ — пользователь запросил защищенный медиа-контент по ссылке без подписи.
  • user [_IP_] is in allow list — пользователь запросил защищенный медиа-контент, и его запрос был выполнен без учета подписи, потому как адрес пользователя включен в разрешительный список.
  • wmsauth checked link and it's valid — пользователь запросил защищенный медиа-контент по ссылке с корректной подписью.

Q4: Что если WMSPanel стала недоступна по причине ошибки в сети?

Нет проблем, агент WMSPanel всё-равно будет способен работать. Все настройки хранятся на стороне медиа-сервера, включая базу данных GeoIP. Таким образом ограничения на просмотр будут применяться без перерывов и ваши медиа-данные будут защищены независимо от доступности WMSPanel.

Q5: Как я могу сделать доступными потоки для одной страны и недоступными для всех остальных?

Скажем, вам необходимо, чтобы люди из Антигуа и Барбуды смотрели ваше живое вещание, а остальные страны нет. Чтобы это сделать, просто добавьте нужные страны в список разрешенных стран, затем прокуртите вниз до раздела защиты от повторной публикации, отметьте все протоколы и введите пароль ненулевой длинны. Таким образом, если кто-то придёт из Антигуа и Барбуды, он (или она) пройдёт проверку по списку разрешенных стран и будет допущен до просмотра потока. Любой парень, скажем с Ямайки, пройдет проверку для страны (поскольку Ямайка не находится ни в списке разрешенных, ни в списке запрещенных стран), но не пройдёт проверку защиты от повторной публикации.

Q6: Как я могу сделать доступным мой поток только для одной страны и включить защиту от вставки прямых ссылок для него?

Это продолжение предыдущего вопроса. Когда вы добавляете страну в разрешительный список в каком-то правиле VMSAuth, платформа ограничения доступа не отрабатывает защиту от вставки прямых ссылок. Так происходит потому, что разрешительный список говорит о том, что "разрешить" — означает "никаких ограничений". Таким образом, чтобы воплотить сценарий, при котором будет выполняться защита от вставки прямых ссылок и доступ только для определённых стран, необходимо перейти в секцию geo-restriction, затем выбрать "All countries" из выпадающего списка и затем добавить их в запретительный список. После этого исключить страны, для которых необходимо разрешить доступ и добавить пароль для защиты от вставки прямых ссылок в поле пароля. Это будет работать так: зритель из страны в разрешительном списке будет проходить проверку в запретительном списке и будет проверен на подпись URL. Можно исключить любое количество стран из запретительного списка, чтобы настроить для них защиту от вставки прямых ссылок.

Q7: Как открыть вещание с origin-сервера для edge-серверов и при этом закрыть для всех остальных зрителей?

Вам необходимо создать правило WMSAuth. Добавьте IP-адреса ваших edge-серверов в разрешительный список (allow list) и укажите достаточно стойкий пароль. Поток будет доступен только для edge-серверов.

Q8: Как разрешить соединения с edge-серверов только в отдельном регионе, запретив смотреть конечным пользователям?

Это более сложный, чем Q7, случай когда у вас есть edge-сервера в отдельных странах и настроена балансировка нагрузки, но нужно оградить от случайных или намеренных соединений обычных пользователей. При этом исходный сервер должен быть в состоянии обрабатывать соединения обычных пользователей помимо раздачи на edge.
Ещё один вариант - вам нужно разрешить просмотр конкретным пользователям и запретить для остальной аудитории страны.
Решается это несложно. Пройдите в правило WMSAuth, добавьте нужную страну в Deny list и воспользуйтесь ссылкой "Add or manage custom IP ranges", чтобы задать диапазоны IP адресов для серверов или людей, которым нужен допуск.
После того, как заданы диапазоны, можете вернуться в правило WMSAuth, добавить диапазон в Allow list и отметить галку "Allow list has priority over Deny list".
По умолчанию, у Deny list есть приоритет над Allow list. А указанная настройка эти приоритеты позволяет поменять.

Q9: Как запретить скачивание файлов во время вещания видео-по-запросу?

Для предотвращения скачивания файлов достаточно установить пароль в правиле WMSAuth для псевдо-стриминга (progressive download).

10: Некоторые недобросовестные пользователи могут открывать мои защищённые ссылки напрямую, используя Kodi, SimpleTV, Targa.me, и др. Что я могу сделать?

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

Q11: Как я могу сгенерировать уникальную подпись для отдельного потока?

Nimble Streamer способен генерировать подписи на основе потоков чтобы сделать их уникальными для каждого приложения или потока.

Q12: Есть ли какие-нибудь примеры построения инфраструктуры оплаты за просмотр (paywall) с помощью WMSAuth?

Все примеры кода могут быть найдены в github репозитории WMSPanel в разделе примеры защиты от вставки прямых ссылок (hotlinking) и примеры API.
Пожалуйста, прочтите также Руководство параноика по интернет-вещанию Томаса Гирса, чтобы посмотреть примеры реального использования интеграции инфраструктуры оплаты за просмотр.

Q13: Как я могу посмотреть сырые данные функционала оплаты за просмотр, которые приходят с моих серверов?

Обработчик и интерфейс отладки позволяют получать данные от сервера и просматривать результаты в браузере. Используйте их, чтобы видеть, какие запросы поступают от серверов к вашему обработчику.

Q14: Для всех ли серверов в группе WMSAuth применяются ограничения на количество соединений и скорости передачи данных?

Ограничения применяются для каждого сервера в отдельности. Таким образом, если вам необходимо выставить ограничение в 6000 одновременных подключений к 3 серверам, то необходимо добавить эти 3 сервера в группу и указать ограничение в 2000 соединений в правиле для каждого сервера.

Q15: Dispersa не может проверить защищённые потоки

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

Q16: Как защитить мои ссылки от копирования без внесения изменений в исходный код веб-страницы?

Для стойкой защиты мы рекомендуем использовать защиту от вставки прямых ссылок. Если вы хотите ограничить возможность просмотра вашего контента с других доменов, не используя при этом подпись URL, возьмите на вооружение более простой метод блокировки домена (Domain Lock).

Q17: Как можно защитить потоки, если я пользуюсь CloudFlare или другим прокси?

В этой статье описан пример кода для случая с CloudFlare, а в этой статье описана работа с reverse proxy.

Другие вопросы?

Пожалуйста, свяжитесь с нами чтобы мы могли помощь интегрировать решения WMSPanel в ваш рабочий процесс.

Также вы можете написать в форум компании WMSPanel , чтобы получить ответы от других пользователей или компаний.