1

Тема: Как находить и расшифровывать ссылки (tivix.net)

В личке меня попросили научить расшифровывать ссылки.
Поэтому я решил написать целый пост о том, как же это всё делается и с помощью каких подручных инструментов.

Желательны хотя бы базовые познания в каком-либо языке программирования, чтобы понимать и не пугаться HTML и JavaScript кода.

Итак, рассмотрим несколько примеров.

tivix.net - пример поиска ссылок на IPTV каналы

Итак, нам могут понадобиться:

  1. Браузер - из последних версий InternetExplorer, FireFox, Chrome или Opera - кому что нравится
  2. Свободное время

Например, у нас есть сайт http://tivix.net/ и мы хотим узнать, откуда же этот сайт показывает нам каналы и как узнать ссылки на такое вещание?

Открываем сайт в браузере. Открываем страничку с конкретным каналом, например http://tivix.net/93-pyatyy-kanal-sankt-peterburg.html - 5 канал. На ней видим, что на странице имеется три вида источника: "HQ", "Торрент" и "Моб. №1". Тут ясно, что "Торрент" - это использование плагина AcePlayer и просмотр канала будет через торрент протокол по специальному ID для торрент-телевидения. А вот "HQ" - что-то не понятное. Давайте посмотрим, что и как там.

Нажимаем Ctrl-U - откроется исходник страницы сайта. Там мы прокручиваем и ищем код плеера. Находим примерно такой:

<object id="player33" type="application/x-shockwave-flash" data="/templates/Default/style/uppod.swf" width="799" height="450">
<param name="wmode" value="transparent" />
                <param name="bgcolor" value="#ffffff"/>
                <param name="allowFullScreen" value="true"/>
                <param name="allowScriptAccess" value="always"/>
                <param name="movie" value="/templates/Default/style/uppod.swf"/>
                <param name="flashvars" value=""/>
</object>

Но тут flashvars чистый и нет ссылки на поток, а где же она? Чуть ниже видим javascript код, на подобии этого:

<script>
              ;eval(function(w,i,s,e){var lIll=0;var ll1I=0;var Il
...
1r2l141','e97859af5e411a43e0b1930a181d6e83'));
</script>

Видно, что через функцию eval исполняется код, который запакован и в таком виде вообще не понятно что пока делает.
Ну ок. Будем расшифровывать. Чуть ниже я покажу как проще, без расшифровки этого кода, посмотреть ссылку на видео-поток. Но для начала посмотрим всё-таки, что же делает этот код и есть ли там подводные камни, модифицируется ли ссылка при каждом открытии или добавляется ли какой-либо параметр.
Для этого сначала просто внимательно смотрим на этот код, который находится между скобок функции eval.
Если текст функции или структура кода уж совсем непонятна, можно сделать так. Выделить нужный код и вставить, например, сюда и нажать кнопку "Beautify". Справа будет немного понятней структура кода и мы увидим, что есть небольшая функция, начинающаяся с { и кончающаяся на }, после чего идут значения передаваемых параметров в скобках для этой функции.
Давайте выполним этот участок кода и посмотрим, что нам это распакует.

Для этого нужно в браузере на странице канала зайти в инструменты разработчика (Chrome - нажать Ctrl+Chift+I, IE - F12, Firefox - Ctrl+Chift+K) и там перейти на вкладку Console, где мы сможем выполнять команды javascript на этой страничке сайта. Нужно скопировать участок кода, начинающийся с function(w,i,s,e){ и заканчивающийся return l1ll.join('');} - т.е. всю часть функции. Перейти в Console и набрать в ней: a = и дальше вставить скопированный текст, нажать Enter. Это присвоит переменной a значение - саму эту функцию, т.е. переменная a - это и будет сама функция.

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

a('1b1b0d0a1n2t3a2p30142u39322r382x3332143b182x1837182t153f2u333614371p1c1n371o3b1a302t322v382w1n37171p1e153f2x171p2b38362x322v1a2u3633311v2w2p361v332s2t14342p36372t213238143b1a37392q3738361437181e15181f1i15151n3h362t383936320w2x1n3h14131d2q1d2q1c2s1c2p1318131318131318131315151n1n2t3a2p30142u39322r382x3332143b182x1837182t153f2u333614371p1c1n371o3b1a302t322v382w1n37171p1e153f2x171p2b38362x322v1a2u3633311v2w2p361v332s2t14342p36372t213238143b1a37392q3738361437181e15181f1i15151n3h362t383936320w2x1n3h14131d2q1d2q1c2s1c2p1d321e381f2p1e341f1c1d1g1e391f1l1f1e1e361f1k1e3c1f1f1f1e1d1g1f2q1d1k1e3c1d1k1f1j1d1k1e381d1h1f2u1e391f1f1f1i1d1g1f1j1d341d2r1d321f1j1d331f2q1d2p1f1c1e381f1e1e3a1f1k1e3b1d321f1j1d1j1d341d2t1d1h1f2u1e3c1d1j1d341e2q1f1k1f1i1e3c1f1e1e3a1d2p1e391f1i1f1f1f1d1d3a1e3b1e341f1i1d3a1f1f1e371e381d1g1f1g1e341f1i1f1j1e381e1d1f1e1f1k1d1g1f2q1d2p1f1j1f1l1e351f1j1f1k1f1i1d1g1f1j1d1k1d2t1d1h1d1k1d2u1d2x1d1h1d1h1d321f2w1f1i1e381f1k1f1l1f1i1f1e1c3b1e3c1d321f2w1d1g1d1f1d2s1e351d2s1e351d2r1e371d2r1e341d1f1d1k1d1f1d1f1d1k1d1f1d1f1d1k1d1f1d1f1d1h1d1h1d321318131318131318131315151n','','','')

+ Выполнение функции с заданными параметрами
Выполняем это и смотрим ответ. А в ответ нам будет строка очередного кода, который будет выполнятся. И как мы можем увидеть, там опять будет пара eval с функциями eval(function(w,i,s,e) и длинными значениями зашифрованного текста как параметры для таких функций.
+ Результат выполнения кода в консоли

Где я синим прямоугольником выделил код, который нужно присвоить переменной a = и зелёным - ту часть, которую нужно вставлять при вызове функции.

Ну что, у нас времени много, мы им заранее запаслись, поэтому будем вытворять дальше такие трюки и с остальным полученным кодом. Поэтому просто повторяем процедуру сначала для одного eval, потом для другого. Т.е. копируем текст функции начиная с function(w,i,s,e) и заканчивая символом }, переходим в консоль, присваиваем переменной b скопированный код и потом копируем значения параметров со скобками и вызываем функцию b с этими скопированными значениями. Пока не увидим что-то наподобие вот этого:

+ Результат выполнения кода в консоли
Ура, наконец-то мы увидели полезный код в конце. Там мы видим, что проверяется имя домена, где выполняется текущий код и далее идёт присвоение flashvars нужных значений.

Вся эта мутотень была показана для того, чтобы продемонстрировать, что запакованные функции в HTML коде - это бутафория и терпеливому человеку не помеха.

На самом деле, вот эту вот ссылку можно и нужно смотреть на странице сразу немного по-другому. Открываете страницу с каналом в браузере и нажимаете чуть выше плеера правой кнопкой мыши и выбираете "Посмотреть код" (в IE - "Проверить элемент"). Внизу или сбоку откроется HTML срутрура страницы с уже выполненными javascript и модифицированным DOM (структурой HTML), где можно найти объект <object id="player33"

<object id="player33" type="application/x-shockwave-flash" data="/templates/Default/style/uppod.swf" width="799" height="450">
<param name="wmode" value="transparent">
                <param name="bgcolor" value="#ffffff">
                <param name="allowFullScreen" value="true">
                <param name="allowScriptAccess" value="always">
                <param name="movie" value="/templates/Default/style/uppod.swf">
                <param name="flashvars" value="m=video&amp;file=http://85.25.43.50:8081/pyatiy/pl.m3u8?wmsAuthSign=c2VydmVyX3RpbWU9Ny8xNi8yMDE2IDM6MzI6MjggUE0maGFzaF92YWx1ZT1OV0IzQkdjTmswdy95VUlhT3ZRNnFBPT0mdmFsaWRtaW51dGVzPTEyMA==&amp;st=%2Ftemplates%2FDefault%2Fstyle%2Fvideo189-1185.txt&amp;">
            </object>

где flashvars уже проставлены и видна ссылка на поток. В данном ресурсе эта ссылка на плейлист m3u8 не зашифрована и сама по себе вот такая:

http://85.25.43.50:8081/pyatiy/pl.m3u8?wmsAuthSign=c2VydmVyX3RpbWU9Ny8xNi8yMDE2IDM6MzI6MjggUE0maGFzaF92YWx1ZT1OV0IzQkdjTmswdy95VUlhT3ZRNnFBPT0mdmFsaWRtaW51dGVzPTEyMA==

Но эту ссылку мы получили "вручную", т.е. сидя за компом и руками. Но если нам нужно автоматом выдергивать актуальную ссылку куда-то ещё, например в подкаст или на страницу нашего сайта, то тут уже нужно это дело всё автоматизировать.

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

Для этого очень внимательно и долго смотрим на код дешифровки:

function(w, i, s, e) {
 var lIll = 0;
 var ll1I = 0;
 var Il1l = 0;
 var ll1l = [];
 var l1lI = [];
 while (true) {
  if (lIll < 5) l1lI.push(w.charAt(lIll));
  else if (lIll < w.length) ll1l.push(w.charAt(lIll));
  lIll++;
  if (ll1I < 5) l1lI.push(i.charAt(ll1I));
  else if (ll1I < i.length) ll1l.push(i.charAt(ll1I));
  ll1I++;
  if (Il1l < 5) l1lI.push(s.charAt(Il1l));
  else if (Il1l < s.length) ll1l.push(s.charAt(Il1l));
  Il1l++;
  if (w.length + i.length + s.length + e.length == ll1l.length + l1lI.length + e.length) break;
 }
 var lI1l = ll1l.join('');
 var I1lI = l1lI.join('');
 ll1I = 0;
 var l1ll = [];
 for (lIll = 0; lIll < ll1l.length; lIll += 2) {
  var ll11 = -1;
  if (I1lI.charCodeAt(ll1I) % 2) ll11 = 1;
  l1ll.push(String.fromCharCode(parseInt(lI1l.substr(lIll, 2), 36) - ll11));
  ll1I++;
  if (ll1I >= l1lI.length) ll1I = 0;
 }
 return l1ll.join('');
}

и пытаемся эту функцию переписать, например, на PHP. Например, у меня получился такой код PHP, где я через параметр ulr получаю адрес странички сайта канала, загружаю её и там получаем параметры для функции, которые выполняем, пока такая функция встречается в дешифрованном тексте.

+ PHP скрип поиска ссылки на поток с tivix.net

<?php

$url = isset($_REQUEST['url']) ? $_REQUEST['url'] : ''; // url странички канала сайта http://tivix.net


if (!$url) die('No url set');    // Если url канала не указан, выходим с сообщением об этом


$page = file_get_contents($url); // Загружаем страницу канала

// В цикле ищем javascript код функции eval(function(w,i,s,e) и получаем её параметры,
// выполняем дешифровку, пока такую функцию там встречаем
while (preg_match("#.*eval\(function\(w,i,s,e\).*?}\('(.*?)','(.*?)','(.*?)','(.*?)'#", $page, $m)) {

 $page = Decode($m[1], $m[2], $m[3], $m[4]);

}

// В дешифрованных данных ищем ссылку
if (preg_match("#(http://.*?)'#", $page, $m))
  echo $m[1];
else
  echo "Link not found :(";


//////////////////////////////////////////////////////////////////////////////
// Функция дешифровки javascript кода с сайта tivix.net
function Decode ($w, $i, $s, $e) {
 $lIll = 0;
 $ll1I = 0;
 $Il1l = 0;
 $ll1l = "";
 $l1lI = "";
 while (true) {
  if      ($lIll < 5         ) $l1lI .= substr($w, $lIll, 1);
  else if ($lIll < strlen($w)) $ll1l .= substr($w, $lIll, 1);
  $lIll++;
  if      ($ll1I < 5         ) $l1lI .= substr($i, $ll1I, 1);
  else if ($ll1I < strlen($i)) $ll1l .= substr($i, $ll1I, 1);
  $ll1I++;
  if      ($Il1l < 5         ) $l1lI .= substr($s, $Il1l, 1);
  else if ($Il1l < strlen($s)) $ll1l .= substr($s, $Il1l, 1);
  $Il1l++;
  if (strlen($w) + strlen($i) + strlen($s) + strlen($e) == strlen($ll1l) + strlen($l1lI) + strlen($e)) break;
 }
 $lI1l = $ll1l;
 $I1lI = $l1lI; 
 $ll1I = 0;
 $l1ll = "";
 for ($lIll = 0; $lIll < strlen($ll1l); $lIll += 2) {
  $ll11 = -1;
  if (ord(substr($I1lI, $ll1I, 1)) % 2) $ll11 = 1;
  $l1ll .= chr(intval(substr($lI1l, $lIll, 2), 36) - $ll11);
  $ll1I++;
  if ($ll1I >= strlen($l1lI)) $ll1I = 0;
 }
 return $l1ll;
}

Пример такого скрипта можно проверить вот здесь http://lostcut.net/tivix.php?url=http://tivix.net/326-mult.html

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

Sony Bravia KDL-32CX523
Спасибо сказали: lidars, Sergey27, kliopa100, baat4

2

Re: Как находить и расшифровывать ссылки (tivix.net)

Можете задавать мне вопросы или просить примеры расшифровок ссылок с интересующих сайтов.

Sony Bravia KDL-32CX523

3

Re: Как находить и расшифровывать ссылки (tivix.net)

Да ... отличная статья спасибо.... только столкнулся с проблемой ... идет привязка к ip .. и нужно переписать скрипт на js . подскажите как подтянуть страницу. или аналог функции file_get_contents на js.. сам js знаю не очень хорошо... спасибо..)))

4

Re: Как находить и расшифровывать ссылки (tivix.net)

vusebavofi, с JS, выполняющимся в браузере - много проблем. Все браузеры поддерживают стандарты HTTP и его защиты - такие как Cross Origin Resource.
Сервера сайтов добавляют в свои заголовки ответов специальные Access-Control-Allow-Origin с указанием откуда могут быть запросы, а также добавляют CSRF-токены с их проверкой как раз для того, чтобы браузеры не могли получить "чужой" контент.

Так что, даже имея функцию загрузки страницы:

function loadXMLDoc(theURL)
    {
        xmlhttp=new XMLHttpRequest();
        xmlhttp.onreadystatechange=function()
        {
            if (xmlhttp.readyState==4 && xmlhttp.status==200)
            {
                alert(xmlhttp.responseText);
            }
        }
        xmlhttp.open("GET", theURL, false);
        xmlhttp.send();
    }

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

Sony Bravia KDL-32CX523

5 (2016.08.11 21:37:01 отредактировано vusebavofi)

Re: Как находить и расшифровывать ссылки (tivix.net)

WendyH пишет:

vusebavofi, с JS, выполняющимся в браузере - много проблем. Все браузеры поддерживают стандарты HTTP и его защиты - такие как Cross Origin Resource.
Сервера сайтов добавляют в свои заголовки ответов специальные Access-Control-Allow-Origin с указанием откуда могут быть запросы, а также добавляют CSRF-токены с их проверкой как раз для того, чтобы браузеры не могли получить "чужой" контент.

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

Да проблема / работать с текстом страницы вообще не получается ... ничего не передается ... кажется ничего не получится.. что то я точно делаю не так http://prntscr.com/c4io57  .. Нужно думать в другом направлении .. да нужно чтобы ссылка запуск в браузере для просмотра

6

Re: Как находить и расшифровывать ссылки (tivix.net)

в браузере Chrome, Access-Control-Allow-Origin можно отключить плугином >>>[Allow-Control-Allow-Origin:].

одно но... там на линки есть token= или wmsAuthSign= , значит скрипт надо запускать на той машине где будем смотреть трансляцию, иначе я так понял никак.
т.е линк от

, у тебя в vlc работать не будет.

7

Re: Как находить и расшифровывать ссылки (tivix.net)

kliopa100, да. Всё верно. Генерация токена на стороне сервера tivix привязана к IP. Вкупе с тем, что этот ресурс заблокирован в России, то вообще облом.

Sony Bravia KDL-32CX523
Спасибо сказали: kliopa1001

8

Re: Как находить и расшифровывать ссылки (tivix.net)

А можно пример как расшифровать ссылки с http://putlockers.ch/watch-training-day … ocker.html ?
На выходе там прямые ссылки на mp4. Но вот что-то функция расшифровки там не очень явная...

video{ LG&Samsung<-(lan)->HMS<-(vpn)->Neutron s8&note8 }audio

9

Re: Как находить и расшифровывать ссылки (tivix.net)

slim8020 пишет:

Но вот что-то функция расшифровки там не очень явная...

не оно?

+ открыть спойлер

http://rgho.st/6BqFfSFWH/image.png
http://rgho.st/6hrkMKYRz/image.png

Спасибо сказали: slim80201

10

Re: Как находить и расшифровывать ссылки (tivix.net)

slim8020 пишет:

А можно пример как расшифровать ссылки с http://putlockers.ch/watch-training-day … ocker.html ?
На выходе там прямые ссылки на mp4. Но вот что-то функция расшифровки там не очень явная...

Или я туплю, или там просто iframe на http://thevideos.tv/embed-zpditd1qpyhq-728x410.html, где ссылки на видео вообще открытым текстом лежат в виде:

 jwplayer("vplayer").setup({
    sources: [{file:"http://89.46.103.139/kj2vza3wfm6vtaw52a6j426hhneszh7fg3i7qx2f72euuew2uxtzweddz35a/v.mp4",label:"240p"},{file:"http://89.46.103.139/kj2vza3wfm6vtaw52a6j426hhneszh7fg3i7qx2f7twuuew2uxtqmpghklka/v.mp4",label:"360p"},{file:"http://89.46.103.139/kj2vza3wfm6vtaw52a6j426hhneszh7fg3i7qx2f7ixeuew2uxtrdjvtz4oq/v.mp4",label:"720p"}],
    image: "http://89.46.103.139/i/01/00110/4qd72ptph6oj.jpg",
Sony Bravia KDL-32CX523
Спасибо сказали: slim80201

11

Re: Как находить и расшифровывать ссылки (tivix.net)

baat пишет:

не оно?

+ открыть спойлер

http://rgho.st/6BqFfSFWH/image.png
http://rgho.st/6hrkMKYRz/image.png

Оно, спасибо, baat! А я почему-то упорно другие скрипты ковырял.

WendyH, так и есть, ссылки открытым текстом, только iframe был зашифрован.

video{ LG&Samsung<-(lan)->HMS<-(vpn)->Neutron s8&note8 }audio

12

Re: Как находить и расшифровывать ссылки (tivix.net)

Я скопировал функцию расшифровки в .js файл и дописал пару строк, чтоб скрипт выдавал расшифрованные данные в реестр. Подкаст запускает скрипт с аргументом - зашмфрованными данными, ждёт секунду, читает реестр с расшифрованными данными.
Вопрос: как проще(быстрее) наладить обмен между подкастом и скриптом?

video{ LG&Samsung<-(lan)->HMS<-(vpn)->Neutron s8&note8 }audio

13

Re: Как находить и расшифровывать ссылки (tivix.net)

slim8020 пишет:

Вопрос: как проще(быстрее) наладить обмен между подкастом и скриптом?

Можно выполнить Javascript в самом подкасте. Вот функция на C++Script:

///////////////////////////////////////////////////////////////////////////////
// Javascript Eval
string jsEval(string sData) {
  Variant objScript; string sResult = '';
  
  try { objScript = CreateOleObject('MSScriptControl.ScriptControl'); } except { };
  if (VarType(objScript) != varDispatch) { 
    HmsLogMessage(2, 'Не могу создать ActiveXObject MSScriptControl.ScriptControl'); 
    return ''; 
  }
  objScript.Language = 'JavaScript';
  try { sResult = objScript.Eval(sData); } except { };
  return sResult;
}
Sony Bravia KDL-32CX523
Спасибо сказали: slim80201

14

Re: Как находить и расшифровывать ссылки (tivix.net)

slim8020 пишет:

WendyH, openload.co не смотрел. Я пытался скриптом запустить ie, c отключенными картинками, и с добавленным в надёжные узлы fmovies.se, чтоб после загрузки сразу вытащить ссылку на видео... пока не вышло

Подобным образом видел в плагинах для xbmc (kodi) использование phantomjs. Но для HMS это недостижимо (его использование), как я понял.

Sony Bravia KDL-32CX523

15

Re: Как находить и расшифровывать ссылки (tivix.net)

Всем привет, давно искал нечто такое, но нигде ответа так и не находил.
Кому нибудь удалось написать скрипт на php и сделать на канал ссылку на подобии http://sitename.ru/ntv.php ?
Чтоб при копировании в VLC оно воспроизводилось.

16

Re: Как находить и расшифровывать ссылки (tivix.net)

Dee_Jay пишет:

Всем привет, давно искал нечто такое, но нигде ответа так и не находил.
Кому нибудь удалось написать скрипт на php и сделать на канал ссылку на подобии http://sitename.ru/ntv.php ?
Чтоб при копировании в VLC оно воспроизводилось.

На какой канал? С какого ресурса хотите получить ссылки?

Sony Bravia KDL-32CX523

17

Re: Как находить и расшифровывать ссылки (tivix.net)

Спасибо что откликнулись.
Написал вам в личку, жду ответа.

18 (2018.01.20 16:40:07 отредактировано matkin)

Re: Как находить и расшифровывать ссылки (tivix.net)

Всем доброго дня !
Есть такой украинский сайт - _https://1plus1.video/ru/
На этом сайте можно смотреть другие проекты сайта 1+1, такие как ТЕТ, 2+2 и т.д.
Один из пректов (ТЕТ) нахожу по ссылке - _https://1plus1.video/ru/tvguide/embed/3
Но в коде сайта не видно ссылок на видео. Есть только один JavaScript с каким-то кодом для плеера.
Что это за код? Или это skin, или это зашифрованные ссылки на плейлист?
Через Firefox могу получить ссылку на плейлист.

_https://stream2g01-g50.ovva.tv/233342/smil:233342.smil/playlist.m3u8

Но через некоторое время ссылка на сервер изменяется.
Помогите разобраться

С уважением,
matkin

19 (2018.01.20 19:24:30 отредактировано tantal)

Re: Как находить и расшифровывать ссылки (tivix.net)

matkin пишет:

Что это за код?

Base64

20 (2018.01.20 20:29:27 отредактировано aleks123)

Re: Как находить и расшифровывать ссылки (tivix.net)

Там вроде изменяется только с какого адреса отдаётся поток (пока увидел их только 3)
И сслыки почему-то запускаются в VLC 4.0.0 , а в VLC 2.2.8 нет. И бывает, что некоторые передачи в России недоступны.

+ открыть спойлер
#EXTINF:-1,1+1 (1)
https://stream2g01-g50.ovva.tv/189931/smil:189931.smil/chunklist_b1696000.m3u8
#EXTINF:-1,1+1 (2)
https://stream2g03-f23.ovva.tv/189931/smil:189931.smil/chunklist_b1696000.m3u8
#EXTINF:-1,1+1 (3)
https://stream2g04-f23.ovva.tv/189931/smil:189931.smil/chunklist_b1696000.m3u8
#EXTINF:-1,1+1 International (1)
https://stream2g01-g50.ovva.tv/227022/smil:227022.smil/chunklist_b2596000.m3u8
#EXTINF:-1,1+1 International (2)
https://stream2g03-f23.ovva.tv/227022/smil:227022.smil/chunklist_b2596000.m3u8
#EXTINF:-1,1+1 International (3)
https://stream2g04-f23.ovva.tv/227022/smil:227022.smil/chunklist_b2596000.m3u8
#EXTINF:-1,ТЕТ (1)
https://stream2g01-g50.ovva.tv/233342/smil:233342.smil/chunklist_b2596000.m3u8
#EXTINF:-1,ТЕТ (2)
https://stream2g03-f23.ovva.tv/233342/smil:233342.smil/chunklist_b2596000.m3u8
#EXTINF:-1,ТЕТ (3)
https://stream2g04-f23.ovva.tv/233342/smil:233342.smil/chunklist_b2596000.m3u8

21 (2018.01.21 10:51:59 отредактировано matkin)

Re: Как находить и расшифровывать ссылки (tivix.net)

Уважаемые tantal и aleks123 !
Я пытался раскодировать Base64

data_encoded = base64.b64encode(data)
data = data_encoded.decode("utf-8")

Но результат очень плачевный. Ткните меня носом, что я делаю не так.

А вот вариант

data = base64.standard_b64decode(data)

дал отличные результаты.

СПАСИБА ВАМ БАЛЬШОЕ !

С уважением,
matkin

22

Re: Как находить и расшифровывать ссылки (tivix.net)

доброй ночи может кто подскажет как такое же проделывать для сайта http://pokazz точка net так как для сайта который был описан это уже не актуально. большое спасибо

23

Re: Как находить и расшифровывать ссылки (tivix.net)

stream3k пишет:

для сайта http://pokazz точка net

там прямые ссылки прямо в коде станицы

24

Re: Как находить и расшифровывать ссылки (tivix.net)

ссылки то может и прямые но я хочу что бы мне помогли наваять скриптик который будет выдергивать эти ссылки в единый m3u файл с определенной периодичностью так как у ссылки меняется wmsAuthSign с определенной периодичностью а ручками каждый раз это все делать не охота

25 (2018.01.29 21:12:01 отредактировано tantal)

Re: Как находить и расшифровывать ссылки (tivix.net)

stream3k пишет:

наваять скриптик

а зачем, для чего?

26

Re: Как находить и расшифровывать ссылки (tivix.net)

для того что бы получать файл с расширением m3u ссылку на который я закину в телефизор и будет у меня iptv

вот что то на подобии такого скрипта написал для начала что бы выдергивать ключ
<?php
$streamSite = "http://pokazz.net/11-sts.html";


$input = @file_get_contents($streamSite) or die("Please try again later: $url");
preg_match("/(http.*?wmsAuthSign\=[^\&\">]+)/", $input, $matches);

$wmsAuthSignKv = parse_url($matches[1], PHP_URL_QUERY);
$wmsAuthSign = explode('=', $wmsAuthSignKv);
echo $wmsAuthSign[1] . "<br>";

$m3u8 = parse_url($matches[1], PHP_URL_PATH);
echo basename($m3u8) . "<br>";

?>

ключ выдергивает но как не странно он не такой как на сайте
на сайте он вот такой

index.m3u8?wmsAuthSign=1517266760Sf30408f33604c80b498d72fb0f066245S701h31h76h671

а то что я выдергиваю имеет вот такой вид
1517271997S2cc0abb3f30cf06ab8792eca85b59f5dS541h66h97h5index.m3u8


как видите
1517266760Sf30408f33604c80b498d72fb0f066245S701h31h76h671

1517271997S2cc0abb3f30cf06ab8792eca85b59f5dS541h66h97h5
ключ который у меня получчается выдернуть во первых не такой во вторых он меньше на пару символов вот ищу единомышлеников для помощи

27

Re: Как находить и расшифровывать ссылки (tivix.net)

stream3k пишет:

первых не такой

ключ генерируется каждый раз при заходе на страницу

url у меня находит так "http[^'\"<>]+%.m3u8%?[^<>'\"]+"

28

Re: Как находить и расшифровывать ссылки (tivix.net)

скинь как будет выглядеть твой скрипт который будет грабить ссылку а то чет я не очень понял

29

Re: Как находить и расшифровывать ссылки (tivix.net)

пробую вот так но ничего у меня не находит отображает пустую страничку

<?php
$streamSite = "http://pokazz.net/11-sts.html";

$input = @file_get_contents($streamSite) or die("Please try again later: $url");
preg_match("http[^'\"<>]+%.m3u8%?[^<>'\"]+", $input, $matches);

$wmsAuthSignKv = parse_url($matches[1], PHP_URL_QUERY);
$wmsAuthSign = explode('=', $wmsAuthSignKv);
echo $wmsAuthSign[1] . "<br>";

$m3u8 = parse_url($matches[1], PHP_URL_PATH);
echo basename($m3u8) . "<br>";

?>

30

Re: Как находить и расшифровывать ссылки (tivix.net)

есть скрипт для vlc  на форуме, как парсить на пхп не вкурсе