Hola tormund
Para extraer las urls de los empaquetados JS de powvideo no creo que tengas problemas. El agoritmo se puede hacer para cualquier lenguaje con más o menos dificultad.
Los empaquetados JS de powvideo sulen ser algo como lo siguiente
Código: Seleccionar todo
<script>eval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('1m=B;F=B;2 d(1l){5(1m)2C.2B(1l)};2 1j(1k,L){$("<2A>",{l:\'2z\',\'k\':1k,2y:\'2x:2w\'}).2v(\'1f\',2(){5(1a L==\'2\')L();$(2u.2t())}).2s(\'2r\')};2 11(l){1j(\'j://2q.2p.2o/1i/1i.2n?l=\'+l)};2 1h(q){2m(g i=0;i<7.1c;i++){5(7[i].f==q.f)e i}};2 1g(q){e 7[1h(q)+1]};2 I(){g K=1g(4().8());5(K){4().2l();4().1f([K])}};2 W(1d){5(J&&J.1e){J.1e(1d,\'*\')}};2 x(3){d(3);m(\'2k\',3?3.2j+\' \'+V():\'\');5(7.1c>1){I()}};2 y(3){5(3.2i==Z&&3.Y==0&&4().2h()==-1){d(\'1b!\',3);17(\'2g\');m(\'1b\');I()}};2 t(){5(4().15()==0)m(\'2f\')};2 r(){m(\'2e\')};2 m(18,H){5(1a 19==\'2\')19(\'2d\',\'2c\',18,E(),p()+(H?\' \'+H:\'\'))};2 17(G){$.2b(\'/2a\',{29:\'28\',G:G,l:E(),c:p()})};2 w(3){d(3);5(3.O[0].f!=7[0].f){d(\'27, 26!\');14(2(){4().16()},10)}};2 u(){d(\'25 16\');5(4().15()==0){g c=p();5(c&&c.24(\'23\')!=0){14(2(){11(c)},22)}}};2 s(3){5(!F&&3.X>Z&&3.Y/3.X>0.9){F=N;W(\'21% 1Z\');d(3)}};2 E(){e 4().8()?4().8().o:\'\'};2 p(){e 4().8()?(4().8().c?4().8().c:\'\'):\'\'};2 V(){e 4().8()?4().8().f:\'\'};g b=\'j://1Y.A.z/1X/1W/U/T/n.1V\';g C={1U:\'\',1T:0,1S:\'1R\',1Q:\'1P\',1O:\'1N\',1M:\'20\'};g a=[];7=[{b:b,a:a,k:\'M://S.R.Q.13:1L/1K/P:U/T/1J?h=D\',o:\'n\'},{b:b,a:a,k:\'j://A.z/D.1I\',o:\'n\'},{b:b,a:a,k:\'j://S.R.Q.13:1H/D/v.P\',o:\'n\'}];7=1G.1F(7,2(v){v[\'f\']=v[\'k\'];e v});4("1E").1D({1C:1B,1A:1z,O:[7[0]],1y:"1x",1w:"1v",1u:"N",M:{1t:10},C:C,1s:{1r:B},1q:\'1p 1o 6.12.1\',1n:\'j://A.z\'}).y(y).x(x).w(w).u(u).t(t).s(s).r(r);',62,163,'||function|ev|jwplayer|if||sources|getPlaylistItem||tracks|image|mediaid|llog|return|file|var|||http|src|id|sendGa|zklsemqu0dad|description|getMediaId|item|onComplete|onTime|onPlay|onBeforePlay||onPlaylist|onError|onBufferChange|net|powvideo|false|captions|laohpnlomuikkfn2mdk7ylquhbbmy7nqd2sndqqdidsd6yrfnmvlwcdjja|getDesc|allView|action|extra|loadNext|top|next|callback|rtmp|true|playlist|mp4|233|31|176|00207|01|getPlayFile|sendMsgToTop|duration|position|100||logVisit|||setTimeout|getPosition|play|sendStatus|category|ga|typeof|Stuck|length|msg|postMessage|load|getNextSource|getSourceIndex|player|visit|url|str|debug|aboutlink|Player|Powvideo|abouttext|enabled|analytics|bufferlength|androidhls|flash|primary|start|startparam|562|height|954|width|setup|vplayer|map|jQuery|8777|m3u8|zklsemqu0dad_n|vod|19350|fontsize|Arial|fontfamily|dacf84|color|uniform|edgeStyle|backgroundOpacity|backgroundColor|jpg|37|scap|img|complete||90|30000|cG8t|indexOf|before|go|fallback|videostatus|op|stats|post|event|send|Complete|Play|check|getDuration|bufferPercent|message|Error|stop|for|php|tv|hdfull|em|body|appendTo|remove|this|on|none|display|style|ifr|iframe|log|console'.split('|')))</script>
Lo anterior se compone de 5 partes:
p = patrón/plantilla que se reemplazará con los datos de k
a = base x
c = longitud de la lista de reemplazos
k = lista de reemplazos
e = función
El mismo código anterior escrito de una forma más clara, también en JS
Código: Seleccionar todo
var p = '1m=B;F=B;2 d(1l){5(1m)2C.2B(1l)};2 1j(1k,L){$("<2A>",{l:\'2z\',\'k\':1k,2y:\'2x:2w\'}).2v(\'1f\',2(){5(1a L==\'2\')L();$(2u.2t())}).2s(\'2r\')};2 11(l){1j(\'j://2q.2p.2o/1i/1i.2n?l=\'+l)};2 1h(q){2m(g i=0;i<7.1c;i++){5(7[i].f==q.f)e i}};2 1g(q){e 7[1h(q)+1]};2 I(){g K=1g(4().8());5(K){4().2l();4().1f([K])}};2 W(1d){5(J&&J.1e){J.1e(1d,\'*\')}};2 x(3){d(3);m(\'2k\',3?3.2j+\' \'+V():\'\');5(7.1c>1){I()}};2 y(3){5(3.2i==Z&&3.Y==0&&4().2h()==-1){d(\'1b!\',3);17(\'2g\');m(\'1b\');I()}};2 t(){5(4().15()==0)m(\'2f\')};2 r(){m(\'2e\')};2 m(18,H){5(1a 19==\'2\')19(\'2d\',\'2c\',18,E(),p()+(H?\' \'+H:\'\'))};2 17(G){$.2b(\'/2a\',{29:\'28\',G:G,l:E(),c:p()})};2 w(3){d(3);5(3.O[0].f!=7[0].f){d(\'27, 26!\');14(2(){4().16()},10)}};2 u(){d(\'25 16\');5(4().15()==0){g c=p();5(c&&c.24(\'23\')!=0){14(2(){11(c)},22)}}};2 s(3){5(!F&&3.X>Z&&3.Y/3.X>0.9){F=N;W(\'21% 1Z\');d(3)}};2 E(){e 4().8()?4().8().o:\'\'};2 p(){e 4().8()?(4().8().c?4().8().c:\'\'):\'\'};2 V(){e 4().8()?4().8().f:\'\'};g b=\'j://1Y.A.z/1X/1W/U/T/n.1V\';g C={1U:\'\',1T:0,1S:\'1R\',1Q:\'1P\',1O:\'1N\',1M:\'20\'};g a=[];7=[{b:b,a:a,k:\'M://S.R.Q.13:1L/1K/P:U/T/1J?h=D\',o:\'n\'},{b:b,a:a,k:\'j://A.z/D.1I\',o:\'n\'},{b:b,a:a,k:\'j://S.R.Q.13:1H/D/v.P\',o:\'n\'}];7=1G.1F(7,2(v){v[\'f\']=v[\'k\'];e v});4("1E").1D({1C:1B,1A:1z,O:[7[0]],1y:"1x",1w:"1v",1u:"N",M:{1t:10},C:C,1s:{1r:B},1q:\'1p 1o 6.12.1\',1n:\'j://A.z\'}).y(y).x(x).w(w).u(u).t(t).s(s).r(r);';
var a = 62;
var c = 162;
var k = '||function|ev|jwplayer|if||sources|getPlaylistItem||tracks|image|mediaid|llog|return|file|var|||http|src|id|sendGa|zklsemqu0dad|description|getMediaId|item|onComplete|onTime|onPlay|onBeforePlay||onPlaylist|onError|onBufferChange|net|powvideo|false|captions|laohpnlomuikkfn2mdk7ylquhbbmy7nqd2sndqqdidsd6yrfnmvlwcdjja|getDesc|allView|action|extra|loadNext|top|next|callback|rtmp|true|playlist|mp4|233|31|176|00207|01|getPlayFile|sendMsgToTop|duration|position|100||logVisit|||setTimeout|getPosition|play|sendStatus|category|ga|typeof|Stuck|length|msg|postMessage|load|getNextSource|getSourceIndex|player|visit|url|str|debug|aboutlink|Player|Powvideo|abouttext|enabled|analytics|bufferlength|androidhls|flash|primary|start|startparam|562|height|954|width|setup|vplayer|map|jQuery|8777|m3u8|zklsemqu0dad_n|vod|19350|fontsize|Arial|fontfamily|dacf84|color|uniform|edgeStyle|backgroundOpacity|backgroundColor|jpg|37|scap|img|complete||90|30000|cG8t|indexOf|before|go|fallback|videostatus|op|stats|post|event|send|Complete|Play|check|getDuration|bufferPercent|message|Error|stop|for|php|tv|hdfull|em|body|appendTo|remove|this|on|none|display|style|ifr|iframe|log|console'.split('|');
var e = function(c){
return( c < a ? '': e( parseInt(c/a) ) ) + ( (c = c % a) > 35 ? String.fromCharCode(c + 29) : c.toString(36) )
};
while(c--)
if(k[c])
p = p.replace( new RegExp('\\b' + e(c) + '\\b','g'), k[c]);
Si ejecutamos eso en JS en la variable p tendríamos el código desempaquetado
Código: Seleccionar todo
debug=false;allView=false;function llog(str){if(debug)console.log(str)};function visit(url,callback){$("<iframe>",{id:'ifr','src':url,style:'display:none'}).on('load',function(){if(typeof callback=='function')callback();$(this.remove())}).appendTo('body')};function logVisit(id){visit('http://em.hdfull.tv/player/player.php?id='+id)};function getSourceIndex(item){for(var i=0;i<sources.length;i++){if(sources[i].file==item.file)return i}};function getNextSource(item){return sources[getSourceIndex(item)+1]};function loadNext(){var next=getNextSource(jwplayer().getPlaylistItem());if(next){jwplayer().stop();jwplayer().load([next])}};function sendMsgToTop(msg){if(top&&top.postMessage){top.postMessage(msg,'*')}};function onError(ev){llog(ev);sendGa('Error',ev?ev.message+' '+getPlayFile():'');if(sources.length>1){loadNext()}};function onBufferChange(ev){if(ev.bufferPercent==100&&ev.position==0&&jwplayer().getDuration()==-1){llog('Stuck!',ev);sendStatus('check');sendGa('Stuck');loadNext()}};function onPlay(){if(jwplayer().getPosition()==0)sendGa('Play')};function onComplete(){sendGa('Complete')};function sendGa(category,extra){if(typeof ga=='function')ga('send','event',category,getDesc(),getMediaId()+(extra?' '+extra:''))};function sendStatus(action){$.post('/stats',{op:'videostatus',action:action,id:getDesc(),mediaid:getMediaId()})};function onPlaylist(ev){llog(ev);if(ev.playlist[0].file!=sources[0].file){llog('fallback, go!');setTimeout(function(){jwplayer().play()},10)}};function onBeforePlay(){llog('before play');if(jwplayer().getPosition()==0){var mediaid=getMediaId();if(mediaid&&mediaid.indexOf('cG8t')!=0){setTimeout(function(){logVisit(mediaid)},30000)}}};function onTime(ev){if(!allView&&ev.duration>100&&ev.position/ev.duration>0.9){allView=true;sendMsgToTop('90% complete');llog(ev)}};function getDesc(){return jwplayer().getPlaylistItem()?jwplayer().getPlaylistItem().description:''};function getMediaId(){return jwplayer().getPlaylistItem()?(jwplayer().getPlaylistItem().mediaid?jwplayer().getPlaylistItem().mediaid:''):''};function getPlayFile(){return jwplayer().getPlaylistItem()?jwplayer().getPlaylistItem().file:''};var image='http://img.powvideo.net/scap/37/01/00207/zklsemqu0dad.jpg';var captions={backgroundColor:'',backgroundOpacity:0,edgeStyle:'uniform',color:'dacf84',fontfamily:'Arial',fontsize:'20'};var tracks=[];sources=[{image:image,tracks:tracks,src:'rtmp://176.31.233.13:19350/vod/mp4:01/00207/zklsemqu0dad_n?h=laohpnlomuikkfn2mdk7ylquhbbmy7nqd2sndqqdidsd6yrfnmvlwcdjja',description:'zklsemqu0dad'},{image:image,tracks:tracks,src:'http://powvideo.net/laohpnlomuikkfn2mdk7ylquhbbmy7nqd2sndqqdidsd6yrfnmvlwcdjja.m3u8',description:'zklsemqu0dad'},{image:image,tracks:tracks,src:'http://176.31.233.13:8777/laohpnlomuikkfn2mdk7ylquhbbmy7nqd2sndqqdidsd6yrfnmvlwcdjja/v.mp4',description:'zklsemqu0dad'}];sources=jQuery.map(sources,function(v){v['file']=v['src'];return v});jwplayer("vplayer").setup({width:954,height:562,playlist:[sources[0]],startparam:"start",primary:"flash",androidhls:"true",rtmp:{bufferlength:10},captions:captions,analytics:{enabled:false},abouttext:'Powvideo Player 6.12.1',aboutlink:'http://powvideo.net'}).onBufferChange(onBufferChange).onError(onError).onPlaylist(onPlaylist).onBeforePlay(onBeforePlay).onPlay(onPlay).onTime(onTime).onComplete(onComplete);