|
Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
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.
Fichier Zip
Pour les "Membres Club", vous pouvez 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
Sources de la même categorie
Sources en rapport avec celle ci
Commentaires et avis
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 : _______________________________________________________________________ <!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èmes concernant le Php. Pour vous mettre dans le contexte, je suis étudiante et dans le cadre d'un cours
[help] url absolue [ par valybre ]
Bonjourdans mon site web, je propose des vidéos à visionner directement mais je veux aussi pouvoir proposer le téléchargement de c
Pourquoi $_SERVER['HTTP_REFERER'] ne marche pas ? [ par ImmortalPC ]
Salut, pourquoi ça ne marche pas ? <?php echo $_SERVER['HTTP_REFERER']; ?> Je vais avt sur une autre page. @+Immortal-PC,téléchar
|
Téléchargements
Logiciels à télécharger sur le même thème :
Comparez les prix Nouvelle version

HTC Touch HD
Entre 25€ et 605€
|