sockets et cookies ?

sockets et cookies ? - API Win32 - Programmation

Marsh Posté le 10-12-2011 à 19:12:36    

Bonjour,
Depuis quelques jours j'essaie de simuler une connexion à un site (par exemple: developpez.com) par programme en C avec les sockets tout en me faisant passer pour firefox.
Sur le send() j'initialise mon buffer avec les paramètres suivants:
 

Code :
  1. "GET http://windows.developpez.com/ HTTP/1.1\r\n"; // URL appelée
  2. // header du buffer
  3. "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n";
  4. "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7\r\n";
  5. "Accept-Encoding: qzip, deflate\r\n";
  6. "Accept-Language: fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3\r\n";
  7. "Connection: keep-alive\r\n";
  8. "Host: web.developpez.com\r\n";
  9. "User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:6.0.2) Gecko/20100101 Firefox/6.0.2\r\n";
  10. "\r\n" // ligne vide => fin du header


 
ensuite je boucle sur le recv() et ça marche, je reçois un header de réponse suivi de la 1ère page du site dans mon buffer qu'au fur et à mesure des boucles je recopie dans un fichier.
 
Seulement je ne simule pas exactement ce que fait firefox car quand je regarde avec la console web de firefox ce que fait firefox sur le send(), il m'indique qu'en même temps qu'un buffer identique au mien ci-dessus il envoie un cookie tout simple: WT_FPC:id
Je voudrais en faire autant mais j'ignore sous quelle forme ce cookie est envoyé. J'ai fait plusieurs essais en rajoutant dans mon header ci-dessus une des lignes ci-dessous juste avant la ligne vide:
 

Code :
  1. "Cookie: WT_FPC=id\r\n"
  2. "Cookie: WT_FPC:id\r\n"
  3. "Set-Cookie: WT_FPC=id\r\n"
  4. "Set-Cookie: WT_FPC:id\r\n"


 
Mais aucun de ces essais ne fonctionne car je ne reçois plus de réponse sur le recv(). Et au bout de 5mn je reçois le message:
408 Request Time-out
Server timeout waiting for the HTTP request from the client
 
Quelle est la bonne syntaxe et qu'est-ce que le serveur attend de moi ? Je rappelle que j'ai simplement voulu simuler ce que je vois que firefox fait via sa console web!
Merci

Reply

Marsh Posté le 10-12-2011 à 19:12:36   

Reply

Marsh Posté le 11-12-2011 à 20:37:47    

Salut,
 
Tu peux commencer par observer ce que fait firefox avec wireshark.
 
Sinon, tu peux regarder les sources de wget , ou bien de curl , ils implémentent tout 2 le protocole HTTP.  
 

Reply

Marsh Posté le 12-12-2011 à 13:16:58    

Je vais voir ce que c'est wireshark, mais est-ce à dire que la console web de firefox n'est pas suffisante pour voir ce qui est envoyé et reçu ?
Merci

Reply

Marsh Posté le 12-12-2011 à 14:15:19    

Non pas forcément, je ne connais pas la console firefox. Mais wireshark est spécialement prévu pour espionner le réseau ( il ne loupe rien ) , et à des fonctions puissantes de filtrage.

Reply

Marsh Posté le 13-12-2011 à 12:01:34    

Sous Firefox: onglet Outils>Développeur Web>Console Web => une sous-fenêtre vide s'affiche.
Puis faire un copié-collé dans le champ adresse du site vers lequel on veut se connecter et cliquer sur ENTREE.
Tous les GET envoyés par firefox s'affichent dans la sous-fenêtre de la console. Lorsque ensuite on clique sur un des GET affichés une autre fenêtre s'affiche avec le détail du header envoyé avec le GET et le détail de ce qui a été reçu en réponse au GET.
Mais j'essaie de trouver une doc en français de wireshark.
Merci

Reply

Marsh Posté le 16-12-2011 à 16:48:50    

Bonjour,
Je viens d'installer Wireshark.
Il a l'air de fonctionner, mais à chaque lancement il me sort l'erreur suivante:
 
"Lua: Error during loading:
cannot open C:\Program Files\...\wireshark\console.lua
No such file or directory"
 
Je passe outre et tout a l'air de fonctionner correctement pour l'utilisation que j'en ai (je ne connais pas suffisamment pour savoir s'il manque des fonctions que je n'utilise pas).
 
Ce qui est bizarre c'est que le fichier console.lua est bien présent sous la directory wireshark et que je n'ai pas de problème pour l'ouvrir par exemple avec le bloc-notes.
 
Quelqu'un aurait-il déjà eu ce problème ou aurait-il une idée ?
Merci.

Reply

Sujets relatifs:

Leave a Replay

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