telecharger une page web

telecharger une page web - C++ - Programmation

Marsh Posté le 05-05-2005 à 02:23:41    

slt tlm, voila je veux telecharger une page web pour en extraire des données pour un programme.
j'ai reussi mon code tout marche mais voila je rencontre un probleme precisement avec le site qui m'interesse.
 
j'ai realisé mes test a aprtir de ce site www.facultyof1000.com
 
avec du gethostbyname("www.facultyof1000.com" );
et une requete http "GET http://www.facultyof1000.com/whatsmyip.asp HTTP/1.0\n\n";
 
bon la tout marche avec des cout j'ai tout le contenu qui s'affiche ( d'ailleur si quelqu'un connait une solution simple pour viré l'entete du html, vous savez le "HTTP/1.1 200 OK......." )
je met l'adresse du site qui m'iteresse  
gethostbyname("xoap.weather.com" );
et en requete "GET http://xoap.weather.com/weather/lo [...] y=0&unit=m HTTP/1.0\n\n";
 
mais voila quand je lis ce qui arrive a l'ecrant ce n'est pas le contenu de la page ( qui existe avec le navigateur on tombe dessus ) mais une page qui dirait plutot que la page n'existe pas sur le serveur !
 
est ce quelqu'un voit d'ou peut venir mon probleme ?


---------------
In a world without walls and fences, who needs Windows and Gates
Reply

Marsh Posté le 05-05-2005 à 02:23:41   

Reply

Marsh Posté le 05-05-2005 à 13:03:29    

hum verifie si ya pas des caractères spéciaux dans ton url qui seraient susceptibles d'être interprétés par ton compilo. Sinon pour la fin de ligne, j'aurais plutôt mis \r\n mais bon.

Reply

Marsh Posté le 05-05-2005 à 21:00:30    

jan0 a écrit :

hum verifie si ya pas des caractères spéciaux dans ton url qui seraient susceptibles d'être interprétés par ton compilo. Sinon pour la fin de ligne, j'aurais plutôt mis \r\n mais bon.


j'ai essayé avec des \r\n mais ca ne change rien et il ne semble pas y avoir de caracteres speciaux ( tu peut verifier j'ai donnée l'url )


---------------
In a world without walls and fences, who needs Windows and Gates
Reply

Marsh Posté le 05-05-2005 à 21:03:20    


 
C'est pas la peine de préciser le nom du serveur, tu es déjà dessus. Fais plutot :  
 
"GET /weather/local/FRXX0274?cc=*&par=0&prod=xoap&key=0&unit=m HTTP/1.0\n\n";


---------------
JE JE SUIS LIBERTINEEEEEEEEEEE JE SUIS UNE CATINNNNNNNNN §§§§§§§§
Reply

Marsh Posté le 05-05-2005 à 21:23:55    

ya peut être un truc spécifique a mettre dans l'en-tete http, on sait jamais. Tu peux essayer de sniffer le traffic avec ethereal en affichant la page avec ton browser
 

Citation :

http://xoap.weather.com/weather/lo [...] y=0&unit=m
 
GET /weather/local/FRXX0274?cc=*&par=0&prod=xoap&key=0&unit=m HTTP/1.1
Host: xoap.weather.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; fr-FR; rv:1.7.7) Gecko/20050414 Firefox/1.0.3
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 30
Connection: keep-alive
Referer: http://forum.hardware.fr/hardwaref [...] 9531-1.htm
 
HTTP/1.x 200 OK
Date: Thu, 05 May 2005 19:24:25 GMT
Server: Apache
Content-Type: text/plain;charset=ISO-8859-1
Keep-Alive: timeout=3, max=9
Connection: Keep-Alive
Cache-Control: private
Content-Encoding: gzip
Content-Length: 588
----------------------------------------------------------


voila ce que me donne le plugin httpheaders pour firefox ( très pratique d'ailleurs)
en espèrant que ca puisse t'aider


Message édité par jan0 le 05-05-2005 à 21:29:41
Reply

Marsh Posté le 06-05-2005 à 12:46:26    

il y a des chances que le site teste l'user agent pour etre sur que ce soit un navigateur qui accede aux données et pas un bot, ou une appli tierce.
nous on a le probleme contraire avec les site WAP, on doit faire passer le navigateur pour un telephone pour aller sur les sites :pt1cable:
 
essaye de te faire passer pour un navigateur [:spamafote]
je ne saurais comment te dire par contre :/


---------------
Leboncoin vers RSS | Je pisse sur les 4pat' mixer et sur les Bi impuissants  :o
Reply

Marsh Posté le 06-05-2005 à 12:53:57    

nekromanttiK a écrit :


essaye de te faire passer pour un navigateur [:spamafote]
je ne saurais comment te dire par contre :/


ben suffit de modifier le user-agent, j'ai oui dire que certains plugins utilisaient ce genre de ficelle... [:cupra]


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 06-05-2005 à 14:23:20    

ce que je voulais dire c'est comment le faire specifiquement dans son programme (en c++).
 
en fait, en regardant un peu sur google, c'est simplement dans la requete à envoyer.


---------------
Leboncoin vers RSS | Je pisse sur les 4pat' mixer et sur les Bi impuissants  :o
Reply

Marsh Posté le 07-05-2005 à 09:22:10    

nekromanttiK a écrit :

ce que je voulais dire c'est comment le faire specifiquement dans son programme (en c++).
 
en fait, en regardant un peu sur google, c'est simplement dans la requete à envoyer.


e nfait pas besoin, j'ai changé ma requete en ca : "GET /weather/lo [...] y=0&unit=m HTTP/1.0\r\nHost: xoap.weather.com\r\n\r\n";  
 
par contre je comprends pas si je remplace HTTP/1.0 par HTTP/1.1 bas ca marche pas une idée


---------------
In a world without walls and fences, who needs Windows and Gates
Reply

Marsh Posté le 30-06-2005 à 10:37:53    

Salut tout le monde !
 
j'ai repris le mem code que toi, j'ai copié les header de firefox : ca marche sur certain site (genre celui que tu donnes en exemple), mais pas sur d'autres : www.trup.net : on dirait que le contenu est crypté ou compressé...
 
quelqu'un a une idée de comment le récupérer nickel ?
 
les header arrives correctement, mais pas la page... je vous le mets en dessous :
 

Citation :


HTTP/1.1 200 OK
Date: Thu, 30 Jun 2005 08:35:42 GMT
Server: Apache
X-Powered-By: PHP/4.3.11
Connection: close
Content-Type: text/html
Content-Encoding: gzip
Content-Length: 2711
 
zëÝEÐnÀ♂4╗çªÀ¸phëÂ┘PóJRv|ݲΥ↔|┐ÔfHIûlo#Õ░8Ó░☺∟ïúÖÅ├Ö◄g8‗pn↕1>∟╬↓ìÃçC├ì`Ò¸´■Æ◄ƒ|
»d×1↕3‗NFw亱◄úQnÏUãÊÿªå─9¨Q¬x↑:╣├♥ÇHÿídnLµ│Å9_î╝ù25,5■¹Uã<↕╣Ð╚3ýÌä8²§ëµTifF\K ¨
¾g⌂‗¤<↕:4┴Ë;óÿ↑y:Ü│ä♠»^zd«Ïtõß∟ùaÿÕJ♦R═┬8
Ö`      ÇÙ­,8♂+♀½QJ‼6‗ö£HúkZ╝x¹Í±5©ÿû╣èÿoÜ*Ã2╩◄⌂ƒ─ékn|:5L&#305;$×æÿ«¶.?══\n↑ (rÃûî¯Ë9
Ä☻AËYNgáïÁ☻►▀¢~y~zqQøj¬³Î´vg☻ÚÿÚH±╠pÖÍ°o©aDNº<ÔLá'gò╗&#305;»╗;♣w#ïáõÁói─╚%┴p┘;±↔[-ü┐n
,µ þc┼D♥ÆIÓR4µ↕#s@Æ\♥{&h─&↕$©Zðö♫ê`1¨╦2♠qb╣°Ã£╣ª╔╣í
ã‼¬Á²2Ó▲^►╩¹♥↕½<q ¬FLü♫é♂☺¼Z
╚éÑ╣&♠BÆâ"á£C£♥P&à kd¶<!9HR.►ó♣§gB╦t6 ↨↨↨└─üÃ‗J╦3ßrªh6Gk$Ȭ↔¾¿ñÝuº╬'▼XdjÌ|☼kÞ∟7
S←7v嵶 Mö OB³¸°■ ë´▀$©]P↕L#E┬¹@↨ÈQ=TÓë´▼▲∟L¾4┬ð┼░╚│c┴Yèû♥4r♫.£CãÇï‼☻ýƒÓs░áè▄ô◄9
♠4ãÊ p╣x├°ln u↨r'$|zUr»Â╣ ╩c3µ
╗ã£☺¾↕V+ùüäòÍuéL♀6▬‼╚┘#4╣æ┘╚Ù»·Ì@░;)Ï¡⌂☼ùK─åÙB◄á╠¡n@*ªÙ{Ì        N¸O°Èmɼl*e·XÕ‼à
±~R«↓‗/¿


---------------
Akewea [TRUp]
Reply

Marsh Posté le 30-06-2005 à 10:37:53   

Reply

Marsh Posté le 30-06-2005 à 10:44:27    

C'est tout simplement gzippé ( en même temps, c'est marqué dans le header... ), il me semble que dans ta requète tu peut préciser que tu veut pas de contenu gzippé  (cf. la RFC du protocole HTTP ;) ) sinon c'est pas sorcier a décompresser avec la lib kivabieng ...


---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
Reply

Marsh Posté le 30-06-2005 à 10:46:51    

akewea a écrit :

Salut tout le monde !
 
j'ai repris le mem code que toi, j'ai copié les header de firefox : ca marche sur certain site (genre celui que tu donnes en exemple), mais pas sur d'autres : www.trup.net : on dirait que le contenu est crypté ou compressé...
 
quelqu'un a une idée de comment le récupérer nickel ?
 
les header arrives correctement, mais pas la page... je vous le mets en dessous :
 

Citation :


HTTP/1.1 200 OK
Date: Thu, 30 Jun 2005 08:35:42 GMT
Server: Apache
X-Powered-By: PHP/4.3.11
Connection: close
Content-Type: text/html
Content-Encoding: gzip
Content-Length: 2711
 
zëÝEÐnÀ♂4╗çªÀ¸phëÂ┘PóJRv|ݲΥ↔|┐ÔfHIûlo#Õ░8Ó░☺∟ïúÖÅ├Ö◄g8‗pn↕1>∟╬↓ìÃçC├ì`Ò¸´■Æ◄ƒ|
»d×1↕3‗NFw亱◄úQnÏUãÊÿªå─9¨Q¬x↑:╣├♥ÇHÿídnLµ│Å9_î╝ù25,5■¹Uã<↕╣Ð╚3ýÌä8²§ëµTifF\K ¨
¾g⌂‗¤<↕:4┴Ë;óÿ↑y:Ü│ä♠»^zd«Ïtõß∟ùaÿÕJ♦R═┬8
Ö`      ÇÙ­,8♂+♀½QJ‼6‗ö£HúkZ╝x¹Í±5©ÿû╣èÿoÜ*Ã2╩◄⌂ƒ─ékn|:5L&#305;$×æÿ«¶.?══\n↑ (rÃûî¯Ë9
Ä☻AËYNgáïÁ☻►▀¢~y~zqQøj¬³Î´vg☻ÚÿÚH±╠pÖÍ°o©aDNº<ÔLá'gò╗&#305;»╗;♣w#ïáõÁói─╚%┴p┘;±↔[-ü┐n
,µ þc┼D♥ÆIÓR4µ↕#s@Æ\♥{&h─&↕$©Zðö♫ê`1¨╦2♠qb╣°Ã£╣ª╔╣í
ã‼¬Á²2Ó▲^►╩¹♥↕½<q ¬FLü♫é♂☺¼Z
╚éÑ╣&♠BÆâ"á£C£♥P&à kd¶<!9HR.►ó♣§gB╦t6 ↨↨↨└─üÃ‗J╦3ßrªh6Gk$Ȭ↔¾¿ñÝuº╬'▼XdjÌ|☼kÞ∟7
S←7v嵶 Mö OB³¸°■ ë´▀$©]P↕L#E┬¹@↨ÈQ=TÓë´▼▲∟L¾4┬ð┼░╚│c┴Yèû♥4r♫.£CãÇï‼☻ýƒÓs░áè▄ô◄9
♠4ãÊ p╣x├°ln u↨r'$|zUr»Â╣ ╩c3µ
╗ã£☺¾↕V+ùüäòÍuéL♀6▬‼╚┘#4╣æ┘╚Ù»·Ì@░;)Ï¡⌂☼ùK─åÙB◄á╠¡n@*ªÙ{Ì        N¸O°Èmɼl*e·XÕ‼à
±~R«↓‗/¿



 
Effectivement, il y a de fortes chances que ce soit encoder :D  
Edit : [:benou_grilled]


Message édité par esox_ch le 30-06-2005 à 10:47:55

---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 30-06-2005 à 11:06:10    

0x90 a écrit :

C'est tout simplement gzippé ( en même temps, c'est marqué dans le header... ), il me semble que dans ta requète tu peut préciser que tu veut pas de contenu gzippé  (cf. la RFC du protocole HTTP ;) ) sinon c'est pas sorcier a décompresser avec la lib kivabieng ...


 
 
il suffit aussi de ne pas prétendre supporter des fonctionnalités qu'on ne supporte pas :o

Reply

Marsh Posté le 30-06-2005 à 11:10:18    

merci pour la précision, et désolé pour l'evidence... c'est bien ce qu'il me semblait...  :ange:  
 
Pour la décompresion, j'ai jamais fait... :??:  un petit coup de pouce que quelqu'un ?
 
Merci !


Message édité par akewea le 30-06-2005 à 11:11:24

---------------
Akewea [TRUp]
Reply

Marsh Posté le 30-06-2005 à 13:04:25    

akewea a écrit :

merci pour la précision, et désolé pour l'evidence... c'est bien ce qu'il me semblait...  :ange:  
 
Pour la décompresion, j'ai jamais fait... :??:  un petit coup de pouce que quelqu'un ?
 
Merci !


je pense qu'avec ca dans en plus ta requete ca peut aider :  

Code :
  1. "Accept: text/html\r\n"


Message édité par carot0 le 30-06-2005 à 13:04:38

---------------
In a world without walls and fences, who needs Windows and Gates
Reply

Marsh Posté le 30-06-2005 à 14:14:54    

En fait, j'ai trouvé ce qui clochait : quand j'enlèvevait le "Accept-Encoding", rien n'arrivait à part les en-tête, d'où ma demande de décompression. En mettant un boucle sur la reception des données, cela fonctionne...
 
Je pense que c'etait la page qui était plus grande que mon buffer... Maintenant, ca marche à merveille ! ;) et sans accepter les données compressées....
 
Merci à tous pour votre aide !


---------------
Akewea [TRUp]
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed