Bonjour,
Je suis confronté à un petit problème : l’intégrale Nicky Larson est sur le site de wat dans une version introuvable ailleurs, alors j’ai envie de la télécharger, mais il ne suffit pas de regarder le code source pour trouver l'url de la vidéo parce que ces malins utilisent un lecteur flash.
Mais là je me rends compte que je sais décompiler un swf pour savoir où il va chercher la vidéo.
Par exemple, l'url suivante pointe vers le player avec comme argument un videoId : https://www.wat.tv/images/v70/PlayerLite.swf?videoId=762vp
J'ai décompilé le playerLite avec JPEXS :
Je comprends pas très bien ce que font les appels à des url comme images/v70/rev...
Ni ce qu'il passe comme arguments au "vrai" player, cad PlayerWat.swf. En plus, celui-là a plein de fichiers...
Bref, si quelqu'un pouvait m'aider, ce serait sympa...
Je suis confronté à un petit problème : l’intégrale Nicky Larson est sur le site de wat dans une version introuvable ailleurs, alors j’ai envie de la télécharger, mais il ne suffit pas de regarder le code source pour trouver l'url de la vidéo parce que ces malins utilisent un lecteur flash.
Mais là je me rends compte que je sais décompiler un swf pour savoir où il va chercher la vidéo.
Par exemple, l'url suivante pointe vers le player avec comme argument un videoId : https://www.wat.tv/images/v70/PlayerLite.swf?videoId=762vp
J'ai décompilé le playerLite avec JPEXS :
Code:
package tv.wat.player.loader
{
import flash.display.Sprite;
import flash.display.Loader;
import flash.net.URLLoader;
import flash.events.Event;
import flash.events.IOErrorEvent;
import flash.events.SecurityErrorEvent;
import flash.net.URLRequest;
import flash.system.Security;
import flash.display.StageScaleMode;
public class PlayerLite extends Sprite
{
public function PlayerLite()
{
super();
Security.allowDomain("www.wat.tv");
Security.allowDomain("*");
this.protocol = "";
this.sizePlayerW = -1;
this.sizePlayerH = -1;
this.isAlone = !(stage == null);
this.flashvars = loaderInfo.parameters;
try
{
if(this.isAlone)
{
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = "TL";
stage.addEventListener(Event.RESIZE,this.resizePlayerHandler);
this.loadPlayer();
}
}
catch(error:Error)
{
}
}
private var ldr:Loader;
private var sizePlayerW:int;
private var sizePlayerH:int;
private var isAlone:Boolean;
private var flashvars:Object;
private var baseUrl:String;
private var protocol:String;
public function loadPlayer() : *
{
var _loc1_:URLLoader = null;
this.ldr = new Loader();
this.ldr.contentLoaderInfo.addEventListener(Event.COMPLETE,this.completeHandler);
this.ldr.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR,this.errorHandler);
if(this.flashvars.videoId == null)
{
this.flashvars.videoId = "9489605";
}
if(this.flashvars.baseUrl == null)
{
this.flashvars.baseUrl = "www.wat.tv";
}
if(this.flashvars.rev == null)
{
_loc1_ = new URLLoader();
_loc1_.addEventListener(Event.COMPLETE,this.revCompleteHandler);
_loc1_.addEventListener(IOErrorEvent.IO_ERROR,this.revIOErrorHandler);
_loc1_.addEventListener(SecurityErrorEvent.SECURITY_ERROR,this.securityErrorHandler);
if(this.flashvars.preprod == "1")
{
_loc1_.load(new URLRequest("//www2.wat.tv/images/v70/rev"));
}
else
{
_loc1_.load(new URLRequest("//www.wat.tv/images/v70/rev"));
}
}
else
{
this.callPlayer(this.flashvars.rev + "");
}
}
private function securityErrorHandler(param1:SecurityErrorEvent) : *
{
this.protocol = "https:";
(param1.target as URLLoader).load(new URLRequest(this.protocol + "//www.wat.tv/images/v70/rev"));
}
private function revCompleteHandler(param1:Event) : *
{
(param1.currentTarget as URLLoader).removeEventListener(Event.COMPLETE,this.revCompleteHandler);
(param1.currentTarget as URLLoader).removeEventListener(IOErrorEvent.IO_ERROR,this.revIOErrorHandler);
this.callPlayer((param1.currentTarget as URLLoader).data + "");
}
private function revIOErrorHandler(param1:IOErrorEvent) : *
{
this.callPlayer("004.000.000");
}
private function callPlayer(param1:String) : *
{
this.flashvars.rev = param1;
var _loc2_:* = "";
_loc2_ = this.protocol + "//" + "www.wat.tv" + "/images/v70/PlayerWat.swf";
this.ldr.load(new URLRequest(_loc2_ + "?rev=" + param1));
}
private function errorHandler(param1:IOErrorEvent) : *
{
try
{
(param1.currentTarget as Loader).removeEventListener(Event.COMPLETE,this.completeHandler);
(param1.currentTarget as Loader).removeEventListener(IOErrorEvent.IO_ERROR,this.errorHandler);
}
catch(err:Error)
{
}
}
private function completeHandler(param1:Event) : *
{
this.addChild(this.ldr);
dispatchEvent(new Event("PLAYER_LOADED"));
(this.ldr.content as Object).addEventListener("PLAYER_PLUGGED",this.resizePlayerHandler);
if(!(this.sizePlayerW == -1) && !(this.sizePlayerH == -1))
{
(this.ldr.content as Object).plugVars(this.flashvars,this.sizePlayerW,this.sizePlayerH);
}
else
{
(this.ldr.content as Object).plugVars(this.flashvars,stage.stageWidth,stage.stageHeight);
}
if(this.isAlone)
{
this.resizePlayerHandler();
}
}
private function resizePlayerHandler(param1:Event = null) : *
{
if(this.ldr == null)
{
return;
}
if(!(this.sizePlayerW == -1) && !(this.sizePlayerH == -1))
{
(this.ldr.content as Object).setPlayerSize(this.sizePlayerW,this.sizePlayerH);
}
else
{
(this.ldr.content as Object).setPlayerSize(stage.stageWidth,stage.stageHeight);
}
}
public function setPlayerSize(param1:int, param2:int) : *
{
try
{
if(this.ldr != null)
{
(this.ldr.content as Object).setPlayerSize(param1,param2);
}
}
catch(err:Error)
{
}
}
}
}
Ni ce qu'il passe comme arguments au "vrai" player, cad PlayerWat.swf. En plus, celui-là a plein de fichiers...
Bref, si quelqu'un pouvait m'aider, ce serait sympa...