WinHttp.WinHttpRequest.5.1 et token pour se connecter

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
A2Energie
Niveau 5
Niveau 5
Messages : 140
Enregistré le : ven. 15 nov. 2013 20:22
Status : Hors ligne

WinHttp.WinHttpRequest.5.1 et token pour se connecter

#1

Message par A2Energie »

Bonjour amis Autoitiens, :D

Je viens vers vous car j'ai un problème que je ne parviens pas à résoudre depuis pas mal de temps.
Pour télécharger un fichier sur un site internet je passe par WinHttp.WinHttpRequest.5.1
Jusqu'à présent, tout fonctionnait mais ils ont fait des mises à jour sur ce site et donc je ne parviens plus à m'y connecter.

Sur la page de connexion je remarque un hidden qui affiche : <input type="hidden" name="_csrf_token" value=" [....]
Je me demande si mon problème de connexion à ce site ne viendrai pas de ce token ?
Ou si le problème vient d'ailleurs.

Je sais que je dois vous poster d'avantage d'information mais j'aimerais conserver ce site anonyme. donc voici quelques éléments que je peux fournir.

La page de connexion du site :

<form method="post">
<fieldset>
<div class="form-group col-md-6">
<label for="inputEmail">Votre adresse email</label>
<input type="email" value="" name="email" id="inputEmail" class="form-control" required autofocus>
</div>
<div class="form-group col-md-6">
<label for="inputPassword">Mot de passe</label>
<input type="password" name="password" id="inputPassword" class="form-control" required>
</div>
<div class="col-md-12 text-right">
<input type="hidden" name="_csrf_token"
value="92.4WJoVJGbl_uvNWQ_o0hsI8DnHXSykzOlEFSO2hE5hU8.1y47Evns9qrHUVdK0zA0dLSNbkXlpUfxUTf-kUlb9AmgJwIV9fDEmup-IQ"
>
<button class="btn btn-primary" type="submit">
Connexion
</button>
</div>
</fieldset>
</form>


Mon bout de code :

$oHTTP.Open("POST", "https://LE_SITE/", False)
$oHTTP.SetRequestHeader("Content-Type", "application/x-www-form-urlencoded")
$oHTTP.Send("email=..........&password=............")

$oHTTP.Open("GET", "https://LE_SITE_PDF", False)
$oHTTP.SetRequestHeader("Content-Type", "application/x-www-form-urlencoded")
$oHTTP.Send()
$sData = $oHTTP.ResponseBody


En vous remerciant pour vos réponses.
jpascal
Niveau 6
Niveau 6
Messages : 226
Enregistré le : jeu. 16 oct. 2008 16:21
Status : Hors ligne

Re: WinHttp.WinHttpRequest.5.1 et token pour se connecter

#2

Message par jpascal »

Bonjour,

Vous avez deux solution :
- soit afficher la page, remplir les champs automatiquement et soumettre le form avec le bouton submit
- soit utiliser WinHttp mais vous devez envoyer le paramètre _csrf_token dans votre requête POST
AutoIt 3.3.16.1 - AutoIt3Wrapper 21.316.1639.1
Avatar du membre
A2Energie
Niveau 5
Niveau 5
Messages : 140
Enregistré le : ven. 15 nov. 2013 20:22
Status : Hors ligne

Re: WinHttp.WinHttpRequest.5.1 et token pour se connecter

#3

Message par A2Energie »

Bonjour, :D

Ah merci pour cette réponse, content d'avoir une réponse. :bisou:

Du coup je serais partant pour la seconde solution.
Comment puis-je envoyer le paramètre csrf_token dans la requête POST ?
J'ai bien tenté de le faire, mais je n'y parviens pas.
Car le csrf_token est généré avant qu'il ne soit affiché, car une fois affiché il est modifié si je réenvoi une requête.

Auriez vous un exemple ou un début de code si possible ?

En vosu remerciant, :wink:
jpascal
Niveau 6
Niveau 6
Messages : 226
Enregistré le : jeu. 16 oct. 2008 16:21
Status : Hors ligne

Re: WinHttp.WinHttpRequest.5.1 et token pour se connecter

#4

Message par jpascal »

Bonjour,

Lorsque vous faites $sData = $oHTTP.ResponseBody, vous récupérez le contenu de la page qui s'affiche.
Il vous suffit de faire une recherche dans ce contenu (avec une RegEx par exemple) pour récupérer la valeur du token dans la variable $sToken.
Et renvoyer ensuite une requête avec tous les paramètres.

Pour envoyer le contenu de ce token, il vous faut utiliser une commande de ce type :
_WinHttpSimpleSSLRequest($hConnect, "POST", $sPage, Default, $sPostData)
avec $sPostData = 'email=' & $sEmail & 'password=' & $sPassword & 'csrf_token=' & $sToken

Je vous conseille fortement de lire l'aide de WinHttp pour bien comprendre les différentes fonctions et paramètres.

Les noms de variables que j'ai employés ne sont que des suggestions :!:
AutoIt 3.3.16.1 - AutoIt3Wrapper 21.316.1639.1
Répondre