Partage
  • Partager sur Facebook
  • Partager sur Twitter

[JSoup] POST authentification

Fonctionne avec Wget mais pas JSoup

    19 novembre 2013 à 11:27:49

    Bonjour,

    Comme exprimé dans le titre du sujet, je tente de me connecter à un site (T411 pour ne pas le citer et sans porter atteinte aux droits d'auteur bien entendu) via JSoup. Je me suis inspiré d'un code trouvé sur GitHub d'une application Android qui fonctionne (lien ici, ligne 145). Avec Wget j'ai même pu réduire la requête au plus simple :

    wget 'http://www.t411.me/users/login/?returnto=%2Fusers%2Flogin'  --post-data 'login=MONLOGIN&password=MONPASWD' -O res.html

    Le résultat est ce que j'attends, à savoir la page que l'on voit lorsqu'on est bien connecté (avec le ratio et compagnie).

    En revanche en Java avec JSoup, pas moyen d'y arriver. Voici mon code :

    Connection.Response res = Jsoup
                .connect("http://www.t411.me/users/login/?returnto=%2Fusers%2Flogin")
                .data("login", "MONLOGIN", "password", "MONPASSWD")
                .method(Connection.Method.POST)
                .userAgent("Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.95 Safari/537.36")
                .timeout(10000)
                .maxBodySize(0).followRedirects(true).ignoreContentType(true).ignoreHttpErrors(true)
                .ignoreContentType(true).execute();
    
    Document document = res.parse();
    
    System.out.println( document.getElementsByClass("loginBar") );

    J'ai tourné le code dans tous les sens mais à chaque fois je récupère la page comme si je n'étais pas connecté, sans message d'erreur ni de bienvenue.

    Voilà, si quelqu'un peut éclairer ma lanterne je lui en serais reconnaissant :)

    -
    Edité par cRiMi 19 novembre 2013 à 11:29:26

    • Partager sur Facebook
    • Partager sur Twitter
      21 décembre 2014 à 10:09:43

      Salut !

      Je sais bien que ton post date d'un petit temps mais j'ai le même problème que toi ! Dans mon projet, je dois juste me connecter à ma page d’accueil, mais c'est une grosse galère ! Je ne sais pas si tu as réussi depuis le temps mais je peux t'indiquer où en sont mes recherches :)

      Je suis parti d'un tutoriel différent du tien : http://www.mkyong.com/java/how-to-automate-login-a-website-java-example/

      Évidemment, les sites web étant différent, je me doutais bien que ça n'irait pas comme ça. En gros, il y a quelques petites modifications à faire pour avoir le formulaire mais le gros problème vient de la requête POST à envoyer. J'ai vérifié avec WireShark quel était le paquet envoyé, vers quelle destination il était envoyé,... En le faisant tout pareil, j'ai réussi à m'identifier ! Mais, parce qu'évidemment, il doit y avoir un "MAIS", la réponse que tu reçois est un objet JSON du type

      {"status":"OK","response":null,"redirect":true,"callback":false,"data":false,"q":0}

      qui est la même réponse que lorsque je m'identifie en utilisant le site. Je pense donc que je suis bien identifié.

      Étant donné que j'ai pas beaucoup le temps, examens obligent, j'ai essayé vite fait de voir si en rappelant la page, j'étais connecté mais ça n'est pas le cas. Je continuerai mes recherches tout à l'heure. Si jamais tu désires mon code source, n'hésites pas !

      Sinon, si jamais quelqu'un a déjà rencontré un cas pareil et qu'il est parvenu à le résoudre, ça serait cool de partagé votre solution !

      -
      Edité par adm01 21 décembre 2014 à 10:10:34

      • Partager sur Facebook
      • Partager sur Twitter

      [JSoup] POST authentification

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown