IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

cURL : Authentification


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juillet 2007
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 208
    Par défaut cURL : Authentification
    Bonsoir,

    Je dois actuellement me loguer sur un site pour y récupérer le suivi de certains flux via un export CSV.
    Je souhaiterais automatiser cette opération grâce à un script Bash et cURL.
    Pour le moment je parviens à me connecter au site et à naviguer sur certaines pages mais bien évidemment ça coince sur la page de l'export CSV...

    Dans un navigateur, pour accéder à l'export il faut cliquer un bouton qui ouvre une popup et c'est dans cette dernière qu'on peut lancer l'export.
    Je ne parviens pas à générer l'export dans mon script...

    Voici les différentes étapes :
    Connexion
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    curl --cookie-jar ./cookie "https://www.jedeclare.com/member/login/anonymous?_wrapper_format=drupal_modal&ajax_form=1&_wrapper_format=drupal_ajax" \
    -H "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:64.0) Gecko/20100101 Firefox/64.0" \
    -H "Accept: application/json, text/javascript, */*; q=0.01" \
    -H "Accept-Language: fr,fr-FR;q=0.8,en-US;q=0.5,en;q=0.3" \
    --compressed \
    -H "Referer: https://www.jedeclare.com/prehome" \
    -H "Content-Type: application/x-www-form-urlencoded; charset=UTF-8" \
    -H "X-Requested-With: XMLHttpRequest" \
    -H "Connection: keep-alive" \
    --data "name=username&pass=password&form_build_id=form-ikfhQeY9j_M-0gvTL8TuOQLJtlFAD7XSfByvmFPbKsw&form_id=user_login_form&_triggering_element_name=op&_triggering_element_value=Valider&_drupal_ajax=1&ajax_page_state"%"5Btheme"%"5D=jedeclare&ajax_page_state"%"5Btheme_token"%"5D=&ajax_page_state"%"5Blibraries"%"5D=bootstrap"%"2Fpopover"%"2Cbootstrap"%"2Ftooltip"%"2Ccore"%"2Fdrupal.dialog.ajax"%"2Ccore"%"2Fhtml5shiv"%"2Ccore"%"2Fjquery.form"%"2Ceu_cookie_compliance"%"2Feu_cookie_compliance"%"2Cform_placeholder"%"2Fform_placeholder"%"2Cgoogle_analytics"%"2Fgoogle_analytics"%"2Cjdc_services"%"2Fjdc_services.base"%"2Cjedeclare"%"2Fbootstrap-scripts"%"2Cjedeclare"%"2Fdrupal.dialog"%"2Cjedeclare"%"2Fdrupal.dialog.ajax"%"2Cjedeclare"%"2Fglobal-styling"%"2Clayout_discovery"%"2Fonecol"%"2Csystem"%"2Fbase"
    Ouverture d'une page qui fonctionne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    curl --cookie ./cookie "https://www.jedeclare.com/webapp/critereTDAction.do?flag1=1&actionAffichage=normal" \
    -H "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:64.0) Gecko/20100101 Firefox/64.0" \
    -H "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" \
    -H "Accept-Language: fr,fr-FR;q=0.8,en-US;q=0.5,en;q=0.3" \
    --compressed \
    -H "Referer: https://www.jedeclare.com/webapp/preLoginCMSAction.do" \
    -H "Connection: keep-alive" \
    -H "Upgrade-Insecure-Requests: 1"
    Tentative de génération de l'export
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    curl --cookie ./cookie "https://www.jedeclare.com/webapp/exportListTdAction.do" \
    -H "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:64.0) Gecko/20100101 Firefox/64.0" \
    -H "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" \
    -H "Accept-Language: fr,fr-FR;q=0.8,en-US;q=0.5,en;q=0.3" \
    --compressed \
    -H "Referer: https://www.jedeclare.com/webapp/critereTDAction.do?export=true" \
    -H "Content-Type: application/x-www-form-urlencoded" \
    -H "Connection: keep-alive" \
    -H "Upgrade-Insecure-Requests: 1" \
    --data "avecCartouche=on&format=csv&avecColonneIdMessage=on&avecColonneDateDepot=on&avecColonneHeureDepot=on&avecColonneCompte=on&avecColonneSiret=on&avecColonneRof=on&avecColonneNoDossierInterne=on&avecColonneNoAbregDossier=on&avecColonneTypeTd=on&avecColonneTypeDest=on&avecColonneDestinataire=on&avecColonnePeriodeRattachement=on&avecColonneEtapes=on&x=44&y=8"
    Le serveur me renvoie une erreur 500...
    Lorsque je lance dans une console les requêtes récupérées grâce au déboguer d'un navigateur (Copy as cURL) je parviens à récupérer mon export...
    Différence notable : La présence de -H "Cookie:..." dans les instructions récupérées via le débogueur

    Auriez-vous une idée de ce qui pourrait causer cette erreur ?

  2. #2
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 287
    Par défaut
    Bonjour

    CSV ? N'est-ce pas plutôt JSON ?

    Le serveur me renvoie une erreur 500...
    Lorsque je lance dans une console les requêtes récupérées grâce au déboguer d'un navigateur (Copy as cURL) je parviens à récupérer mon export...
    Différence notable : La présence de -H "Cookie:..." dans les instructions récupérées via le débogueur

    Auriez-vous une idée de ce qui pourrait causer cette erreur ?
    La réponse est dans la question. Non ?
    Es-tu connecté par ton navigateur ? Auquel cas, il manque le cookie de connexion.

    Autre idée : Cela peut être un problème temporaire du serveur. Reviens plus tard.

    Autre idée : As-tu vérifié la présence sur le serveur d'un éventuel robots.txt ?
    Les humains sont autorisés à faire des choses que ne peuvent pas faire les robots.

    Enfin, erreur 500, ce n'est pas super précis. As-tu une responsabilité dans ce serveur ?

  3. #3
    Membre confirmé
    Inscrit en
    Juillet 2007
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 208
    Par défaut
    Salut,

    Le site en question est Jedeclare.com, un portail déclaratif, nous n'avons donc pas la main dessus.
    Le seul message d'erreur envoyé lors de la tentative d'export est "Internal server error".
    Il s'agit bien d'un export au format CSV.

  4. #4
    Membre confirmé
    Inscrit en
    Juillet 2007
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 208
    Par défaut
    J'ai un peu avancé mais je ne parviens pas encore à récupérer les données.

    Sur le site, voici ce qu'il y a derrière le bouton ouvrant la popup d'export :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="javascript:openExportWindow('critereTDActionForm') && validateSiret()" class="Textenlien3" onclick="return (validateCritereTDActionForm(document.critereTDActionForm) &amp;&amp; validateSiret() );">Export</a>
    Existe-t-il un moyen de simuler un click sur ce bouton grâce à cURL ?

  5. #5
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 287
    Par défaut
    On ne peut pas.
    À moins d'engloutir du temps.
    Il faudrait que tu recrées les données postées en faisant de l'ingénierie inverse sur le code javascript.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    onclick="return (validateCritereTDActionForm(document.critereTDActionForm) &amp;&amp; validateSiret() );"
    Avant de baisser les bras, vérifie quand même que la fonction javascript ne fait pas quelque chose de tout bête à laquelle tu as la réponse.

    Quand à simuler un clic sur le bouton, tu peux toujours avoir un vrai navigateur et aller vraiment sur la page et cliquer avec un vrai robot écrit en java.
    Mais si tu voulais un script serveur tout bête, c'est mal engagé.

Discussions similaires

  1. Réponses: 1
    Dernier message: 30/10/2010, 14h19
  2. authentification via CURL
    Par devroot dans le forum Réseau
    Réponses: 1
    Dernier message: 11/07/2009, 11h23
  3. [Web Service][cURL] authentification par cookie déjà créé
    Par Maf77 dans le forum Bibliothèques et frameworks
    Réponses: 11
    Dernier message: 03/10/2008, 03h51
  4. Authentification via Curl
    Par krakoss dans le forum C++
    Réponses: 0
    Dernier message: 05/10/2007, 18h09
  5. [XML] [cURL] Authentification Php récupération de données
    Par thibaut06 dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 13/02/2006, 14h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo