Accueil > > > PROXY HTTP : SAUVEZ VOS VIDEOS PREFEREES.
PROXY HTTP : SAUVEZ VOS VIDEOS PREFEREES.
Information sur la source
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.
Sources du même auteur
Sources de la même categorie
Commentaires et avis
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’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
|
Derniers Blogs
SESSION SILVERLIGHT 5 3D : SLIDES ET DEMOSSESSION SILVERLIGHT 5 3D : SLIDES ET DEMOS par Groc
Durant les techdays, j'ai eu le plaisir d'animer une session sur Silverlight 5 et la 3D avec Simon Ferquel. Comme promis, voici nos slides et mes démos (celles avec le viper BSG) ici et là. Pour mémoire, les démos utilisent toutes le viper BSG...
Cliquez pour lire la suite de l'article par Groc [TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES[TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES par gpommier
Suite à la session que j'ai présenté sur WebMatrix 2, vous pouvez trouver les slides ici, ainsi que les démos en packages nuget : démos1 et démos2 J'en profite pour remercier chaleureusement tous ceux qui sont venus très nombreux à cette sess...
Cliquez pour lire la suite de l'article par gpommier [SHAREPOINT] LES SESSIONS TECHDAYS 2012.[SHAREPOINT] LES SESSIONS TECHDAYS 2012. par Patrick Guimonet
Voici donc pour ceux qui n'ont pas pu venir, ou ceux qui n'ont pas pu toutes les suivre la liste des sessions SharePoint aux TechDays 2012, que je mettrais à jour dès que les liens des vidéo seront disponibles. Ou ici : http...
Cliquez pour lire la suite de l'article par Patrick Guimonet TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE !MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE ! par Vko
Hier durant une session dédiée aux Techdays 2012, j'ai eu le plaisir d'annoncer la sortie de la Béta 2 de Mishra Reader. C'est quoi ? Pour les utilisateurs, c'est une vraie expérience de lecture de flux RSS sur Windows. Rien à voir avec les produit...
Cliquez pour lire la suite de l'article par Vko
Forum
RE : SONDAGE..RE : SONDAGE.. par phpAnonyme
Cliquez pour lire la suite par phpAnonyme RE : SONDAGE..RE : SONDAGE.. par TychoBrahe
Cliquez pour lire la suite par TychoBrahe
Logiciels
Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning
|