Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Подмена ссылок (псевдо-стриминг)

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Coder1994
Отправлено: 25 Июня, 2011 - 20:40:42
Post Id


Частый гость


Покинул форум
Сообщений всего: 213
Дата рег-ции: Май 2010  
Откуда: Россия, Ростов-на-Дону


Помог: 3 раз(а)




Здравствуйте!
Меня интересует следующий вопрос, реально реализовать скрипт, который бы послужил "как прокси", т.е. скрыл истиный источник информации.
Точнее, есть сайт, на нём расположен видео ролик - http://site.ru/1.mp4, при вставке данной ссылки в онлайн видеопроигрыватель, браузер будет писать идёт загрузка с site.ru.
А мне нужно написать скрипт который бы тянул видео с site.ru, а в бразузере и в исходном коде было написано загрузка данных с mysite.ru, т.е. нужны так сказать промежуточные врата (если можно так выразиться).
Тупо выкачивать видео себе на хост будет очень долго, т.к. видео за пару сотен тысяч, и ихний размер от 150мб

(Отредактировано автором: 25 Июня, 2011 - 20:43:33)

 
 Top
grefon
Отправлено: 25 Июня, 2011 - 23:31:06
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 823
Дата рег-ции: Нояб. 2010  


Помог: 32 раз(а)




Попробуйте поюзать эту штуку. Наверняка придется переделывать, но по крайней мере она уже направлена в нужную Вам сторону.


-----
____________________________________________________________________
Ну как то так, наверное.
http://grefon[dot]com
 
 Top
Coder1994
Отправлено: 26 Июня, 2011 - 11:47:57
Post Id


Частый гость


Покинул форум
Сообщений всего: 213
Дата рег-ции: Май 2010  
Откуда: Россия, Ростов-на-Дону


Помог: 3 раз(а)




PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.         /*
  3.        
  4.                 xmoov-php 1.0
  5.                 Development version 0.9.3 beta
  6.                
  7.                 by: Eric Lorenzo Benjamin jr. webmaster (AT) xmoov (DOT) com
  8.                 originally inspired by Stefan Richter at flashcomguru.com
  9.                 bandwidth limiting by Terry streamingflvcom (AT) dedicatedmanagers (DOT) com
  10.                
  11.                 This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License.
  12.                 For more information, visit http://creativecommons.org/licenses/by-nc-sa/3.0/
  13.                 For the full license, visit http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode
  14.                 or send a letter to Creative Commons, 543 Howard Street, 5th Floor, San Francisco, California, 94105, USA.
  15.                
  16.                
  17.         */
  18.  
  19.  
  20.        
  21.  
  22.  
  23.        
  24.         //      SCRIPT CONFIGURATION
  25.        
  26.         //------------------------------------------------------------------------------------------
  27.         //      MEDIA PATH
  28.         //
  29.         //      you can configure these settings to point to video files outside the public html folder.
  30.         //------------------------------------------------------------------------------------------
  31.        
  32.         // points to server root
  33.         define('XMOOV_PATH_ROOT', '');
  34.        
  35.         // points to the folder containing the video files.
  36.         define('XMOOV_PATH_FILES', 'video/');
  37.        
  38.        
  39.        
  40.         //------------------------------------------------------------------------------------------
  41.         //      SCRIPT BEHAVIOR
  42.         //------------------------------------------------------------------------------------------
  43.        
  44.         //set to TRUE to use bandwidth limiting.
  45.         define('XMOOV_CONF_LIMIT_BANDWIDTH', TRUE);
  46.        
  47.         //set to FALSE to prohibit caching of video files.
  48.         define('XMOOV_CONF_ALLOW_FILE_CACHE', FALSE);
  49.        
  50.        
  51.        
  52.         //------------------------------------------------------------------------------------------
  53.         //      BANDWIDTH SETTINGS
  54.         //
  55.         //      these settings are only needed when using bandwidth limiting.
  56.         //     
  57.         //      bandwidth is limited my sending a limited amount of video data(XMOOV_BW_PACKET_SIZE),
  58.         //      in specified time intervals(XMOOV_BW_PACKET_INTERVAL).
  59.         //      avoid time intervals over 1.5 seconds for best results.
  60.         //     
  61.         //      you can also control bandwidth limiting via http command using your video player.
  62.         //      the function getBandwidthLimit($part) holds three preconfigured presets(low, mid, high),
  63.         //      which can be changed to meet your needs
  64.         //------------------------------------------------------------------------------------------   
  65.        
  66.         //set how many kilobytes will be sent per time interval
  67.         define('XMOOV_BW_PACKET_SIZE', 90);
  68.        
  69.         //set the time interval in which data packets will be sent in seconds.
  70.         define('XMOOV_BW_PACKET_INTERVAL', 0.3);
  71.        
  72.         //set to TRUE to control bandwidth externally via http.
  73.         define('XMOOV_CONF_ALLOW_DYNAMIC_BANDWIDTH', TRUE);
  74.        
  75.        
  76.        
  77.         //------------------------------------------------------------------------------------------
  78.         //      DYNAMIC BANDWIDTH CONTROL
  79.         //------------------------------------------------------------------------------------------
  80.        
  81.         function getBandwidthLimit($part)
  82.         {
  83.                 switch($part)
  84.                 {
  85.                         case 'interval' :
  86.                                 switch($_GET[XMOOV_GET_BANDWIDTH])
  87.                                 {
  88.                                         case 'low' :
  89.                                                 return 1;
  90.                                         break;
  91.                                         case 'mid' :
  92.                                                 return 0.5;
  93.                                         break;
  94.                                         case 'high' :
  95.                                                 return 0.3;
  96.                                         break;
  97.                                         default :
  98.                                                 return XMOOV_BW_PACKET_INTERVAL;
  99.                                         break;
  100.                                 }
  101.                         break;
  102.                         case 'size' :
  103.                                 switch($_GET[XMOOV_GET_BANDWIDTH])
  104.                                 {
  105.                                         case 'low' :
  106.                                                 return 10;
  107.                                         break;
  108.                                         case 'mid' :
  109.                                                 return 40;
  110.                                         break;
  111.                                         case 'high' :
  112.                                                 return 90;
  113.                                         break;
  114.                                         default :
  115.                                                 return XMOOV_BW_PACKET_SIZE;
  116.                                         break;
  117.                                 }
  118.                         break;
  119.                 }
  120.         }
  121.        
  122.        
  123.        
  124.         //------------------------------------------------------------------------------------------
  125.         //      INCOMING GET VARIABLES CONFIGURATION
  126.         //     
  127.         //      use these settings to configure how video files, seek position and bandwidth settings are accessed by your player
  128.         //------------------------------------------------------------------------------------------
  129.        
  130.         define('XMOOV_GET_FILE', 'file');
  131.         define('XMOOV_GET_POSITION', 'position');
  132.         define('XMOOV_GET_AUTHENTICATION', 'key');
  133.         define('XMOOV_GET_BANDWIDTH', 'bw');
  134.        
  135.        
  136.        
  137.         //      END SCRIPT CONFIGURATION - do not change anything beyond this point if you do not know what you are doing
  138.        
  139.        
  140.        
  141.         //------------------------------------------------------------------------------------------
  142.         //      PROCESS FILE REQUEST
  143.         //------------------------------------------------------------------------------------------
  144.        
  145.         if(isset($_GET[XMOOV_GET_FILE]) && isset($_GET[XMOOV_GET_POSITION]))
  146.         {
  147.                 //      PROCESS VARIABLES
  148.                
  149.                 # get seek position
  150.                 $seekPos = intval($_GET[XMOOV_GET_POSITION]);
  151.                 # get file name
  152.                 $fileName = htmlspecialchars($_GET[XMOOV_GET_FILE]);
  153.                 # assemble file path
  154.                 $file = XMOOV_PATH_ROOT . XMOOV_PATH_FILES . $fileName;
  155.                
  156.                 # assemble packet interval
  157.                 $packet_interval = (XMOOV_CONF_ALLOW_DYNAMIC_BANDWIDTH && isset($_GET[XMOOV_GET_BANDWIDTH])) ? getBandwidthLimit('interval') : XMOOV_BW_PACKET_INTERVAL;
  158.                 # assemble packet size
  159.                 $packet_size = ((XMOOV_CONF_ALLOW_DYNAMIC_BANDWIDTH && isset($_GET[XMOOV_GET_BANDWIDTH])) ? getBandwidthLimit('size') : XMOOV_BW_PACKET_SIZE) * 1042;
  160.                
  161.                 # security improved by by TRUI www.trui.net
  162.                 if (!file_exists($file))
  163.                 {
  164.                         print('<b>ERROR:</b> xmoov-php could not find (' . $fileName . ') please check your settings.');
  165.                         exit();
  166.                 }
  167.                 if(file_exists($file) && strrchr($fileName, '.') == '.flv' && strlen($fileName) > 2 && !eregi(basename($_SERVER['PHP_SELF']), $fileName) && ereg('^[^./][^/]*$', $fileName))
  168.                 {
  169.                         # stay clean
  170.                         @ob_end_clean();
  171.                         @set_time_limit(0);
  172.                        
  173.                         # keep binary data safe
  174.                         set_magic_quotes_runtime(0);
  175.                
  176.                         $fh = fopen($file, 'rb') or die ('<b>ERROR:</b> xmoov-php could not open (' . $fileName . ')');
  177.                                
  178.                         $fileSize = filesize($file) - (($seekPos > 0) ? $seekPos  + 1 : 0);
  179.                        
  180.                         //      SEND HEADERS
  181.                         if(!XMOOV_CONF_ALLOW_FILE_CACHE)
  182.                         {
  183.                                 # prohibit caching (different methods for different clients)
  184.                                 session_cache_limiter("nocache");
  185.                                 header("Expires: Thu, 19 Nov 1981 08:52:00 GMT");
  186.                                 header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
  187.                                 header("Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0");
  188.                                 header("Pragma: no-cache");
  189.                         }
  190.                        
  191.                         # content headers
  192.                         header("Content-Type: video/x-flv");
  193.                         header("Content-Disposition: attachment; filename=\"" . $fileName . "\"");
  194.                         header("Content-Length: " . $fileSize);
  195.                        
  196.                         # FLV file format header
  197.                         if($seekPos != 0)
  198.                         {
  199.                 print('FLV');
  200.                 print(pack('C', 1));
  201.                 print(pack('C', 1));
  202.                 print(pack('N', 9));
  203.                 print(pack('N', 9));
  204.                 }
  205.                        
  206.                         # seek to requested file position
  207.                         fseek($fh, $seekPos);
  208.                        
  209.                         # output file
  210.                         while(!feof($fh))
  211.                         {
  212.                                 # use bandwidth limiting - by Terry
  213.                                 if(XMOOV_CONF_LIMIT_BANDWIDTH)
  214.                                 {
  215.                                         # get start time
  216.                                         list($usec, $sec) = explode(' ', microtime());
  217.                                         $time_start = ((float)$usec + (float)$sec);
  218.                                         # output packet
  219.                                         print(fread($fh, $packet_size));
  220.                                         # get end time
  221.                                         list($usec, $sec) = explode(' ', microtime());
  222.                                         $time_stop = ((float)$usec + (float)$sec);
  223.                                         # wait if output is slower than $packet_interval
  224.                                         $time_difference = $time_stop - $time_start;
  225.                                        
  226.                                         # clean up
  227.                                         @flush();
  228.                                         @ob_flush();
  229.                                        
  230.                                         if($time_difference < (float)$packet_interval)
  231.                                         {
  232.                                                 usleep((float)$packet_interval * 1000000 - (float)$time_difference * 1000000);
  233.                                         }
  234.                                 }
  235.                                 else
  236.                                 {
  237.                                         # output file without bandwidth limiting
  238.                                         print(fread($fh, filesize($file)));
  239.                                 }
  240.                         }
  241.                        
  242.                 }
  243.                
  244.         }
  245. ?>

Вот единственный файл, xmoov.php, насколько я вижу по коду, он воспроизводит уже загруженные видео?
Да и как его подключить к сайту я не понял.
(Добавление)
Так я использую JWPlayer:
PHP:
скопировать код в буфер обмена
  1. echo '<script type="text/javascript" src="/jwplayer/jwplayer.js"></script>';
  2. echo '<div id="container">Loading the player ...</div>';
  3. echo '<script type="text/javascript">
  4. jwplayer("container").setup({
  5. flashplayer: "/jwplayer/player.swf",
  6. file: "'.$flash.'",
  7. height: 270,
  8. width: 480 });';
  9. echo '</script>';

$flash имеет такое значение - http://site[dot]ru/video[dot]mp4
а я хочу чтобы я видео воспроизводил якобы со своего сайта, но бралось оно с site.ru
 
 Top
DeepVarvar Супермодератор
Отправлено: 26 Июня, 2011 - 14:46:58
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




CODE (htmlphp):
скопировать код в буфер обмена
  1. RewriteEngine on
  2. RewriteBase /~quux/
  3. RewriteRule ^video/(.*)$ http://xx.xx.xx.xx:9000/$1  [P]
 
 Top
Coder1994
Отправлено: 26 Июня, 2011 - 15:45:59
Post Id


Частый гость


Покинул форум
Сообщений всего: 213
Дата рег-ции: Май 2010  
Откуда: Россия, Ростов-на-Дону


Помог: 3 раз(а)




DeepVarvar пишет:
CODE (htmlphp):
скопировать код в буфер обмена
  1. RewriteEngine on
  2. RewriteBase /~quux/
  3. RewriteRule ^video/(.*)$ http://xx.xx.xx.xx:9000/$1  [P]

Спасибо только я кое-что не понял.
RewriteBase /~quux/ - что эта строка значит?
И не могли бы вы поправить
RewriteRule ^video/(.*)$ http://xx[dot]xx[dot]xx[dot]xx:9000/$1 [P]
так как ссылки на видео выглядят так - http://domain.com/201106/10/278648/240P_286K_278648.mp4?nvb=20110625033553&nva=20110627221553&hash=0a212de433c9a36d6baa6

(Отредактировано автором: 26 Июня, 2011 - 15:57:01)

 
 Top
Coder1994
Отправлено: 27 Июня, 2011 - 17:23:32
Post Id


Частый гость


Покинул форум
Сообщений всего: 213
Дата рег-ции: Май 2010  
Откуда: Россия, Ростов-на-Дону


Помог: 3 раз(а)




DeepVarvar, ну так подскажешь?
 
 Top
DeepVarvar Супермодератор
Отправлено: 27 Июня, 2011 - 18:03:29
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Coder1994 я уже все подсказал.
Задача была скрыть реальный домен, а не писать реврайт разбора твоих переменных.
Да и самому подумать никак?
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Apache и другие веб-серверы »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB