Un paragraphe pour les cookies ?

Signaler
Messages postés
107
Date d'inscription
lundi 7 février 2011
Statut
Membre
Dernière intervention
17 février 2018
-
Messages postés
107
Date d'inscription
lundi 7 février 2011
Statut
Membre
Dernière intervention
17 février 2018
-
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'envoie les paramètres suivants:

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

ensuite je boucle sur le recv() et ça marche, je reçois un header de réponse ainsi que 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:

"Cookie: WT_FPC=id\r\n"
"Cookie: WT_FPC:id\r\n"
"Set-Cookie: WT_FPC=id\r\n"
"Set-Cookie: WT_FPC:id\r\n"

Mais aucun de ces essais ne fonctionne car je ne reçois plus rien sur le recv().
J'en conclus que ma syntaxe doit-être mauvaise ou que je l'ai insérée au mauvais endroit ou qu'il faut rajouter quelque chose (un sous-titre, un paragraphe?...)
Quelqu'un aurai-il une idée.
Merci

5 réponses

Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
41
Bonjour,

La norme http dit que tu dois faire GET / HTTP/1.1
le domaine est passé dans le champ HOST

Cordialement,

Maxime
Messages postés
107
Date d'inscription
lundi 7 février 2011
Statut
Membre
Dernière intervention
17 février 2018

Excuse-moi, mais je ne comprends pas la réponse. Si tu regardes mon message précédent j'ai bien le HTTP/1.1 au bout du GET et le domaine dans le champ HOST !!!
D'ailleurs je dis que ça marche sans problème tant que je ne cherche pas à faire comme firefox c'est à dire à rajouter le cookie. Ma question portait sur comment insérer le cookie dans le header ?
Si je n'ai pas compris ce que tu voulais dire, peux-tu expliciter STP ?
Merci
Messages postés
107
Date d'inscription
lundi 7 février 2011
Statut
Membre
Dernière intervention
17 février 2018

Complément d'infos
En fait quand je dis dans mon 1er message qu'avec le cookie positionné là où je le mets je ne reçois plus rien, ce n'est pas tout à fait exact (je n'avais pas attendu assez longtemps) car au bout de exactement 5mn je reçois le message:
408 Request Time-out
Server timeout waiting for the HTTP request from the client
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
Messages postés
354
Date d'inscription
dimanche 3 juin 2001
Statut
Membre
Dernière intervention
11 mars 2013

Cookie est bien un header http.

Tu peux jetter un oeil à la RFC (ouais, c'est assez indigeste à lire, mais des fois c'est utile): http://www.ietf.org/rfc/rfc2109.txt

Il y'a un exemple qui a l'air pas trop mal entre les pages 11 et 12.

Un autre conseil: comme tu as un protocol en mode texte (HTTP donc), tu peux sans autre debuger avec telnet. C'est des fois pratique pour tester tes requêtes. Des fois pas ;-)
Messages postés
107
Date d'inscription
lundi 7 février 2011
Statut
Membre
Dernière intervention
17 février 2018

Merci pour l'adresse du site, très intéressant. Cependant l'exemple donné ne montre que l'envoi du cookie seul, ce que je n'arrive pas à voir c'est s'il faut faire un envoi spécifique pour transmettre le cookie seul ou si on peut le mettre avec le reste du header (qui contient les autres éléments: agent, host, etc...). La console de firefox semble dire que firefox envoie tout en même temps le reste du header avec le cookie, or moi quand je le fais le serveur reste en attente de recevoir une requête jusqu'au déclenchement du time-out alors que si je ne mets pas le cookie dans le header le serveur répond en envoyant la première page.
Merci