Контакты  
 
 
Главная
 
 
 
   
Привет :)
 
 
Разделы





 
Пост  

На досуге решил заняться чем-нибудь интересным, а точнее написать граббёр видео с намбы) не тут-то было, прямых ссылок, при публикации видео нет, а значит генерируются уже по ходу дела, видимо защита от умников))

 

Пример, возьмём часть кода:

  1. <object height="375" width="100%" type="application/x-shockwave-flash" data="http://video.namba.kz/swf/player/3.2.7/flowplayer-3.2.7.swf">
  2. <param value="true" name="allowfullscreen" />
  3. <param value="opaque" name="wmode" />
  4. <param value="always" name="allowscriptaccess" />
  5. <param name="src" value="http://video.namba.kz/swf/player/3.2.7/flowplayer-3.2.7.swf" />
  6. <param value="config=http://video.namba.kz/flashvars.php?i=15702541_15702511__2962791_1" name="flashvars" /></object>

И так, мы имеем:

Плеер: http://video.namba.kz/swf/player/3.2.7/flowplayer-3.2.7.swf

Подгружаемый конфиг: http://video.namba.kz/flashvars.php?i=15702541_15702511__2962791_1

Покопавшись в конфиге, также не нашел прямых ссылок, зато нашел метод выполнения XSS :)


Далее, запустил обычный http снифер и обнаружил, что при нажатии кнопочки Play идёт видео поток:
http://download.files.namba.kz/files/0a93dd3c5883fa4048299f4c3936a619/4f4e3a1d/15702541/video.flv

 

 

Данные в сылке: 4f4e3a1d и  15702541  берутся из конфига:

 

4f4e3a1d - Штамп времени, для генерации временной ссылки, примерно выглядит так:

 

  1. $time = time();
  2. $time_hex = sprintf("%08x", $time);

 

15702541 - Уникальный ID ролика

 

А вот Хэш:  0a93dd3c5883fa4048299f4c3936a619, я так понял - генерируется самим плеером.

 

Пришлось копаться, в исходном коде плеера :) Думал что-то интересное, а это оказался стандартный Flowplayer) Вот исходной код функции:

  1. internal function buildClipUrl(arg1:String, arg2:org.flowplayer.model.Clip):String
  2. {
  3. var loc1:*=0;
  4. var loc2:*=null;
  5. if (!arg1)
  6. {
  7. return null;
  8. }
  9. this.log.debug("main resolver is " + this._mainResolver);
  10. if (org.flowplayer.util.URLUtil.isCompleteURLWithProtocol(arg2.getPreviousResolvedUrl(this._mainResolver)))
  11. {
  12. loc1 = arg2.url.lastIndexOf("/files/") + 6;
  13. loc2 = [arg2.url.substring(0, loc1), arg2.url.substring(loc1 + 1)];
  14. return org.flowplayer.util.URLUtil.appendToPath(org.flowplayer.util.URLUtil.appendToPath(loc2[0], this.generateProtection(arg1, loc2[1])), loc2[1]);
  15. }
  16. return org.flowplayer.util.URLUtil.appendToPath(this.generateProtection(arg1, arg2.getPreviousResolvedUrl(this._mainResolver)), arg2.url);
  17. }
  18.  
  19. internal function generateProtection(arg1:String, arg2:String):String
  20. {
  21. var loc1:*=this._config.token;
  22. return com.adobe.crypto.MD5.hash(loc1 + "/" + arg1) + "/" + arg2;
  23. }

После изучения кода, пишем функцию на php и делаем всё, что нам нужно, от вставки в свой плеер до граббёра.

Добавить в:
 
Serj   01 марта 2012, 01:37
 
 



 
 
 
 
© SERJ.WS 2011-2020