begin process at 2010 02 10 10:50:18
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Application

 > PROXY HTTP : SAUVEZ VOS VIDEOS PREFEREES.

PROXY HTTP : SAUVEZ VOS VIDEOS PREFEREES.


 Information sur la source

Note :
9,67 / 10 - par 3 personnes
9,67 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Application Classé sous :proxy, http, server, youtube, video Niveau :Initié Date de création :16/08/2008 Vu / téléchargé :7 786 / 205

Auteur : coucou747

Ecrire un message privé
Site perso
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (6)
Ajouter un commentaire et/ou une note


 Description

COMPATIBILITE
Ce code a ete fait sous linux,
PHP Version => 5.2.4-2ubuntu5.3
les tests ont ete effectues sous firefox 3.
Ce code utilise les socket, et les forks, de memoire, je dirais qu'il n'est PAS compatible WINDOWS.
pour php, le module curl doit-etre installe.
pour l'installer sous debian :
#apt-get install php5-curl
pour l'installer sous ubuntu
$sudo apt-get install php5-curl
---------------------------------------- -----------------
PRESENTATION
Le programme qui suit est un proxy HTTP, entre autre, il permet de downloader des fichiers appelles par du flash, et de les sauvegarder sur le disque dur lors de la visite du site. fonctionne sur :
    - youtube
    - dailymotion
    - google video
    - dreamage
    - koreus
------------------------------------------- --------------
IMPERFECTIONS
Ce code est imparfait pour de nombreuses raisons :
    - il provoque des notices due a des erreurs reseaux
    - il utilise curl, ce qui fait qu'il recupere puis envoie le fichier d'un seul coup, plutot que de faire ca "progressivement", ce qui peut-etre gennant pour visiter des sites comme youtube
    - il plante au bout de 15 minutes (temps reglable)
    - son utilisation des fork nous oblige a faire un `killall php` pour fermer le programnme.
Aussi, ce programme ne doit pas servir d'exemple pour des debutants. Je le diffuse car il est utile.
------------------------------------------- --------------
BUGS CONNUS
le proxy ne transmet pas les headers, ce qui pose des problemes de charset.
le proxy ne fonctionne paas en POST et PUT
le proxy ne transmet pas les cookies
------------------------------------------ ---------------
UTILISATION
sauvez ce fichier dans : "proxy.php"
en mode console tapez : php proxy.php
configurez firefox pour utiliser un proxy http
host : localhost
port : 1792
pour configurer firefox, vous devez faire :
edition -> preferences -> avance -> reseau -> connection -> parametres -> configuration manuelle du proxy -> proxy HTTP
ensuite, il vous suffit de surfer pour que les fichiers se telechargent dans le dossier $downDir
----------------------------------------- ----------------
NOTES
php est un tres mauvais choix pour faire un serveur.
Ce code provoque des notices.

Source

  • #!/usr/bin/php
  • <?php
  • /**
  • * @date 2008-08-15
  • * @author Audouin Maxime mailto:coucou747@hotmail.com
  • * Licence : GPL
  • * ---------------------------------------------------------
  • * COMPATIBILITE
  • * Ce code a ete fait sous linux,
  • * PHP Version => 5.2.4-2ubuntu5.3
  • * les tests ont ete effectues sous firefox 3.
  • * Ce code utilise les socket, et les forks,
  • * de memoire, je dirais qu'il n'est PAS compatible WINDOWS.
  • * pour php, le module curl doit-etre installe.
  • * pour l'installer sous debian :
  • * #apt-get install php5-curl
  • * pour l'installer sous ubuntu
  • * $sudo apt-get install php5-curl
  • * ---------------------------------------------------------
  • * PRESENTATION
  • * Le programme qui suit est un proxy HTTP,
  • * entre autre, il permet de downloader des fichiers
  • * appelles par du flash, et de les sauvegarder sur le
  • * disque dur lors de la visite du site.
  • * fonctionne sur :
  • * - youtube
  • * - dailymotion
  • * - google video
  • * - dreamage
  • * - koreus
  • * ---------------------------------------------------------
  • * IMPERFECTIONS
  • * Ce code est imparfait pour de nombreuses raisons :
  • * - il provoque des notices due a des erreurs reseaux
  • * - il utilise curl, ce qui fait qu'il recupere puis
  • * envoie le fichier d'un seul coup, plutot que de
  • * faire ca "progressivement", ce qui peut-etre
  • * gennant pour visiter des sites comme youtube
  • * - il plante au bout de 15 minutes (temps reglable)
  • * - son utilisation des fork nous oblige a faire un
  • * `killall php` pour fermer le programnme.
  • * Aussi, ce programme ne doit pas servir d'exemple pour
  • * des debutants. Je le diffuse car il est utile.
  • * ---------------------------------------------------------
  • * BUGS CONNUS
  • * le proxy ne transmet pas les headers, ce qui pose des
  • * problemes de charset.
  • * le proxy ne fonctionne paas en POST et PUT
  • * le proxy ne transmet pas les cookies
  • * ---------------------------------------------------------
  • * UTILISATION
  • * sauvez ce fichier dans : "proxy.php"
  • * en mode console tapez : php proxy.php
  • * configurez firefox pour utiliser un proxy http
  • * host : localhost
  • * port : 1792
  • * pour configurer firefox, vous devez faire :
  • * edition -> preferences -> avance -> reseau ->
  • * connection -> parametres ->
  • * configuration manuelle du proxy -> proxy HTTP
  • * ensuite, il vous suffit de surfer pour que les fichiers
  • * se telechargent dans le dossier $downDir
  • * ---------------------------------------------------------
  • * NOTES
  • * php est un tres mauvais choix pour faire un serveur.
  • * Ce code provoque des warnings.
  • */
  • //---------------------------------------------------------
  • // CONF d'execution
  • //---------------------------------------------------------
  • error_reporting(E_ALL);
  • ini_set('memory_limit', 256000000);
  • //---------------------------------------------------------
  • // CONF utilisateur
  • //---------------------------------------------------------
  • // dossier de telechargement des videos
  • $downDir = 'down';
  • // extentions des fichiers a telecharger
  • $extensions_saved=array('flv', 'mpg', 'avi');
  • // mime type des fichiers a telecharger
  • $mimetype_saved=array('video/flv', 'video/x-flv');
  • // serveurs sur lesquels on ne va pas
  • $banservs=array('pub.oxado.com');
  • // port du proxy
  • $port=1792;
  • // temps d'activite du proxy
  • $minutes = 15;
  • //---------------------------------------------------------
  • // SOURCE DU PROXY
  • //---------------------------------------------------------
  • @mkdir($downDir);
  • $socket = stream_socket_server('tcp://0.0.0.0:'.$port, $n, $str);
  • if (!$socket)
  • die('Il est impossible d\'ouvrir le socket'."\n\n".$str.' ('.$n.')'."\n\n");
  • stream_set_timeout( $socket , $minutes * 60);
  • while ($conn = stream_socket_accept($socket)){
  • stream_set_timeout( $socket , $minutes * 60);
  • stream_set_timeout( $conn , $minutes * 60);
  • $pid = pcntl_fork();
  • if ($pid == -1){
  • die('fork error');
  • }else if ($pid){
  • $requette=array();
  • $retour=array();
  • while(!feof($conn)){
  • $a=fgets($conn);
  • $requette[]=$a;
  • if (!str_replace(array("\n", "\r"), array('', ''), $a))
  • break;
  • }
  • list($methode, $url, $protocol) = explode(' ',$requette[0]);
  • $serveur=explode('/', $url);
  • $serveur=$serveur[2];
  • $saved = false;
  • $allowed = false;
  • if (in_array($serveur, $banservs)){
  • $allowed=false;
  • $forbiden='serveur : '.$serveur.' interdit !';
  • }else{
  • $allowed=true;
  • // decoupe de l'url
  • $page=substr($url, strlen($serveur)+strlen('http://'));
  • $extension=explode('?', $page);
  • $extension=explode('.', $extension[0]);
  • if (count($extension)!=1)
  • $extension=$extension[count($extension)-1];
  • else $extension=false;
  • if (in_array($extension, $extensions_saved))
  • $saved = true;
  • }
  • if ($allowed){ // download
  • $ch = curl_init();
  • curl_setopt ($ch, CURLOPT_URL, $url);
  • curl_setopt ($ch, CURLOPT_HEADER, true);
  • curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);
  • curl_setopt ($ch, CURLOPT_BINARYTRANSFER, true);
  • curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, true);
  • foreach ($requette as $i=>$header)
  • if ($i!=0 && strpos($header, 'Proxy-Connection')===false)
  • curl_setopt ($ch, CURLOPT_HEADER, $header);
  • $out = curl_exec($ch);
  • $headerSize = curl_getinfo($ch, CURLINFO_HEADER_SIZE);
  • $type = curl_getinfo($ch, CURLINFO_CONTENT_TYPE);
  • if (in_array($type, $mimetype_saved)) $saved = true;
  • curl_close($ch);
  • fputs($conn, $out); // reponse
  • if ($saved) // sauvegarde
  • file_put_contents($downDir.'/'.preg_replace('/[^a-z\.]/i', '', $url), $out);
  • }else // not allowed => error message
  • fputs($conn, "HTTP 403 FORBIDEN\r\n\r\nFORBIDEN $forbiden\r\n\r\n");
  • fclose($conn);
  • exit();
  • }
  • }
  • fclose($socket);
  • ?>
#!/usr/bin/php
<?php
/**
* @date 2008-08-15
* @author Audouin Maxime mailto:coucou747@hotmail.com
* Licence : GPL
* ---------------------------------------------------------
* COMPATIBILITE
* Ce code a ete fait sous linux, 
* PHP Version => 5.2.4-2ubuntu5.3
* les tests ont ete effectues sous firefox 3.
* Ce code utilise les socket, et les forks,
* de memoire, je dirais qu'il n'est PAS compatible WINDOWS.
* pour php, le module curl doit-etre installe.
* pour l'installer sous debian :
* #apt-get install php5-curl
* pour l'installer sous ubuntu
* $sudo apt-get install php5-curl
* ---------------------------------------------------------
* PRESENTATION
* Le programme qui suit est un proxy HTTP,
* entre autre, il permet de downloader des fichiers
* appelles par du flash, et de les sauvegarder sur le
* disque dur lors de la visite du site.
* fonctionne sur :
*    - youtube
*    - dailymotion
*    - google video
*    - dreamage
*    - koreus
* ---------------------------------------------------------
* IMPERFECTIONS
* Ce code est imparfait pour de nombreuses raisons :
*    - il provoque des notices due a des erreurs reseaux
*    - il utilise curl, ce qui fait qu'il recupere puis
*        envoie le fichier d'un seul coup, plutot que de
*        faire ca "progressivement", ce qui peut-etre
*        gennant pour visiter des sites comme youtube
*    - il plante au bout de 15 minutes (temps reglable)
*    - son utilisation des fork nous oblige a faire un
*        `killall php` pour fermer le programnme.
* Aussi, ce programme ne doit pas servir d'exemple pour
* des debutants. Je le diffuse car il est utile.
* ---------------------------------------------------------
* BUGS CONNUS
* le proxy ne transmet pas les headers, ce qui pose des
* problemes de charset.
* le proxy ne fonctionne paas en POST et PUT
* le proxy ne transmet pas les cookies
* ---------------------------------------------------------
* UTILISATION
* sauvez ce fichier dans : "proxy.php"
* en mode console tapez : php proxy.php
* configurez firefox pour utiliser un proxy http
* host : localhost
* port : 1792
* pour configurer firefox, vous devez faire :
* edition -> preferences -> avance -> reseau ->
* connection -> parametres ->
* configuration manuelle du proxy -> proxy HTTP
* ensuite, il vous suffit de surfer pour que les fichiers
* se telechargent dans le dossier $downDir
* ---------------------------------------------------------
* NOTES
* php est un tres mauvais choix pour faire un serveur.
* Ce code provoque des warnings.
*/

//---------------------------------------------------------
// CONF d'execution
//---------------------------------------------------------
error_reporting(E_ALL);
ini_set('memory_limit', 256000000);

//---------------------------------------------------------
// CONF utilisateur
//---------------------------------------------------------
// dossier de telechargement des videos
$downDir = 'down';
// extentions des fichiers a telecharger
$extensions_saved=array('flv', 'mpg', 'avi');
// mime type des fichiers a telecharger
$mimetype_saved=array('video/flv', 'video/x-flv');
// serveurs sur lesquels on ne va pas
$banservs=array('pub.oxado.com');
// port du proxy
$port=1792;
// temps d'activite du proxy
$minutes = 15;

//---------------------------------------------------------
// SOURCE DU PROXY
//---------------------------------------------------------
@mkdir($downDir);
$socket = stream_socket_server('tcp://0.0.0.0:'.$port, $n, $str);
if (!$socket) 
  die('Il est impossible d\'ouvrir le socket'."\n\n".$str.' ('.$n.')'."\n\n");
stream_set_timeout( $socket , $minutes * 60);
while ($conn = stream_socket_accept($socket)){
  stream_set_timeout( $socket , $minutes * 60);
  stream_set_timeout( $conn , $minutes * 60);
  $pid = pcntl_fork();
  if ($pid == -1){
      die('fork error');
  }else if ($pid){
    $requette=array();
    $retour=array();
    while(!feof($conn)){
      $a=fgets($conn);
      $requette[]=$a;
      if (!str_replace(array("\n", "\r"), array('', ''), $a))
        break;
    }
    list($methode, $url, $protocol) = explode(' ',$requette[0]);
    $serveur=explode('/', $url);
    $serveur=$serveur[2];
    $saved = false;
    $allowed = false;
    if (in_array($serveur, $banservs)){
      $allowed=false;
      $forbiden='serveur : '.$serveur.' interdit !';
    }else{
      $allowed=true;
      // decoupe de l'url
      $page=substr($url, strlen($serveur)+strlen('http://'));
      $extension=explode('?', $page);
      $extension=explode('.', $extension[0]);
      if (count($extension)!=1)
        $extension=$extension[count($extension)-1];
      else $extension=false;
      if (in_array($extension, $extensions_saved))
        $saved = true;
    }
    if ($allowed){ // download
      $ch = curl_init();
      curl_setopt ($ch, CURLOPT_URL, $url);
      curl_setopt ($ch, CURLOPT_HEADER, true);
      curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);
      curl_setopt ($ch, CURLOPT_BINARYTRANSFER, true);
      curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, true);
      foreach ($requette as $i=>$header)
        if ($i!=0 && strpos($header, 'Proxy-Connection')===false)
          curl_setopt ($ch, CURLOPT_HEADER, $header);
      $out = curl_exec($ch);
      $headerSize = curl_getinfo($ch, CURLINFO_HEADER_SIZE);
      $type = curl_getinfo($ch, CURLINFO_CONTENT_TYPE);
      if (in_array($type, $mimetype_saved)) $saved = true;
      curl_close($ch);
      fputs($conn, $out); // reponse
      if ($saved) // sauvegarde
        file_put_contents($downDir.'/'.preg_replace('/[^a-z\.]/i', '', $url), $out);
    }else // not allowed => error message
      fputs($conn, "HTTP 403 FORBIDEN\r\n\r\nFORBIDEN $forbiden\r\n\r\n");
    fclose($conn);
    exit();
  }
}
fclose($socket);
?>

 Conclusion

c'est laid, mais ca permet de sauver ses videos preferees.

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec une capture IMAGES GENETIQUES
Source avec Zip Source avec une capture RUBIX CUBE
Source avec Zip INTERPRETEUR BRAINFUCK
Source avec une capture ECRIRE UN TEXTE EN CERCLE SUR UNE IMAGE
Source avec Zip Source avec une capture FILTRER, METTRE EN CACHE OU MAPER, OU TRIER UN ITERATEUR

 Sources de la même categorie

Source avec Zip Source avec une capture GRACENATUR V02 - CDMS: CONTAIN AND DESIGN MANAGMENT SYSTEM par sajaris
Source avec Zip SIMULBAL: SERVEUR POUR BALANCES ÉLECTRONIQUES DE LABORATOIRE... par laservert
Source avec Zip GESTION D'ESPACE MEMBRES par jmpicot
TEST DU CHI2 OU KHI2 D'INDÉPENDANCE par phpAnonyme
CLASSE PAGINATION par darkis

 Sources en rapport avec celle ci

FONCTION GET EN PHP : RECUPERER UNE PAGE SUR UN SITE DISTANT par nax333
Source avec Zip TÉLÉCHARGER LES VIDEOS DE YOUTUBE AVEC PERMALIEN DEPUIS YOUT... par amteur
Source avec Zip ALBUM PHOTOS / DIAPORAMA AVEC OU SANS MUSIQUE / PANORAMA / V... par badind
HEADER LOOKUP :: ANALYSE DU HEADER HTTP par AGG
Source avec Zip AFFICHER IP/HOTE RÉEL - IP/HOTE PROXY - INFOS BROWSER/OS par aeki

Commentaires et avis

Commentaire de Mrreivax le 17/08/2008 09:54:07 10/10

Ben franchement, ca a l'air génial!
J'ai pas encore testé, mais tout est correctement commenté.
A voir donc!

Commentaire de GillesWebmaster le 18/08/2008 07:57:07 10/10

Bien prometteur tout ça!
Et au niveau des ressources processeur, le daemon PHP gonfle énormément?

Commentaire de coucou747 le 18/08/2008 15:12:03

pas tant que ca, il passe le plus clair de son temps a attendre des connections, ou a envoyer les reponses, ou a recuperer les pages.

Commentaire de Eregon le 18/08/2008 16:16:37

Quitte à utiliser Firefox, autant prendre l'extension DownloadHelper, qui je suppose utilise le même genre de principe(regarder le mime-type).

Boh sinon ca devait être un bon exercice d'utilisation de CURL...

Commentaire de GillesWebmaster le 18/08/2008 20:36:49

nämlich!

Commentaire de Palleas_44 le 26/08/2008 20:28:10 9/10

Nice ! :)
Les variables seraient toutes en lowerCamelCase et je tomberais amoureux je pense :P

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Connaître l'ip même sous proxy! [ par Yoteco ] Bonjour,Est-ce que qqun saurais comment faire pour voir l'ip de la personne qui se connecte sur mon site meme si elle est sous proxy? J'ai déjà un scr recuperer adresse ip: prq une fonction compliquee? [ par brice0306 ] voici une fonction trouvée sur le net:[code]function get_ip() { if($_SERVER) { if($_SERVER['HTTP_X_FORWARDED_FOR']) $ip = $_SERVER['HTTP_X_FORWA Comment faire une redirection avec le nom du cadre [ par newsdev ] Bonjour à tous, Tout comme vous voyez le code source concernant la redirection simple, mais j'aimerais aussi d'en ajouter pour la redirection suivant Mauvaise adresse IP retournée [ par xylo2 ] Bonjour,Pour déterminer l'IP de mes visiteurs, j'utilise :if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])) { $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];} els identification [ par ehmarc ] salut,j'utilise ca pour faire l'identification :header('WWW-Authenticate: Basic realm="My Realm"');je voudrai savoir combien de temps sont valables le SVP ! verification si l'ip a changé ! [ par chico200987 ] Alors voici mon code : _______________________________________________________________________ &lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transi Probleme de HTTP_REFERER [ par JoJo738 ] Bonjour, J'ai un gros probleme de HTTP_REFERER en localhost. Et j'utilise ceci : <span style="font-family: 'Courier New'; font-style: normal; font-var XHTML et PHP [ par Sunflower20 ] Bonjour! J'ai quelques petits probl&#232;mes concernant le Php. Pour vous mettre dans le contexte, je suis &#233;tudiante et dans le cadre d'un cours [help] url absolue [ par valybre ] Bonjourdans mon site web, je propose des vid&#233;os &#224; visionner directement mais je veux aussi pouvoir proposer le t&#233;l&#233;chargement de c Pourquoi $_SERVER['HTTP_REFERER'] ne marche pas ? [ par ImmortalPC ] Salut, pourquoi &#231;a ne marche pas ? &lt;?php echo $_SERVER['HTTP_REFERER']; ?&gt; Je vais avt sur une autre page. @+Immortal-PC,t&#233;l&#233;char


Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,827 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales