Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2466 connectés 

  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  [C#] Créer des cookie

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C#] Créer des cookie

n°1904904
fffff2mpl4
quoi mon pseudo ?
Posté le 13-07-2009 à 13:28:08  profilanswer
 

Bonjour,
 
dans mon application j'ai besoin de faire des requètes à un site qui demande une authentification (utilisateur + mot de passe).
Je souhaite donc pouvoir créer un cookie puis le joindre à mes requètes.
 
Ce que j'ai réussi à faire c'est de regarder dans le dossier cookies d'IE et si le cookie existe je l'utilise.
Mais s'il n'est pas présent il est préférable que mon application le crée à partir des données que l'utilisateur aura entrées.
 
J'ai fait pleins de recherches, essayé plein de codes mais en vain....
 
Un petit coup de pouce SVP

mood
Publicité
Posté le 13-07-2009 à 13:28:08  profilanswer
 

n°1904910
Modération
Posté le 13-07-2009 à 14:04:12  answer
 
n°1904911
pikti
I’ve done worse
Posté le 13-07-2009 à 14:04:50  profilanswer
 

Oula, tu as dû beaucoup chercher vu la complexité et la rareté de ce type de code :D
Exemple :
 

Code :
  1. // Si les cookies sont autorisés
  2. if (this.Page.Request.Browser.Cookies)
  3. {
  4.     HttpCookie monCookie = new HttpCookie(COOKIE_NAME);
  5.     monCookie["IDENTIFIANT"] = this.txtIdentifiant.Text;
  6.     monCookie["MOTDEPASSE"] = this.txtMotDePasse.Text;
  7.     monCookie.Expires = DateTime.MaxValue;
  8.     this.Page.Response.Cookies.Add(monCookie);
  9. }
  10. // exemple pour l'effacer  
  11. // Si le cookie existe
  12. if (this.Page.Request.Cookies[COOKIE_NAME] != null)
  13. {
  14. // On positionne la date d'expiration du cookie pour l'effacer
  15.     this.Page.Request.Cookies[COOKIE_NAME].Expires = DateTime.Now;
  16.     this.Page.Response.Cookies.Add(Request.Cookies[COOKIE_NAME]);
  17. }


 
edit : over-burné, magnifique RTFM de la modération (je débarque, j'avais jamais vu  :D )


Message édité par pikti le 13-07-2009 à 14:16:24
n°1904933
fffff2mpl4
quoi mon pseudo ?
Posté le 13-07-2009 à 15:54:46  profilanswer
 

Merci pour la réponse mais j'avais déjà trouvé ce genre de code et je n'arrive pas à les faire tourner.
Je vais essayé d'être plus explicite :
Je souhaite écrire une fonction qui, étant donnés un user et un pass, fait une requète sur le site www.megaupload.com écrit un cookie dans un fichier.
(biensur le client doit être en possession d'un compte premium chez megaupload)
 
Désolé si ca vous parrait évident mais je débute en programmation.

n°1904936
Tamahome
⭐⭐⭐⭐⭐
Posté le 13-07-2009 à 16:07:02  profilanswer
 

euh si tu n'arrives pas a faire tourner un exemple comme ca, fais autre chose, lache la prog :/


---------------
Hobby eien /人◕ ‿‿ ◕人\
n°1904937
fffff2mpl4
quoi mon pseudo ?
Posté le 13-07-2009 à 16:08:15  profilanswer
 

Pour l'instant j'ai écrit ca :
 

Code :
  1. public static void WriteCookie()
  2.         {
  3.            
  4.             HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://www.megaupload.com/?c=login" ); 
  5.             request.Method = "POST";
  6.             request.Accept = "image/jpeg, application/x-ms-application, image/gif, application/xaml+xml, image/pjpeg, application/x-ms-xbap, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-shockwave-flash, */*";
  7.             request.Credentials = new NetworkCredential(username, password);
  8.             HttpWebResponse response = (HttpWebResponse)request.GetResponse();
  9.            
  10.             foreach (Cookie c in response.Cookies)
  11.             {
  12.                 File.WriteAllText(@"c:\test.txt", c.Value);
  13.             }

n°1904938
fffff2mpl4
quoi mon pseudo ?
Posté le 13-07-2009 à 16:09:09  profilanswer
 

Tamahome a écrit :

euh si tu n'arrives pas a faire tourner un exemple comme ca, fais autre chose, lache la prog :/


 
merci pour les encouragements  :pt1cable:

n°1904939
Tamahome
⭐⭐⭐⭐⭐
Posté le 13-07-2009 à 16:09:28  profilanswer
 

je doute que ca compile...


---------------
Hobby eien /人◕ ‿‿ ◕人\
n°1904940
Tamahome
⭐⭐⭐⭐⭐
Posté le 13-07-2009 à 16:10:32  profilanswer
 

fffff2mpl4 a écrit :


 
merci pour les encouragements  :pt1cable:


 
tu vas passer 50 ans a faire un truc que n'importe qui ferait en 2 secondes, après si tu aimes perdre ton temps...
Le fait que tu n'es meme pas pris la peine de chercher sur google prouve ton manque de motivation. Tu abandonneras rapidement, c'est un fait.


---------------
Hobby eien /人◕ ‿‿ ◕人\
n°1904944
fffff2mpl4
quoi mon pseudo ?
Posté le 13-07-2009 à 16:12:00  profilanswer
 

si ca compile mais ca ne fait rien

mood
Publicité
Posté le 13-07-2009 à 16:12:00  profilanswer
 

n°1904946
Tamahome
⭐⭐⭐⭐⭐
Posté le 13-07-2009 à 16:13:23  profilanswer
 

y'a aucun using, il manque au moins une accolade fermante etc... et ca compile ?  
 
Mais oui bien sur...
 
edit : meme en rajoutant }

Citation :


Erreur 1 Le type ou le nom d'espace de noms 'HttpWebRequest' est introuvable (une directive using ou une référence d'assembly est-elle manquante ?) C:\DevTemp\TestConsoleDivers\TestHFR\TestHFR\Program.cs 12 4 TestHFR
Erreur 2 Le type ou le nom d'espace de noms 'HttpWebRequest' est introuvable (une directive using ou une référence d'assembly est-elle manquante ?) C:\DevTemp\TestConsoleDivers\TestHFR\TestHFR\Program.cs 12 30 TestHFR
Erreur 3 Le nom 'WebRequest' n'existe pas dans le contexte actuel C:\DevTemp\TestConsoleDivers\TestHFR\TestHFR\Program.cs 12 45 TestHFR
Erreur 4 Le type ou le nom d'espace de noms 'NetworkCredential' est introuvable (une directive using ou une référence d'assembly est-elle manquante ?) C:\DevTemp\TestConsoleDivers\TestHFR\TestHFR\Program.cs 16 30 TestHFR
Erreur 5 Le nom 'username' n'existe pas dans le contexte actuel C:\DevTemp\TestConsoleDivers\TestHFR\TestHFR\Program.cs 16 48 TestHFR
Erreur 6 Le nom 'password' n'existe pas dans le contexte actuel C:\DevTemp\TestConsoleDivers\TestHFR\TestHFR\Program.cs 16 58 TestHFR
Erreur 7 Le type ou le nom d'espace de noms 'HttpWebResponse' est introuvable (une directive using ou une référence d'assembly est-elle manquante ?) C:\DevTemp\TestConsoleDivers\TestHFR\TestHFR\Program.cs 18 4 TestHFR
Erreur 8 Le type ou le nom d'espace de noms 'HttpWebResponse' est introuvable (une directive using ou une référence d'assembly est-elle manquante ?) C:\DevTemp\TestConsoleDivers\TestHFR\TestHFR\Program.cs 18 32 TestHFR
Erreur 9 Le type ou le nom d'espace de noms 'Cookie' est introuvable (une directive using ou une référence d'assembly est-elle manquante ?) C:\DevTemp\TestConsoleDivers\TestHFR\TestHFR\Program.cs 20 13 TestHFR
Erreur 10 Le nom 'File' n'existe pas dans le contexte actuel C:\DevTemp\TestConsoleDivers\TestHFR\TestHFR\Program.cs 21 5 TestHFR

Message cité 1 fois
Message édité par Tamahome le 13-07-2009 à 16:14:53

---------------
Hobby eien /人◕ ‿‿ ◕人\
n°1904947
fffff2mpl4
quoi mon pseudo ?
Posté le 13-07-2009 à 16:14:48  profilanswer
 

Tamahome a écrit :


 
tu vas passer 50 ans a faire un truc que n'importe qui ferait en 2 secondes, après si tu aimes perdre ton temps...
Le fait que tu n'es meme pas pris la peine de chercher sur google prouve ton manque de motivation. Tu abandonneras rapidement, c'est un fait.


 
Si tu as lu mon premier post j'ai déja fait des recherches. Je suis très motivé aussi.
Je poste un message quand vraiment je sèche.
Ici c'est peut etre à cause de mon manque de connaissance sur le protocole HTTP.
Mon application est presque terminée, c'est une des dernières fonctions qu'il me manque

n°1904951
fffff2mpl4
quoi mon pseudo ?
Posté le 13-07-2009 à 16:16:47  profilanswer
 

Tamahome a écrit :

y'a aucun using, il manque au moins une accolade fermante etc... et ca compile ?  
 
Mais oui bien sur...
 
[/quote]


 
T'es de mauvaise foie là. Tu te doute bien que j'ai recopié uniquement la fonction qui m'intéresse et pas tout le fichier.
Et OK en faisant le copier coller j'ai oublié }

n°1904952
Tamahome
⭐⭐⭐⭐⭐
Posté le 13-07-2009 à 16:18:29  profilanswer
 

non mais tu veux qu'on t'aide, tu crois qu'on va passer en plus du temps à essayer de décrypter ton bout de code pour le faire marcher ?  
 
Poste deja un truc qui compile, on verra ce qu'on pourra faire apres !


---------------
Hobby eien /人◕ ‿‿ ◕人\
n°1904956
fffff2mpl4
quoi mon pseudo ?
Posté le 13-07-2009 à 16:24:34  profilanswer
 

OK voila :
 

Code :
  1. using System;
  2. using System.Text;
  3. using System.IO;
  4. using System.Net;
  5. using System.Web;
  6. namespace ConsoleApplication1
  7. {
  8.     public class Auth
  9.     {
  10.         private static string username = "user";
  11.         private static string password = "pass";
  12.         public static void CreateCookie()
  13.         {
  14.             HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://www.megaupload.com/?c=login" );
  15.             request.Method = "POST";
  16.             request.Accept = "image/jpeg, application/x-ms-application, image/gif, application/xaml+xml, image/pjpeg, application/x-ms-xbap, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-shockwave-flash, */*";
  17.             request.Referer = "http://www.megaupload.com/?c=login";
  18.             request.UserAgent = "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.2; Tablet PC 2.0)";
  19.             request.Credentials = new NetworkCredential(username, password);
  20.             HttpWebResponse response = (HttpWebResponse)request.GetResponse();
  21.             Console.WriteLine(response.Cookies.Count);
  22.             foreach (Cookie c in response.Cookies)
  23.             {
  24.                 Console.WriteLine(c.Value);
  25.                 File.WriteAllText(@"c:\test.txt", c.Value);
  26.             }
  27.         }
  28.     }
  29. }

n°1904957
Tamahome
⭐⭐⭐⭐⭐
Posté le 13-07-2009 à 16:30:51  profilanswer
 

c'est normal que dans ta méthode qui s'appelle CreateCookie, tu ne crées pas un cookie ?


---------------
Hobby eien /人◕ ‿‿ ◕人\
n°1904959
fffff2mpl4
quoi mon pseudo ?
Posté le 13-07-2009 à 16:39:09  profilanswer
 

En fait je veux créer un cookie sous forme de fichier

n°1904960
Tamahome
⭐⭐⭐⭐⭐
Posté le 13-07-2009 à 16:59:18  profilanswer
 

ca ne veut rien dire.
 
tu veux sérialiser le contenu d'un cookie existant dans un fichier plat ?


---------------
Hobby eien /人◕ ‿‿ ◕人\
n°1904961
fffff2mpl4
quoi mon pseudo ?
Posté le 13-07-2009 à 17:08:33  profilanswer
 

Quand tu te connecte à un site celui ci t'envoie un cookie et le navigateur l'enregistre sous forme de fichier txt afin de le renvoyer dans les requète.
 
Et bien je souhaite faire pareil.


Message édité par fffff2mpl4 le 13-07-2009 à 17:08:47
n°1904962
Tamahome
⭐⭐⭐⭐⭐
Posté le 13-07-2009 à 17:12:45  profilanswer
 

Mais ta méthode CreateCookie elle est censé faire quoi ?
- S'identifier sur une page via un Post
- Récupérer le cookie envoyé par le site
- Sérialiser le cookie obtenue dans un fichier plat  
 
Ca doit faire ces 3 trucs la ou seulement le dernier ?


---------------
Hobby eien /人◕ ‿‿ ◕人\
n°1904967
fffff2mpl4
quoi mon pseudo ?
Posté le 13-07-2009 à 17:19:38  profilanswer
 

En fait les 3.

n°1905191
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 15-07-2009 à 09:55:40  profilanswer
 

Et pourquoi veux tu sérialiser le cookie ?


---------------
J'ai un string dans l'array (Paris Hilton)
n°1905226
fffff2mpl4
quoi mon pseudo ?
Posté le 15-07-2009 à 11:11:39  profilanswer
 

Harkonnen a écrit :

Et pourquoi veux tu sérialiser le cookie ?


 
Mon application a un nombre important de requètes à effectuer sur ce site.
Je pense donc qu'il est plus simple de stoker le cookie afin de le renvoyer avec chaque requète

n°1905364
Tamahome
⭐⭐⭐⭐⭐
Posté le 15-07-2009 à 14:35:47  profilanswer
 

plus simple pour qui ? le programmeur ? L'utilisateur ? Le programme ?
Et tu ne peux pas le renvoyer si tu ne le sérialises pas ?


---------------
Hobby eien /人◕ ‿‿ ◕人\
n°1905390
fffff2mpl4
quoi mon pseudo ?
Posté le 15-07-2009 à 15:22:43  profilanswer
 

En fait je ne suis pas sur que ce soit la méthode la plus simple, mais je me suis dit que c'était le plus simple à programmer.
 
Avez-vous une idée de la manière dont il faut procéder ?

n°1905464
fffff2mpl4
quoi mon pseudo ?
Posté le 15-07-2009 à 17:00:29  profilanswer
 

Bon je pense que j'ai un peu avancé.
Avec un code simple comme ca :

Code :
  1. CookieContainer cookieJar = new CookieContainer();
  2. var request = (HttpWebRequest)HttpWebRequest.Create("http://www.google.com" );
  3. request.CookieContainer = cookieJar;
  4. var response = request.GetResponse();
  5. foreach (Cookie c in cookieJar.GetCookies(request.RequestUri))
  6. {
  7.     Console.WriteLine("Cookie['" + c.Name + "']: " + c.Value);
  8. }


 
on peut récupérer le cookie envoyé par google.
Maintenant il me faut faire la même chose avec megaupload mais en envoyant les bons paramètres.
Avec un sniffer HTTP, j'ai vu qu'il fallait se connecter sur http://www.megaupload.com/?c=login avec les paramètres login=1&redir=1&username=user&password=pass.
Seul problème je n'y parviens pas. J'ai essayé le code suivant :

Code :
  1. CookieContainer cookieJar = new CookieContainer();
  2.             string data;
  3.             string strResponse;
  4.             var request = (HttpWebRequest)HttpWebRequest.Create("http://www.megaupload.com/?c=login" );
  5.             request.CookieContainer = cookieJar;
  6.             request.Method = "POST";
  7.             data = "login=1&redir=1&username=user&password=pass";
  8.             request.ContentLength = data.Length;
  9.             // Write the request
  10.             StreamWriter stOut = new StreamWriter(request.GetRequestStream(), System.Text.Encoding.ASCII);
  11.             stOut.Write(data);
  12.             stOut.Close();
  13.             // Do the request to get the response
  14.             StreamReader stIn = new StreamReader(request.GetResponse().GetResponseStream());
  15.             strResponse = stIn.ReadToEnd();
  16.             stIn.Close();
  17.            
  18.            
  19.             foreach (Cookie c in cookieJar.GetCookies(request.RequestUri))
  20.             {
  21.                 Console.WriteLine("Cookie['" + c.Name + "']: " + c.Value);
  22.             }


 
mais ca ne fonctionne pas.
D'autre part est-il normal que lorsqu'on rentre dans un browser http://www.megaupload.com/?c=login [...] sword=pass
ca ne log pas ?

n°1905766
Tamahome
⭐⭐⭐⭐⭐
Posté le 16-07-2009 à 11:57:22  profilanswer
 

euh oui, c'est normal, tu confonds POST et GET...
 
des parametres passés via un POST ne sont pas du tout équivalent à ceux posés dans la QueryString...


---------------
Hobby eien /人◕ ‿‿ ◕人\
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  [C#] Créer des cookie

 

Sujets relatifs
[VBA] créer fichier excel à partir d'onglet[Resolu][C#] Dupliquer un fichier
[Résolu][ASP.NET][C#] Heritage et partage de variableConvertir CSV en SLK En C
configurer mon projet C avec ODBC et Mysqlconfigurer mon projet C avec ODBC et Mysql
connecter à une base de données Mysql via ODBC à partir du C[C/C++] Difference entre pointeur et double pointeur ?
[C#] Convertir caractères spéciaux HTMLC++ pointeur, constructeur, attributs
Plus de sujets relatifs à : [C#] Créer des cookie


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR