Bonjour à tous,
J'ai écumé le web, forums & co et je me retourne maintenant vers vous car je sèche sur le problème (hautement technique suivant) : remplir un pauvre formulaire post login/password et soumettre en C#... Désolé du côté noobz de la question...
Je tente de remplir le formulaire suivant :
et
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 <script type="text/javascript"> <!-- function process_form(the_form) { var element_names = new Object() element_names["req_username"] = "Nom d\'utilisateur" element_names["req_password"] = "Mot de passe" if (document.all || document.getElementById) { for (i = 0; i < the_form.length; ++i) { var elem = the_form.elements[i] if (elem.name && elem.name.substring(0, 4) == "req_") { if (elem.type && (elem.type=="text" || elem.type=="textarea" || elem.type=="password" || elem.type=="file") && elem.value=='') { alert("\"" + element_names[elem.name] + "\" doit etre rempli") elem.focus() return false } } } } return true } // --> </script>
Quand j'examine la requête via les outils classiques, j'ai
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 <form id="login" method="post" action="login.php?action=in" onsubmit="return process_form(this)"> <div class="inform"> <fieldset> <legend>Saisissez votre nom d'utilisateur et votre mot de passe ci-dessous</legend> <div class="infldset"> <input type="hidden" name="form_sent" value="1" /> <input type="hidden" name="redirect_url" value="index.php" /> <label class="conl"><strong>Nom d'utilisateur</strong><br /><input type="text" name="req_username" size="25" maxlength="25" tabindex="1" /><br /></label> <label class="conl"><strong>Mot de passe</strong><br /><input type="password" name="req_password" size="16" maxlength="16" tabindex="2" /><br /></label> </div> </fieldset> </div> <p><input type="submit" name="login" value="Connexion" tabindex="3" /></p> </form>
Et enfin, j'ai le code (hyper classique, il me semble) suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 POST /login.php?action=in HTTP/1.1 Host: forum.monsite.org Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 Accept-Encoding: gzip, deflate Accept-Language: fr-FR,fr;q=0.8,en-US;q=0.6,en;q=0.4 Content-Type: application/x-www-form-urlencoded Origin: http://forum.monsite.org Referer: http://forum.monsite.org/login.php Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.157 Safari/537.36 HTTP/1.1 200 OK Cache-Control: post-check=0, pre-check=0 Content-Encoding: gzip Content-Length: 1179 Content-Type: text/html; charset=iso-8859-15 Date: Wed, 26 Aug 2015 17:52:44 GMT Expires: Thu, 21 Jul 1977 07:30:00 GMT Last-Modified: Wed, 26 Aug 2015 17:52:44 GMT Pragma: no-cache Server: Apache/2.2.29 Vary: Accept-Encoding
J'ai aussi essayé la variante suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 var request = (HttpWebRequest)WebRequest.Create("http://forum.monsite.org/login.php?action=in"); request.Method = "POST"; request.ContentType = "application/x-www-form-urlencoded"; byte[] bytes = Encoding.ASCII.GetBytes("req_username=xxxx&req_password=yyyy"); request.ContentLength = bytes.Length; using (var reqStream = request.GetRequestStream()) { reqStream.Write(bytes, 0, bytes.Length); } var response = (HttpWebResponse)request.GetResponse();
J'ai ici rempli les champs hidden mais je ne sais pas si c'est important...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 using (var client = new WebClient ()) { client.Headers.Add("Content-Type", "application/x-www-form-urlencoded"); var values = new NameValueCollection(); values["form_sent"] = "1"; values["redirect_url"] = "index.php"; values["req_username"] = "xxxx"; values["req_password"] = "yyyy"; values["login"] = "Connexion"; var response = client.UploadValues("http://forum.monsite.org/login.php", "POST", values); }
Bref tout cela ne fonctionne pas et je sèche. J'imagine que c'est les headers qui sont foireux mais je ne sais pas trop quoi faire... Un petit coup de main serait vraiment le bienvenu!! Je vous remercie d'avance
Partager