1

Тема: прослушивание потока только с одного сайта

Здравствуйте!

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

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

Также вижу, что провайдеры это тоже как то решают - делая платное телевидение в своих сетях, но там надо инсталлировать их приложение, а мне нужен именно плеер на сайте.

Может кто решал подобную задачу или есть свежие мысли.

2

Re: прослушивание потока только с одного сайта

подсмотри как сделано на сайте live365.com

тут как вариант для лохов, можно ссылку прописать в JS файл.
Использовать искл. IceCast

Вариант, ссылка находиться в флеш-плеере. Как это сделано на сайте Рекорд'а 
Декомпилятором и этот вопрос легко решаем.

Отредактировано VapSite (07-10-2013 20:47:35)

3

Re: прослушивание потока только с одного сайта

VapSite пишет:

подсмотри как сделано на сайте live365.com

тут как вариант для лохов, можно ссылку прописать в JS файл.
Использовать искл. IceCast

Вариант, ссылка находиться в флеш-плеере. Как это сделано на сайте Рекорд'а 
Декомпилятором и этот вопрос легко решаем.


Можно сделать так. Пока остановились на этом варианте

1. Рандомно каждую ночь генерим ссылку моунта
2. Вставляем ее в плеер и в конфиг айскаста
3. Перегружаем айскаст (в kh можно перечитывать конфиг)

Может у кого то есть более красивая версия?

4

Re: прослушивание потока только с одного сайта

anester пишет:
VapSite пишет:

подсмотри как сделано на сайте live365.com

тут как вариант для лохов, можно ссылку прописать в JS файл.
Использовать искл. IceCast

Вариант, ссылка находиться в флеш-плеере. Как это сделано на сайте Рекорд'а 
Декомпилятором и этот вопрос легко решаем.


Можно сделать так. Пока остановились на этом варианте

1. Рандомно каждую ночь генерим ссылку моунта
2. Вставляем ее в плеер и в конфиг айскаста
3. Перегружаем айскаст (в kh можно перечитывать конфиг)

Может у кого то есть более красивая версия?

http://icecast.org/docs/icecast-2.3.3/i … rauth.html

Почитайте сделать про авторизацию слушателей через URL.
Особое внимание к <option name="listener_add" value="http://myauthserver.com/listener_joined.php"/>
Проверяем header (заголовки), если это не браузер, то сбрасываем, если браузер, то выставляем нужный заголовок
icecast-auth-user: 1
И айскаст пустит слушателя к потоку.

http://radioheart.ru/banners/radioheart_400x40_banner.jpg
RadioHeart.ru: Функциональный радио хостинг с автодиджеем и нонстопом, а так же быстрый виртуальный хостинг. Возможность создать радио за 5 минут, подключить автодиджей и нонстоп.
Отзывы о хостинге

5

Re: прослушивание потока только с одного сайта

В icecast KH есть такая фича <deny-agents>/path/to/file-with-useragents</deny-agents>, можно попробовать. Понятно что список будет собрать не просто, но нереального тут ничего нет.

6

Re: прослушивание потока только с одного сайта

Хотя да, погорячился я слегка, вытащил из базы массив возможных юзерагентов, пожалуй многовато будет http://yadi.sk/d/QSw_SFQvFBUdu Если только нельзя их указать как нибудь в сокращенном виде. Надо пробовать.

Отредактировано gyurgin_1 (30-12-2013 02:39:49)

7

Re: прослушивание потока только с одного сайта

В общем Falcon прав  - авторизация решает, только проверяем useragent. Добавляем к маунту секцию:

  <authentication type="url">
  <option name="listener_add" value='http://Ваш домен или где будет лежать скрипт (главное - здесь должен быть url)/listener_add.php'/>
  <option name="auth_header" value="icecast-auth-user: 1"/>
  <option name="presume_innocent" value="yes"/>
  <option name="handlers" value="50"/>
  </authentication>

ну и сам listener_add.php примерно такой:

<?php
$ag = $_POST['agent'];
if ((strpos($ag, 'Mozilla') !== false) || (strpos($ag, 'Opera') !== false) || (strpos($ag, 'Internet%20') !== false)) {
header("icecast-auth-user: 1");
}
else {
header("icecast-auth-user: 0");
}
?>

Проверено - работает.

Отредактировано gyurgin_1 (30-12-2013 09:37:09)

8

Re: прослушивание потока только с одного сайта

Вернусь к этому вопросу.
Задача, ограничить подключения к айскасту только теми пользователями которые слушают эфир с плеера на сайте example.ru, остальные идут лесом.

Есть такая конструкция в icecast

<mount>
        <mount-name>/name.mp3</mount-name>
        <authentication type="url">
        <option name="listener_add" value='http://example.ru/auth/listener_add.php'/>
        <option name="auth_header" value="icecast-auth-user: 1"/>
        <option name="presume_innocent" value="yes"/>
        <option name="handlers" value="50"/>
        </authentication>
</mount>

сам скрипт php имеет вид

<?php
$www = $_SERVER['HTTP_HOST'];
$hostname = 'example';
$auth = strripos($www, $hostname);
if ($auth === false) {
    "icecast-auth-user: 0";
} else {
    "icecast-auth-user: 1";
}
?>

Но что то ему не хватает. Может кто то подскажет в чем дело?

9

Re: прослушивание потока только с одного сайта

anester пишет:

Может кто то подскажет в чем дело?

А того и не хватает.
Код неверный. Двойка за работу на уроке :-)

<?php
$www = $_SERVER['HTTP_HOST'];
$hostname = 'www.example.ru';
if (strpos($www, $hostname) == false) {
    "icecast-auth-user: 0";
} else {
    "icecast-auth-user: 1";
}
?>

И, к слову, функция в данном случае применяется strpos, а у тебя, двоечник, strripos.
Без обид на слово "двоечник". Ошибка меня позабавила просто.
Код не проверял, но уверен, сработать должен.

Отредактировано Freak (13-10-2014 19:00:43)

10

Re: прослушивание потока только с одного сайта

if (strpos($www, $hostname) === false) {

Должно быть именно 3 равно, т.к. есть строка начинается с нулевой позиции, то код не сработает. Должно быть тождественное равенство

http://radioheart.ru/banners/radioheart_400x40_banner.jpg
RadioHeart.ru: Функциональный радио хостинг с автодиджеем и нонстопом, а так же быстрый виртуальный хостинг. Возможность создать радио за 5 минут, подключить автодиджей и нонстоп.
Отзывы о хостинге

11

Re: прослушивание потока только с одного сайта

Falcon пишет:
if (strpos($www, $hostname) === false) {

Должно быть именно 3 равно, т.к. есть строка начинается с нулевой позиции, то код не сработает. Должно быть тождественное равенство

Имеет смысл... Как то не подумал. Хотя, в конкретном случае отладка покажет.

12

Re: прослушивание потока только с одного сайта

Отклонились немного не в ту сторону, к скрипту обращается icecast и вся эта ерунда с $_SERVER ни к чему не приведет.
Вот правильный скрипт:

<?php
$req_url = parse_url($_POST['referer'], PHP_URL_HOST);
$player_host = 'example.com';
if (strpos($req_url, $player_host) !== false) {
header("icecast-auth-user: 1");
} else {
header("icecast-auth-user: 0");
}
?>

Соответственно $_POST['referer'] содержит полный путь к компоненту плеера (swf или js) и тут можно что нибудь придумать, например распространять код для вставки плеера своего радио на сайты и запрещать проигрывание другим, ну и тому подобное...