begin process at 2012 02 12 09:44:07
  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é :10 524 / 243

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 PHPREPOGENERATOR + REPO (WIN) par alvinp
Source avec Zip IPHONE - ICÔNE D'APPEL TÉLÉPHONIQUE SUR L'ÉCRAN D'ACCUEIL par Rainbow
Source avec Zip Source avec une capture [APP WEB]SERVEUREXPLOREUR par thematrix01
Source avec Zip Source avec une capture MY.BOOKMARKS par inwebo
Source avec Zip M.V.C M.E.D par faceme

 Sources en rapport avec celle ci

FORMATER UN LIEN YOUTUBE, DAILYMOTION OU VIMEO POUR L'UTILIS... par kgb93
RÉCUPÉRER LES MINIATURES D'UNE VIDÉO YOUTUBE par tefa24600
Source avec Zip Source avec une capture WEB MESSENGER par EvildarkEurope
FONCTION GET EN PHP : RECUPERER UNE PAGE SUR UN SITE DISTANT par nax333
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 administrateur CS

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

Variables inconnues dans $_SERVER [ par jjth1 ] Bonjour à tous! J'avais mis un petit script sur mon serveur afin de détecter les utilisateurs de proxy transparents, un truc tout simple. Bizzaremen une adresse ip spéciale [ par piere2 ] Bonjour à tous, Depuis quelques temps j'ai mis en place un petit script php pour récupérer des informations de base sur les visiteurs d'un site. pour Générateur de cartes de visites [ par spectroman ] Bonjour, j&#8217;essaie de faire fonctionner le générateur de cartes de visites trouvé sur la page http://www.devinrolsen.com/realtime-image-typesetti feed atom youtube et attributs [ par bj33 ] salutles feeds atom, jamais je ne m'y serait intéréssé sans l'essai d'accès avec php à mes playlistes youtube, donc, je n'y connais rien ou peu.je ne Problème avec $_SERVER['HTTP_REFERER'] [ par lapoche21 ] Bonjour, j'ai édité un code en php utilisant $_SERVER['http_referer'] et la fonction marche bien avec firefox et sous IE8 sa bug. Message erreur : No video youtube sur mon site mais juste par le lien [ par vegetalain ] Salut, j'espère être dans la bonne catégorie... bon alors voilà, j'aimerais faire en php une sorte de mini gallerie video, genre on clique sur une min proxy [ par REMqb ] Comment se connecter à un site web en passant par un proxy avec ces variables :(ce sont des exemples)$proxy = 'http://192.168.1.1';et$adresse = 'http: recuperer l'ip [ par putch ] bonjour à tous ceux qui liront ce message !voila je m'interroge sur la manière de récuperer l'ip du visiteur.j'utilise actuellement la fonction suivan sortir d'une boucle [ par rich25200 ] bonjour,je recupere la langue du navigateur d'un visiteur en fesant ce code :if ($userlang=="") { $userlang=$_SERVER['HTTP_ACCEPT_LANGUAGE']; $userlan wamp et $HTTP_SERVER_VARS [ par caviar ] saluté ... la config par defaut de wamp ne semble plus reconnaître le $HTTP_SERVER_VARS mais uniquement le $_SERVER ... pas très pratique pour le


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

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,842 sec (4)

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