[PHP] Envoyer et recevoir des requêtes HTTP
Résolu
KunGu
Messages postés
1169
Date d'inscription
Statut
Membre
Dernière intervention
-
KunGu Messages postés 1169 Date d'inscription Statut Membre Dernière intervention -
KunGu Messages postés 1169 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous,
J'ai besoin pour mon projet d'envoyer une en tête d'une requête GET à un serveur web, et j'ai besoin d'avoir sa réponse, ainsi que la page web qu'il est censé renvoyer.
Je m'explique :
J'envoie une requête du type :
en PHP ça me donne ça :
Seulement je récupère via fgets l'en tête de ce que m'envoie le serveur mais après une partie incompréhensible de données. Mon but étant de récupérer la page web qu'est censée afficher un navigateur, je ne sais pas si "cette partie incompréhensible de données" est cette page web "cryptée" ou si je n'ai simplement pas récupéré cette page web avec ce code.
Pouvez-vous m'éclairer ?
Merci !
J'ai besoin pour mon projet d'envoyer une en tête d'une requête GET à un serveur web, et j'ai besoin d'avoir sa réponse, ainsi que la page web qu'il est censé renvoyer.
Je m'explique :
J'envoie une requête du type :
GET / HTTP/1.1 Host: www.exemple.com Connection: keep-alive User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.65 Safari/534.24 Accept: application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5 Accept-Encoding: gzip,deflate,sdch Accept-Language: fr-FR,fr;q=0.8,en-US;q=0.6,en;q=0.4 Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
en PHP ça me donne ça :
<?php $fp = fsockopen("www.exemple", 80, $errno, $errstr, 30); if (!$fp) { echo "$errstr ($errno)<br />\n"; } else { $out = "GET / HTTP/1.1\r\n"; $out .= "Host: www.exemple.com\r\n"; $out .= "Connection: keep-alive\r\n"; $out .= "User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.65 Safari/534.24\r\n"; $out .= "Accept: application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5\r\n"; $out .= "Accept-Encoding: gzip,deflate,sdch\r\n"; $out .= "Accept-Language: fr-FR,fr;q=0.8,en-US;q=0.6,en;q=0.4\r\n"; $out .= "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3\r\n"; fwrite($fp, $out); while (!feof($fp)) { echo fgets($fp); } fclose($fp); } ?>
Seulement je récupère via fgets l'en tête de ce que m'envoie le serveur mais après une partie incompréhensible de données. Mon but étant de récupérer la page web qu'est censée afficher un navigateur, je ne sais pas si "cette partie incompréhensible de données" est cette page web "cryptée" ou si je n'ai simplement pas récupéré cette page web avec ce code.
Pouvez-vous m'éclairer ?
Merci !
A voir également:
- Requete http php
- Http - Guide
- Http //192.168.l.l - Guide
- Easy php - Télécharger - Divers Web & Internet
- Http //tv.hotelbb.com ✓ - Forum Virus
- Http //zh.ui.vmall.com/emotiondownload.php mod=restore - Forum Huawei
4 réponses
Bonjour,
d'après la description, je pencherais plutôt vers la compression que le cryptage. Pour en être sur, il suffit de supprimer la ligne
$out .= "Accept-Encoding: gzip,deflate,sdch\r\n";
En clair, on demande au serveur de nous envoyer le texte compressé avec gzip. Sans cette ligne dans la commande GET, le code HTML est envoyé 'en clair'.
d'après la description, je pencherais plutôt vers la compression que le cryptage. Pour en être sur, il suffit de supprimer la ligne
$out .= "Accept-Encoding: gzip,deflate,sdch\r\n";
En clair, on demande au serveur de nous envoyer le texte compressé avec gzip. Sans cette ligne dans la commande GET, le code HTML est envoyé 'en clair'.
Merci pour la réponse,
En effet en supprimant cette ligne j'arrive a avoir du code HTML en clair :)
Mais je n'ai pas tout, je vois sur ma page s'afficher seulement une partie de la page web que je veux récupérer ...
J'ai essayé de modifier un peu mon code au niveau du while pour qu'a lieu de m'afficher la page qu'il l'écrive dans un fichiers, seulement là je tombe sur un truc encore pire, un code tronqué complètement avec des balises à moitié fermées...
Voici mon code modifié :
Pourrais-je avoir la page web complète ?
En effet en supprimant cette ligne j'arrive a avoir du code HTML en clair :)
Mais je n'ai pas tout, je vois sur ma page s'afficher seulement une partie de la page web que je veux récupérer ...
J'ai essayé de modifier un peu mon code au niveau du while pour qu'a lieu de m'afficher la page qu'il l'écrive dans un fichiers, seulement là je tombe sur un truc encore pire, un code tronqué complètement avec des balises à moitié fermées...
Voici mon code modifié :
<?php $fp = fsockopen("www.exemple", 80, $errno, $errstr, 30); if (!$fp) { echo "$errstr ($errno)<br />\n"; } else { $out = "GET / HTTP/1.1\r\n"; $out .= "Host: www.exemple.com\r\n"; $out .= "Connection: keep-alive\r\n"; $out .= "User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.65 Safari/534.24\r\n"; $out .= "Accept: application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5\r\n"; $out .= "Accept-Language: fr-FR,fr;q=0.8,en-US;q=0.6,en;q=0.4\r\n"; $out .= "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3\r\n"; fwrite($fp, $out); while (!feof($fp)) { $data = fgets($fp); $ft = fopen ("test.txt", "r+"); fputs ($ft, $data); fclose ($ft); } fclose($fp); } ?>
Pourrais-je avoir la page web complète ?