Je vois en me connectant sur ma banque que mon programme s’est connecté à l’heure où je l’ai lancé, mais le fichier que je reçois est toujours la page d’identification (comme si le mot de passe était erroné).
J’ai retardé le moment où je reçois les données (imaginant laisser du temps au CGI pour élaborer la page) mais ça ne change rien.
Merci de me donner le dernier petit coup de pouce qui va me permettre d’aboutir enfin !
As-tu essayé de tracer une session normale avec un truc genre HttpFox (extension Iceweasel) pour voir ce qui se passe précisément ?
Sinon il y a un truc qui me frappe dans ton code : tu fais directement un POST sans récupérer de cookie session auparavant avec un GET. Perso quand je fais un système de login web je vérifie toujours que la session (donc le cookie) existe déjà au moment du POST (donc qu’il y a eu une page chargée auparavant) car sans cookie pas de session et sans session l’utilisateur serait obligé de retaper son login à chaque changement de page, il vaut mieux afficher un message propre “autorisez les cookies”. C’est un comportement assez courant.
GET sur la page de login, récupérer le cookie session
POST sur la page de login en incluant le cookie session
éventuellement des séries de GET ou POST pour récupérer les infos que tu veux, toujours en incluant le cookie session
étant donné qu’il s’agit d’un site sensible, faire un dernier GET ou POST, toujours en incluant le cookie session, correspondant à la déconnexion afin que ce cookie ne puisse plus servir.
Effectivement, si je refuse les cookies sur epiphany, il retourne sur la page de connexion inlassablement.
Il me reste donc à savoir comment gérer un cookie session avec JAVA alors.
Merci pour cette nouvelle piste !
J’ai l’erreur nid=xxxxxxxxxxxxxxx80c331a6xxxxxxxxxxxxxx
Exception in thread "main" java.lang.IllegalStateException: Already connected
at sun.net.www.protocol.http.HttpURLConnection.setRequestProperty(HttpURLConnection.java:2284)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.setRequestProperty(HttpsURLConnectionImpl.java:316)
at cook.main(cook.java:32)
avec le code suivant:
URL url = new URL("https://www.creditmutuel.fr/cmne/fr/identification/default.cgi");
HttpsURLConnection uc = (HttpsURLConnection) url.openConnection();
try {
String cookie = uc.getHeaderField(8);
cookie = cookie.substring(0, cookie.indexOf(";"));
System.out.println(cookie);
uc.setRequestProperty("Content-type","application/x-www-form-urlencoded");
uc.addRequestProperty("Cookie", cookie);
uc.setDoOutput(true);
uc.setDoInput(true);
PrintWriter pout = new PrintWriter( new OutputStreamWriter(
uc.getOutputStream(), "iso-8859-1"), true );
pout.print("_cm_user=0290012345678&_cm_pwd=87654321");
pout.flush();
[/code]
L’erreur ligne 32 (uc.setRequestProperty(“Content-type”,“application/x-www-form-urlencoded”) disparaît si j’enlève le uc.getHeaderField 3 lignes plus haut.