Помощь в создании подкастов

Интернет-телевидение, интернет-радио, подкасты, IPTV
VVS1234
Posts: 44
Joined: Sat Oct 13, 2012 10:41 pm

Re: Помощь в создании подкастов

Post by VVS1234 »

Подскажите, пожалуйста, есть ли возможность вычислить значение javascript кода типа:

Code: Select all

<script type="text/javascript">eval(function(p,a,c,k,e,d){e=function(c){return c};if(!''.replace(/^/,String)){while(c--){d[c]=k[c]||c}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('2 8=0;2 31=37;12 21(){6(8>1){20}2 14=18.34.14;6(-1!=14.29("35")){2 10=14.15("=")[1];2 17=10;2 11=0;6(-1!=10.29("48")){2 13=10.15("32");17=13[0]+"32"+13[1];11=13[3]}2 7=47[17];6(7!==46){$(18).43($("#44").45().51);6(31>16){2 28=42.38(7/16);7=7%16;6(0==8){8+=1;19("4","27"+28);21();20}}8+=1;19("4","27"+7);6(0!=11){12 26(){19("4","50:"+(11*60))}41(26,33)}}}}12 36(){2 23=40("4","39[49]").15("/")[5];2 25="77";$.52("/78.76",{"75":23,"72":25},12(){})}2 30={"73":"80","24":"/79/24.82.85","83":"86","81":"4"};2 22={84:"18",74:"70",71:"58",59:"4"};57 56.53("54://55.61/62/68.69?67=66","4","63","64","9.0.0",65,30,22);',10,87,'||var||videoplayer719||if|number|rewindInit||mark|min|function|arMark|hash|split|100|ser|window|uppodSend|return|rewindingByHash|params|fileName|st|idSeason|seekMin|start|page|indexOf|goodxD|arNumberCount|_|1000|location|rewind|userHistoryLog|157|ceil|get|uppodGet|setTimeout|Math|scrollTop|vpcenter|offset|undefined|arNumberOf|minute|file|seek|top|post|embedSWF|http|datalock|swfobject|new|always|id||ru|be7a3e5be0d2bf8e575d567e87dc95101|724|593|false|135149521|microstime|player|swf|true|allowScriptAccess|id_season|m|allowFullScreen|file_name|php|5051|userHistory|uppod|video|uid|vast|pl|wmode|txt|pMXbZBgbm9xeYjEM3IZ63cEG3dijVQ26VQVjVIg7ZdNRVJihVcVh3GEnVdAe3SybfBVupvhUsAFF'.split('|'),0,{}))
</script>
изнутри скрипта?
Очень помогло бы в борьбе с seasonvar.
VVS1234
Posts: 44
Joined: Sat Oct 13, 2012 10:41 pm

Re: Помощь в создании подкастов

Post by VVS1234 »

WendyH wrote:Если вы встретили на сайте флеш плеер uppod.swf
WendyH.
Задачка уже мне не по зубам.
Есть ресурс: http://seasonvar.ru/ .

Основан на uppod плеере, но при этом кодированная ссылка на плейлист скрыта за яваскриптом. Это я все одолел и isko помог привести к текущему парсингу:
http://www.homemediaserver.ru/forum/vie ... =15&t=2599

Однако (!):
полученная ссылка на видео содержит изменяемую часть типа 5f170602a314c7d07cc49da5b5da6ca3/7f, где строка до флэш зависит от IP, а после слэш -- от файла видео. При этом скрипт сайта удаляет символы из ссылки, так что ее надо корректировать добавлением соответсвующего символа, например
5f170602a314c7d07cc49da5b5da6ca/7f (нужно вставить 3 до слэш) или
5f170602a314c7d07cc49da5b5da6ca3/f (нужно вставить 7 после слэш).

Может посмотрите, есть ли возможность алгоритмизировать изменение символа?
WendyH
Posts: 393
Joined: Fri Apr 13, 2012 7:59 pm

Re: Помощь в создании подкастов

Post by WendyH »

VVS1234 wrote:WendyH.
Задачка уже мне не по зубам.
Есть ресурс: http://seasonvar.ru/ .
...
Может посмотрите, есть ли возможность алгоритмизировать изменение символа?
Я так понимаю, уже не актуально?

Я тут, образно говоря, запёрся в творческой мастерской, и не отвлекался ни на что, не общался на форумах и тратил свои крохи оставшегося времени на реализацию идей в hdkinoteatr.ru.. Так вот. Проверяю я как-то подкаст, и натыкаюсь на фильм "С новым годом, мамы!", который показал фигу (так никто и не посмотрел у меня этот фильм, ибо пока я разбирался - его выпилили из общего доступа). И узрел я iframe на стороний ресурс - myhit.ge. И всё завертелось.
Короче, это мой очередной пост "Что делать если вы свтретили такой флеш плеер, который вешает программу декомпиляции или просто не содержит "как бе" скриптов".
А вот и да. При декомпиляции файла http://myhit.ge/gs_player/gsplayer001.swf прогой "Flash Decompiler Trillix" - скриптов - 0. Sothink SWF Decompiler - зависал наглухо. И меня затерзали смутные сомнения.
В общем итоге и сухом остатке, помогли мне две программы:
1. RABCDAsm
2. SWF Decrypt
2-я сняла защиту (которая, как оказывается, была именно такой, которая умеет эта прога снимать)
1-я просто умеет всё. Двумя командами распаковываем и вытаскиваем весь код, который запрятан в темные уголки плеера. Однако дизасемблирует RABCDAsm в такой асемблер в исходниках, что я бы ещё месяц ковырялся, разберая там функцию декодирования. Но помог SWF Decrypt, после которого скрипты практически нормальным способом можно достать.
И ещё вот эта статья будет полезна начинающим исследователям тайн флеш-мироздания.
Так что как ни защищай - от маньяков реверса ничего не спасёт.
Вот для кучи на паскале пример с функцией получения ссылки myhit.ge:
[+] Код

Code: Select all

var
  gsHeaders: string;

// ----------------------------------------------------------------------------
// Расшифровка данных myhit.ge (allinspace.com)
function DecrunchMyHitGeCode(sData : String) : String;
Const
  sKey1 = "76P5NC75";
  sKey2 = "hdF6icSAV1gK5QPNuqLwIko9ftXlGzDjsa2EYvn0W4bZry7RT3pO8eHxmJUBCM";
var
  i, nIndx, nCharCode, n: Integer;
  sCh1, sCh2, sPart1, sPart2, sChars, sArrayPositions, sResult: String;
begin
  Result := ''; n := 1;
  sPart1 := LeftCopy(sData, Length(sKey1));
  sPart2 := Copy(sData, Length(sKey1)+1, Length(sData));

  for i:=1 to Length(sPart1) do sArrayPositions := sArrayPositions + IntToStr(Pos(sPart1[i], sKey2))+"|";
  i := 1; while i<Length(sPart2) do begin
    nCharCode := (Pos(sPart2[i], sKey2)-1) * Length(sKey2) + (Pos(sPart2[i+1], sKey2)-1);
    nIndx     := StrToInt(ExtractWord(n, sArrayPositions, "|"));
    nCharCode := nCharCode - Ord(sKey1[nIndx]);
    n := n + 1; if n > Length(sKey1) then n := 1;
    Result := Result + Chr(nCharCode);
    i := i + 2;
  end
end;

// ----------------------------------------------------------------------------
// Функция получения ссылки на видео сайта myhit.ge (allinspace.com)
function GetLink_MyHitGe(sLink: String): String;
var
  sHtml, sVideoId, sHeaders: String;
begin
  sHeaders:=         'http://myhit.ge/'+#10#13;
  sHeaders:=sHeaders+'Accept-Encoding: gzip, deflate'+#10#13;
  sHeaders:=sHeaders+'User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:13.0) Gecko/20100101 Firefox/13.0'+#10#13;
  sHeaders:=sHeaders+'Connection: Keep-Alive'+#10#13;
  sHeaders:=sHeaders+'Accept: application/json, text/javascript, */*; q=0.01'+#10#13;
  sHeaders:=sHeaders+'Accept-Language: ru-RU,ru;q=0.9,en;q=0.8'+#10#13;

  sHtml := LoadUrl(sLink, 'GET', sHeaders);

  if        HmsRegExMatch('flashvars="(vid=\d+.*?)"', sHtml, sVideoId) then begin
    sLink := sVideoId+'&rnd='+FloatToStr(Random);
  end else if HmsRegExMatch('GetPlayer\((\d+)', sHtml, sVideoId) then begin
    sLink := 'vid='+sVideoId+'&vid_quality=1&run_domain=&rnd='+FloatToStr(Random);
  end else if HmsRegExMatch('StartSeries\((\d+)', sHtml, sVideoId) then begin
    sLink := 'vid='+sVideoId+'&vid_quality=1&run_domain=&jsf_name=StartSeries&rnd='+FloatToStr(Random);
  end else begin
    MediaResourceLink := '';
    HmsLogMessage(2, mpTitle+': Неудалось найти код видео по ссылке.');
    Exit;
  end;
  sHtml := LoadUrl('http://myhit.ge/get_movie_params1.php?'+sLink);
  if HmsRegExMatch('<path>(.*?)</path>', sHtml, sLink) then begin
    MediaResourceLink := DecrunchMyHitGeCode(sLink);
    if LeftCopy(MediaResourceLink, 5) <> 'http:' then begin
      MediaResourceLink := '';
      HmsLogMessage(2, mpTitle+': невозможно расшифровать ссылку на видео. :/');
    end;
  end else begin
    MediaResourceLink := '';
    HmsLogMessage(2, mpTitle+': Неудалось найти ссылку на видео в ответе сервера.');
  end;
end;

// ----------------------------------------------------------------------------
// Загрузка страницы по ссылке
function LoadUrl(sLink: String; sMethod: String='GET'; sHeaders: String=''): String;
var
  sHtml, sUrlServer, sRequestPage, sPostData, sAnswHeaders: String;
begin
  if not HmsRegExMatch('^http://(.*)', sLink, sUrlServer) then Exit;
  HmsRegExMatch2('^(.*?)(/.*)', sUrlServer, sUrlServer, sRequestPage);
  if sMethod  = 'POST' then HmsRegExMatch2('^(.*?)\?(.*)', sRequestPage, sRequestPage, sPostData);
  if sHeaders = ''     then sHeaders := gsHeaders;
  sHtml := HmsSendRequestEx(sUrlServer, sRequestPage, sMethod, 'application/x-www-form-urlencoded; Charset=UTF-8', sHeaders, sPostData, 80, 0, sAnswHeaders, true);
  sHtml := HmsRemoveLineBreaks(HmsUtf8Decode(sHtml));
  Result:= sHtml;
end;

// ----------------------------------------------------------------------------
// Main program
begin
  mpFilePath := 'http://myhit.ge/index.php?FID=1&id=15111';
  GetLink_MyHitGe(mpFilePath);
  HmsLogMessage(1, MediaResourceLink);
end.
SONY KDL-32CX520
WendyH
Posts: 393
Joined: Fri Apr 13, 2012 7:59 pm

Re: Помощь в создании подкастов

Post by WendyH »

Transcoder wrote:Буду признателен за любую помощь в создании профилей для RSS-подкастов:
http://postnauka.ru/feed
http://echo.msk.ru/videos/rss.xml
от отсылок к RTFM :roll: до готовых к употреблению профилей :lol:

Заранее спасибо :-)
Профили транскодирования нужны для того, чтобы преобразовать один формат поступающего медиа-потока, в тот, который понимает устройство воиспроизведения (телевизор, плеер). Но изначальный поток (или видео файл) нужно сначала заполучить.
Скорее всего, вас интересует создание самих подкастов и их скриптов?
Для получение списка ссылок RSS на видео в HMS сделано всё. Достаточно просто в добавленный вами подкаст вставить ссылку на RSS и выставить режим чтения списка ресурсов в значение "Стандартный (RSS)".
После обновления такого подкаста у вас появится список ссылок.
Это какбы хорошо всё, но самое интересное начинается дальше.

Дело в том, что даже в вашем примере http://postnauka.ru/feed выдаёт ссылки просто на новости (новые статьи), и при том это далеко не всегда с видео информацией, а просто страничка с текстом. На самом деле просто сайты (не специализированные на раздачу видео по RSS, как гугл) вообще почти никогда не отдают ссылки на видео. Они отдают в своей ленте RSS ссылки на страницы своего сайта, чтобы люди туда заходили и читали и смотрели.

Посмотрел, в первом случае там на страницах (только с тегом TV или Видео) есть видеоролики с Vimeo. Причем на самом ресурсе Vimeo.com эти ролики недоступны, т.е. не опубликованы каналом-автором.
Во втором случае - вообще свой флеш плеер, который играет rtmp поток. Вроде.

Короче говоря. Существует миллион форматов и стандартов видеопотока, его хранения, передачи, воспроизведения и, о да, защиты от просмотра не на их сайте. Каждый сайт волен делать так, как ему захочится, да и ещё и выдумает что-нибудь своё.
Поэтому нельзя просто так взять... и получить поток, ссылку на видео файл, если хозяев ресурса душит жаба и они не хотят чтобы он воспроизводился где-либо ещё, скачивался и проч.
Точнее каждый случай рассматривается отдельно. Иногда это не трудно и достаточно просто вырезать программно из загружаемой страницы ссылку на видео файл. А иногда приходится тратить неделю, чтобы понять как там всё устроено (как с myhit.ge выше).
Этим и заничается скрипт получения ссылки на медиаресурс.
Программа HMS испольует fastscript, поэтому можно использовать синтаксис языка C++, Pascal Script и проч для написания скриптов обработки и получения ссылок на настоящие видео файлы или потоки. В скриптах можно использовать как и встроенные классы и функции fastscript, так и классы и функции самого HMS.
Список доступных классов, функций и проч находится справа редактора скриптов (внизу включаются галочки - какие показывать доступные "классы", "переменные" или "функции").
Написание скриптов - это обычное прогрммирование, причём заниматься приходится, в основном, парсингом сайта и написанием регулярок.

Поэтому и нету точной инструкции как сделать подкаст.
Однако есть люди, готовые помочь и объяснить немного.

И да, спасибо за ссылку http://postnauka.ru! Я как раз коллекционирую ссылки на образовательные и научные ресурсы. И потом доделаю подкаст, где будет отдельно собраны все подобные ресурсы.
SONY KDL-32CX520
VVS1234
Posts: 44
Joined: Sat Oct 13, 2012 10:41 pm

Re: Помощь в создании подкастов

Post by VVS1234 »

WendyH wrote:
VVS1234 wrote:WendyH.
Задачка уже мне не по зубам.
Есть ресурс: http://seasonvar.ru/ .
...
Может посмотрите, есть ли возможность алгоритмизировать изменение символа?
Я так понимаю, уже не актуально?
Конечно, актуально. Более того -- судя по гибкости удаления символа, процедура защиты достаточно проста (и реализуется через плеер, возможно через st-файл). Эдак любой uppodовец защит понавешает! :)
PavelN65
Posts: 67
Joined: Wed Feb 15, 2012 11:23 am

Re: Помощь в создании подкастов

Post by PavelN65 »

Доброго времени суток!
На сайте FS.UA произошли изменения, и теперь без регистрации не отдает список файлов.
На сайте для регистрации, я так понимаю используется этот код:

Code: Select all

    Скрытый блок авторизации/регистрации
-->
<div style="display:none">
    <div id="b-auth-popup" class="b-auth b-auth-popup">
    <a href="#" class="link-popup selected">Авторизация</a>
        <a href="#" class="link-popup ">Регистрация</a>
        
        <div class="popup-toggle" >
            <div class="b-login">
    <form method="post" action="/login.aspx" class="form-login">
        <div class="form-login-inner">
            <input class="loginEmail field" type="text" value="" name="login"/>
            <div class="b-password">
                <input class="loginPasswd field" type="password" value="" name="passwd"/>
                <a href="/restorpass.aspx" class="link-forgot-passwd">Забыли пароль?</a>
            </div>
            <div class="form-login-inner-inner">
                <label class="loginRememberMe"><input class="loginRememberMe" name="remember" type="checkbox" checked="checked"/>Запомнить меня</label>
                <span class="b-button m-gray-square">
                    <input type="submit" class="sliding" value="Войти"/>
                </span>
            </div>
        </div>
    </form>
</div>
Может как-то можно через HmsSendRequest() или другими средствами логиниться из программы.
Буду очень благодарен за хоть какую то подсказку!
Samsung UE32D5500RW, Assistant AP-110, Fly IQ4404 Spark
WendyH
Posts: 393
Joined: Fri Apr 13, 2012 7:59 pm

Re: Помощь в создании подкастов

Post by WendyH »

VVS1234 wrote:
WendyH wrote:
VVS1234 wrote:WendyH.
Задачка уже мне не по зубам.
Есть ресурс: http://seasonvar.ru/ .
...
Может посмотрите, есть ли возможность алгоритмизировать изменение символа?
Я так понимаю, уже не актуально?
Конечно, актуально. Более того -- судя по гибкости удаления символа, процедура защиты достаточно проста (и реализуется через плеер, возможно через st-файл). Эдак любой uppodовец защит понавешает! :)
Вот знаете чем меня заинтересовать! Буду смотреть что там. Люблю загадки.
SONY KDL-32CX520
WendyH
Posts: 393
Joined: Fri Apr 13, 2012 7:59 pm

Re: Помощь в создании подкастов

Post by WendyH »

PavelN65 wrote: Может как-то можно через HmsSendRequest() или другими средствами логиниться из программы.
Буду очень благодарен за хоть какую то подсказку!
Не проверял на fs.ua но:
1) В настройках подкаста - вкладка "Подключение" и включить "Авторизация пользователя", ввести имя-пароль не проходит?
2) Можно программно установить значения, есть функция такая
HmsSetHttpConnectionParams(const aAuthenticationUserName: string = ''; const aAuthenticationPassword: string = ''; const aProxyServerAddress: string = ''; const aProxyServerPort: string = ''; const aProxyServerUserName: string = ''; const aProxyServerPass
3)
sAnswHeaders := '';
sHtml := HmsSendRequestEx('fs.ua', '/login.aspx', 'POST', 'application/x-www-form-urlencoded; Charset=UTF-8', 'http://fs.ua/', 'login=ВАСЯ&passwd=ПАРОЛЬ', 80, 0, sAnswHeaders, true);
и посмотреть что в sAnswHeaders для кучи, и в sHtml, прошли авторизацию или ругается на что. А то иногда ругается, типа вы не с нашего сайта пытаетесь зайти и проч.
SONY KDL-32CX520
PavelN65
Posts: 67
Joined: Wed Feb 15, 2012 11:23 am

Re: Помощь в создании подкастов

Post by PavelN65 »

Большое спасибо WendyH!
Способ №3 подошел в самый раз, вот такой блочок получился:

Code: Select all

  mail:= HmsHttpEncode( HmsUtf8Encode(mpPodcastAuthorizationUserName));  //Логин
  pass:= HmsHttpEncode( HmsUtf8Encode(mpPodcastAuthorizationPassword));  //Пароль
  sAnswHeaders := '';
  sWebPage3 := HmsSendRequestEx('fs.ua', '/login.aspx', 'POST', 'application/x-www-form-urlencoded; Charset=UTF-8',  mpFilePath, 'remember=on&login='+mail+'&passwd='+pass,80, 1, sAnswHeaders, true); 
Логин и пароль берутся из вкладка "Подключение" / "Авторизация пользователя".
Samsung UE32D5500RW, Assistant AP-110, Fly IQ4404 Spark
linkey
Posts: 110
Joined: Mon Oct 10, 2011 5:45 pm

Re: Помощь в создании подкастов

Post by linkey »

Помогите пожалуйста пройти авторизацию на lostfilm.tv
samsung UE32D5000
Post Reply