Proxy http : sauvez vos videos preferees.

Soyez le premier à donner votre avis sur cette source.

Vue 12 530 fois - Téléchargée 411 fois

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 / Exemple :


#!/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.

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
130
Date d'inscription
lundi 12 décembre 2005
Statut
Membre
Dernière intervention
19 avril 2009

Nice ! :)
Les variables seraient toutes en lowerCamelCase et je tomberais amoureux je pense :P
Messages postés
496
Date d'inscription
mercredi 30 juin 2004
Statut
Membre
Dernière intervention
29 juillet 2009
1
nämlich!
Messages postés
17
Date d'inscription
lundi 3 septembre 2007
Statut
Membre
Dernière intervention
26 octobre 2009

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...
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
30
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.
Messages postés
496
Date d'inscription
mercredi 30 juin 2004
Statut
Membre
Dernière intervention
29 juillet 2009
1
Bien prometteur tout ça!
Et au niveau des ressources processeur, le daemon PHP gonfle énormément?
Afficher les 6 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.