Взимане на 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 - Предполагам ключ за сигурност или удостоверяващ текущата сесия такъв! | | 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"; |
| | 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:44 |
класа е нещо подобно на PHP Scriptable Web Browser - за справка - Блог за програмиране, geek, инженеринг, фография и други интересни неща на Нед (предлагам да го напием с бира) http://blog.nediko.info/web-mechanize-engines Може съдържанието да се извлича и с file_get_contents, ама трябва да се създават контексти и тем подобна безмислена работа. Пък някой много ербап може да отваря директно сокети и да чете и пише, но няма никакъв смисъл, след като други хора са ни улеснили и са създали такива прекрасни класове да ползваме наготово, за да извличаме съдържание. | | 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Сря, 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, който е повод за пускането на темата, но прекалено късно, предполагам. | | Коментар |