download.bg
 Вход Списание  Новини  Програми  Статии  Форум  Чат   Абонамент  Топ95   Архив 

Взимане на HTML кодa на Vbox7-страница???

Автор
Съобщение
phrozencrew
Вто, 27.12.11, 18:32
Здравейте,

Бих искал да взимам автоматино разни елементи от сорс кода на някои клипчета в Vbox7 и да ги показвам в друг сайт. Като например гласуването, коментарите и т.н. Пробвах с cURL през php, но не успявам да заобиколя изискването да имам включен JavaScript. А пък няма начин да емулирам JavaScript с cUrl или PHP.
Ако ви хрумне някой хитър код или идея как да заобиколя това изискване, ще се радвам да споределите!
Предварително благодаря!

programings
Вто, 27.12.11, 19:06
Ето как изглежда заявката за взимане на коментари, която се подава към сървъра при зареждане на даден клип :
http://vbox7.com/ngmehadynamic/etc/aj_comment_get_json_v1.php?mdkey=b0cb8bb96a&page=1&cfilter=1&v=3 
 

Където mdkey е ключа на клипа, който стои след play в съответният линк!

Естествено това ги връща в текстов вариант с най-различни допълнителни атрибути :
[{"t":"cm","d":{"cid":"92416105","comment":"tyi 4ovek v bulgaria nqma da moje da go naprai.S teq na6te selski
pati6ta ","added":"0 u043cu0438u043d.","dt":1325005239,"usr":"pacinci","uid":"3232797","badges":{"cool":"0","com":"0","grp":"0","hot":"0","sub":"0","the":"0","team":"0","avt":"0","upd":"0","pro":"0"},"avatar":"default","mdkey":"b0cb8bb96a","vote":0}},{"t":"cm","d":{"cid":"92415990","comment":"edin budesht transformer :d :d mn ludo iskam i az taka :) ","added":"1 u043cu0438u043d.","dt":1325005125,"usr":"rad00oo","uid":"2231366","badges":{"cool":"0","com":"0","grp":"0","hot":"0","sub":"0","the":"0","team":"0","avt":"0","upd":"0","pro":"0"},"avatar":"rad00oo_f83adedb","mdkey":"b0cb8bb96a","vote":0}},{"t":"cm","d":{"cid":"92415980","comment":"u0422'u0444u0430 u0435 u0438u0437u0432u0435u0440u0433 :D (y) ","added":"2 u043cu0438u043d.","dt":1325005115,"usr":"parkour_fr33s7yler","uid":"3536951","badges":{"cool":"1","com":0,"grp":0,"hot":0,"sub":0,"the":0,"team":"0","avt":0,"upd":0,"pro":0},"avatar":"parkour_fr33s7yler_a049f8d2","mdkey":"b0cb8bb96a","vote":0}},{"t":"cm","d":{"cid":"92415976","comment":"a tova e qko no kakto vseki znae opasno inache otlichno ","added":"2 u043cu0438u043d.","dt":1325005112,"usr":"mladen96","uid":"1815339","badges":{"cool":"1","com":"0","grp":"0","hot":"0","sub":"0","the":"0","team":"0","avt":"0","upd":"0","pro":"0"},"avatar":"default","mdkey":"b0cb8bb96a","vote":0}},{"t":"cm","d":{"cid":"92415771","comment":"u0422u043eu044f u0435 u0441u0430u043cu043e u0437u0430 u043du0430 u0449u0435 u043fu044au0442u0438u0449u0430 :D
","added":"5 u043cu0438u043d.","dt":1325004939,"usr":"norkataaa","uid":"3130138","badges":{"cool":"0","com":"0","grp":"0","hot":"0","sub":"0","the":"0","team":"0","avt":"0","upd":"0","pro":"0"},"avatar":"default","mdkey":"b0cb8bb96a","vote":0}},{"t":"cm","d":{"cid":"92415729","comment":"lud lud lud lud :X:X:X ","added":"5 u043cu0438u043d.","dt":1325004901,"usr":"mivk","uid":"397503","badges":{"cool":"1","com":"0","grp":"0","hot":"0","sub":"0","the":"0","team":"0","avt":"0","upd":"0","pro":"0"},"avatar":"mivk_8da50762","mdkey":"b0cb8bb96a","vote":0}},{"t":"cm","d":{"cid":"92415714","comment":" :D ","added":"5 u043cu0438u043d.","dt":1325004892,"usr":"pupentseto","uid":"3262126","badges":{"cool":"0","com":"0","grp":"0","hot":"0","sub":"0","the":"0","team":"0","avt":"0","upd":"0","pro":"0"},"avatar":"default","mdkey":"b0cb8bb96a","vote":0}},{"t":"cm","d":{"cid":"92415622","comment":"u043cu043du043eu043e u044fu043au043e .....u0431u0440u0430u0432u043e (yes) ","added":"7 u043cu0438u043d.","dt":1325004805,"usr":"chechomecho","uid":"369254","badges":{"cool":"0","com":"0","grp":"0","hot":"0","sub":"0","the":"0","team":"0","avt":"0","upd":"0","pro":"0"},"avatar":"chechomecho_c167e9c2","mdkey":"b0cb8bb96a","vote":0}},{"t":"cm","d":{"cid":"92415579","comment":"baxti qkoto (yes)
","added":"7 u043cu0438u043d.","dt":1325004774,"usr":"dj_kobaka1","uid":"2585641","badges":{"cool":"1","com":"0","grp":"0","hot":"0","sub":"0","the":"0","team":"0","avt":"0","upd":"0","pro":"0"},"avatar":"dj_kobaka1_166f7919","mdkey":"b0cb8bb96a","vote":0}},{"t":"cm","d":{"cid":"92415572","comment":"vijte v alpite kvi sa im hubavi puti6tata a na6te i v sofiq sa po-gandi :X ","added":"7 u043cu0438u043d.","dt":1325004771,"usr":"liverpoolfctv","uid":"1608986","badges":{"cool":"1","com":"0","grp":"0","hot":"0","sub":"0","the":"0","team":"0","avt":"0","upd":"0","pro":"0"},"avatar":"liverpoolfctv_906af9fd","mdkey":"b0cb8bb96a","vote":"1"}},{"t":"p","d":{"total":"273","perpage":10,"page":1,"mdkey":"b0cb8bb96a"}}]

Предполагам сайта използва AJAX за да ги визуализира така, както ги виждаш ти!

Най-вероятно става чрез този скрипт!

Както виждаш е почти невъзможно да се избяга от JavaScript - а, тъй като участва в цялата схема с изкарването на коментарите!

Гласуването се зарежда от тоя скрипт, заедно с другите опции под плейъра!

При гласуване се подава заявка с атрибути до коренно различен файл, и защитата е доста добра, тъй като помни по профил :
http://www.vbox7.com/etc/fl_video_vote.php 
 

Подавани атрибути към файла :

vote - Не мога да си обясня за какво е този атрибут, стойността му е винаги 1 !
vid - Ключа на видеото!
votefrom - Положителен или отрицателен е вота! Съответно стойността е 1 или 0 !
sectok - Предполагам ключ за сигурност или удостоверяващ текущата сесия такъв!

редактиран от programings на 27.12.11 19:11
редактиран от programings на 27.12.11 19:43
zlatena
Сря, 28.12.11, 23:49
То май се изискваше парола,за да се добави коментар...
Малко наизуст говоря,ама не става ли с някой download-ер,като му се сложат филтри за предпочитаните изтегляния.
 WebHTTrack Website Copier или направо DownThemAll.
Може да се пробва нещо от тук http://userscripts.org/
programings
Чет, 29.12.11, 09:51
Тц, за съжаление не е толкова лесно!
insecteater
Сря, 11.01.12, 21:28
Опиши по-точно какво искаш да направиш. Какво имаш като входни данни и какво целиш като резултат. Например имаш url на даден клип и търсиш коментарите за него?
phrozencrew
Чет, 12.01.12, 23:08
Като за начало искам да извлека вота (с ръчичките под клиповете) и да го наместя за по-удобно следене (на няколко клипа) в друг сайт.
insecteater
Пет, 13.01.12, 13:24
Ето отрязък от код. При положение, че в блога си описал разни "механизатори" предполагам, че идеята ти е ясна :) Не искам да публикувам целият код, понеже едно че "механизаторския" клас още не е доработен, а и друго съдържа неща и ще се ползва за цели, за които не съм сигурен че са много законни, понеже е по поръчка на друг човек. Идеята е да се поддържат cookie-тата и да се следят и манипулират header-ите както трябва. $vbox->get метода от класа ми изпозлва curl с включени сума си опции за кукита, да се представя като не знам какъв си браузър и тем подобни. За парсване на html-а ползвам simple_html_dom, но гледам, че ти си си харесал други неща за тая цел :)
//Вход - адрес на клипа, за който искаме да вземем гласуванията
$ClipUrl = 'http://www.vbox7.com/play:e5b995312a';
 
//Извличаме Id-то на клипа
preg_match('/play:(.*)/',$ClipUrl, $n);
$ClipId = $n[1];
 
header('Content-type: text/plain; charset=UTF-8');
$vbox = new url();
//Извличаме съдържанието на главната страница (помпим кукита със съдържание)
$vbox->get('http://www.vbox7.com');
 
//(помпим кукита със съдържание)
$vbox->get('http://www.vbox7.com/show:missjavascript?back_to=%2Fplay%3A'.$ClipId);
 
//(помпим кукита със съдържание)
$vbox->get('http://www.vbox7.com/show:misscookie?back_to=%2Fplay%3A'.$ClipId);
 
$vbox->get('http://www.vbox7.com/show:missjavascript?back_to=%2Fplay%3A'.$ClipId);
//(вземame от получения JavaScript token параметъра и отиваме на пренасочената от него страница)
preg_match("/?js=1&token=(.*?)&/", $vbox->R_Content, $n);
$vbox->get("http://www.vbox7.com/show:missjavascript?js=1&token=$n[1]&back_to=%2Fplay%3A$ClipId");
 
//вземaме от получения хедър (частта за задаване на кукита) jsSecretToken параметъра
preg_match("/jsSecretToken=(.*?);/", $vbox->R_Headers, $n);
 
//В кукито което ще пращаме набутваме "секретния" token  и чак тогава се връщаме на адреса на клипа
$vbox->S_Headers = array("Cookie: checkCookies=yes; jsSecretToken=$n[1]");
$vbox->get("http://www.vbox7.com/play:$ClipId");
$VotePlus = $vbox->R_html->find('span[id=pos_votes_num]', 0)->plaintext;
$VoteMinus = $vbox->R_html->find('span[id=neg_votes_num]', 0)->plaintext;
 
//Изход
echo "+ $VotePlus - $VoteMinus";

редактиран от insecteater на 13.01.12 13:25
редактиран от insecteater на 13.01.12 13:27
programings
Пет, 13.01.12, 14:27

RE: Взимане на HTML кодa на Vbox7-страница???

” Ето отрязък от код. При положение, че в блога си описал разни "механизатори" предполагам, че идеята ти е ясна :) Не искам да публикувам целият код, понеже едно че "механизаторския" клас още не е доработен, а и друго съдържа неща и ще се ползва за цели, за които не съм сигурен че са много законни, понеже е по поръчка на друг човек. Идеята е да се поддържат cookie-тата и да се следят и манипулират header-ите както трябва. $vbox->get метода от класа ми изпозлва curl с включени сума си опции за кукита, да се представя като не знам какъв си браузър и тем подобни. За парсване на html-а ползвам simple_html_dom, но гледам, че ти си си харесал други неща за тая цел :)
//Вход - адрес на клипа, за който искаме да вземем гласуванията
$ClipUrl = 'http://www.vbox7.com/play:e5b995312a';
 
//Извличаме Id-то на клипа
preg_match('/play:(.*)/',$ClipUrl, $n);
$ClipId = $n[1];
 
header('Content-type: text/plain; charset=UTF-8');
$vbox = new url();
//Извличаме съдържанието на главната страница (помпим кукита със съдържание)
$vbox->get('http://www.vbox7.com');
 
//(помпим кукита със съдържание)
$vbox->get('http://www.vbox7.com/show:missjavascript?back_to=%2Fplay%3A'.$ClipId);
 
//(помпим кукита със съдържание)
$vbox->get('http://www.vbox7.com/show:misscookie?back_to=%2Fplay%3A'.$ClipId);
 
$vbox->get('http://www.vbox7.com/show:missjavascript?back_to=%2Fplay%3A'.$ClipId);
//(вземame от получения JavaScript token параметъра и отиваме на пренасочената от него страница)
preg_match("/?js=1&token=(.*?)&/", $vbox->R_Content, $n);
$vbox->get("http://www.vbox7.com/show:missjavascript?js=1&token=$n[1]&back_to=%2Fplay%3A$ClipId");
 
//вземaме от получения хедър (частта за задаване на кукита) jsSecretToken параметъра
preg_match("/jsSecretToken=(.*?);/", $vbox->R_Headers, $n);
 
//В кукито което ще пращаме набутваме "секретния" token  и чак тогава се връщаме на адреса на клипа
$vbox->S_Headers = array("Cookie: checkCookies=yes; jsSecretToken=$n[1]");
$vbox->get("http://www.vbox7.com/play:$ClipId");
$VotePlus = $vbox->R_html->find('span[id=pos_votes_num]', 0)->plaintext;
$VoteMinus = $vbox->R_html->find('span[id=neg_votes_num]', 0)->plaintext;
 
//Изход
echo "+ $VotePlus - $VoteMinus";

Дава следната грешка при опит за изпълнение :
Fatal error: Class 'url' not found in /home/123/public_html/123.php on line 10

insecteater
Пет, 13.01.12, 14:36
Нормално. Не се опитвай да го подкараш директно. Развейпраха, който е показал тоя скрипт не е предоставил въпросния клас url по някакви си негови тайни съображения. [angel] Служи само за илюстрация на това, какво трябва да се направи.
редактиран от insecteater на 13.01.12 14:36
insecteater
Пет, 13.01.12, 14:44
класа е нещо подобно на PHP Scriptable Web Browser - за справка - Блог за програмиране, geek, инженеринг, фография и други интересни неща на Нед (предлагам да го напием с бира)

http://blog.nediko.info/web-mechanize-engines

Може съдържанието да се извлича и с file_get_contents, ама трябва да се създават контексти и тем подобна безмислена работа. Пък някой много ербап може да отваря директно сокети и да чете и пише, но няма никакъв смисъл, след като други хора са ни улеснили и са създали такива прекрасни класове да ползваме наготово, за да извличаме съдържание.

редактиран от insecteater на 13.01.12 14:54
phrozencrew
Пет, 13.01.12, 18:57
Ганчо, благодаря! Схванах идеята!
insecteater
Съб, 14.01.12, 11:29
Ето и коментарите как се вземат. Махнал съм каквото ми е тайно, но съм го оставил работещо, така че трябва да се разархивира и да работи. Трябва да се има предвид обаче, че ако коментарите са повече от 3-4 страници, най вероятно скрипта ще даде timeout грешка. Вътре в скрипта по що-годе удобен начин е направено да може да се взимат отделни страници от коментарите. Най отдолу съм закоментирал дъмп на отделен коментар - просто са набутани в обекти.

Разбира се никой не може да даде гаранция, че от vbox7 няма да променят нещо по механизма на работа по страницата им. PHP -то разбира се трябва да е с включено CURL за да работи това. Може да има трески за дялане по скрипта, но главната важна работа е показана. Не претендирам , че това е единственият и правилен начин, може да се о птимизира още, но за мързелив човек като мен и това работи задоволително, vbox.rar

programings
Съб, 14.01.12, 14:16
Тия неща толкова ли са тайни, че да ги махаш?

От какво се притесняваш, че някой може да го използва за някакви незаконни цели ли?

Какви такива могат да се сътворят със скрипт от този род? Аз не се сещам!

А и се чудя не може ли по някакъв начин да се избегне използването на CURL ?

редактиран от programings на 14.01.12 17:41
programings
Сря, 06.11.13, 22:17
Темата я вдигам от дълбините на раздела, защото преди известно време открих, че от ВиБокс са добавили параметър, който позволява чрез познатият метод за извличане на адреса на видеото, субтитри и прочие през ext.do, да се вземе и информация за гласуванията за клипа, кой е ъплоудъра, брой гледания и дори точна дата и час до милисекунди, което не е достъпно от друго място.

Принудили са се да го въведат заради новият плейър, който динамично визуализира тези данни след като свърши клипа, и е ясно от къде ги взима.

Параметърът се казва additional_info, стойността му трябва да е 1 (поддържа само една стойност), и следва да се добави като нов такъв при GET заявката до ext.do, заедно с key параметър, който съответства на mdkey-я на видеото.

Ето примерен call:
http://vbox7.com/etc/ext.do?key=a88a0b9d3b&additional_info=1 
 

Примерен резултат, в случая:
&flv_addr=http://media101.vbox7.com/s/a8/a88a0b9d3br4f3551cd4.mp4&jpg_addr=i47.vbox7.com/i/a88/a88a0b9d3b4.jpg&uploader=ibizyyy&dt=2013-11-06 07:17:22&pos_votes=59&neg_votes=6&totalviews=27898&subsEnabled=false&related=1 
 

Това решава проблема на phrozencrew, който е повод за пускането на темата, но прекалено късно, предполагам.

редактиран от programings на 06.11.13 22:18
редактиран от programings на 06.11.13 22:19
редактиран от programings на 06.11.13 22:20

Коментар

за нас | за разработчици | за реклама | станете автори | in english  © 1998-2024   Experta Ltd.