Contenu | Rechercher | Menus

Annonce

Le forum a une nouvelle maison !
Le forum a été migré sur un nouvel hébergement. Si jamais vous trouvez le moindre problème, n'hésitez pas à nous en faire part !
Si vous rencontrez des soucis à rester connecté sur le forum (ou si vous avez perdu votre mot de passe) déconnectez-vous et reconnectez-vous depuis cette page, en cochant la case "Me connecter automatiquement lors de mes prochaines visites".

#1 Le 13/07/2013, à 14:41

kikadisa
Membre

[curl] Formulaire en deux étapes

Bonjour,

Je souhaite facilité la complémentation d'un script avec curl.

Depuis deux jours je planche.

Voici le comportement du script :
Sur une page A on rempli le formulaire, et on valide
Nous arrivons sur une page qui demande de valider à nouveau afin de vérifier les données insérés.

Avec Curl, la première partie est réalisé à l'aide de la commande suivante

curl -F "data=valeur" -F "data=valeur" -F "data=@file"

Cependant je ne sais pas comment valider le second formulaire.
Une idée ?

voici la page en question :
http://www.crossroads.fr/forms/Adressez … CV_f1.html

Hors ligne

#2 Le 13/07/2013, à 15:28

nesthib
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Re : [curl] Formulaire en deux étapes

Envoie le premier formulaire, regarde le code de la page qui est générée et en particulier le formulaire.
Tu devrais pouvoir t'en sortir en n'envoyant que le second. S'il y a quelques sécurités, il est possible que tu aies à ajouter un entête pour la page de référence (referer).

Par curiosité, pourquoi faire un script pour répondre au formulaire de ce site ? Ça ne me paraît pas être le genre de site pour lequel tu as besoin de faire des soumissions en masse…

Hors ligne

#3 Le 13/07/2013, à 17:06

kikadisa
Membre

Re : [curl] Formulaire en deux étapes

nesthib a écrit :

Envoie le premier formulaire, regarde le code de la page qui est générée et en particulier le formulaire.
Tu devrais pouvoir t'en sortir en n'envoyant que le second. S'il y a quelques sécurités, il est possible que tu aies à ajouter un entête pour la page de référence (referer).

Effectivement le formulaire change sur la deuxième page.
Cependant, des variables ne sont créer seulement parce que l'upload de fichiers à eu lieu.

nesthib a écrit :

Par curiosité, pourquoi faire un script pour répondre au formulaire de ce site ? Ça ne me paraît pas être le genre de site pour lequel tu as besoin de faire des soumissions en masse…

Le but n'est pas l'envoi de masse.
Mais l'automatisation avec cron.

Hors ligne

#4 Le 13/07/2013, à 17:40

nesthib
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Re : [curl] Formulaire en deux étapes

Dans ce cas il te faut envoyer deux formulaires.
Pour faire ce genre de choses j'utiliserais python plutôt que le shell (ex. avec le module mechanize).

Hors ligne

#5 Le 13/07/2013, à 17:42

kikadisa
Membre

Re : [curl] Formulaire en deux étapes

Zut, je connais pas le python....

Hors ligne

#6 Le 13/07/2013, à 18:08

nesthib
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Re : [curl] Formulaire en deux étapes

Ça n'est pas impossible avec curl, il faut juste faire la première requête, récupérer la page, faire la seconde requête smile

Hors ligne

#7 Le 13/07/2013, à 23:34

kikadisa
Membre

Re : [curl] Formulaire en deux étapes

J'ai bien essayé, ca ne veut pas.

J'ai essayé avec une première commande :

curl -c cookies -F "argument=valeur" url 

suivi de

curl -b cookies -e url -F "argument=valeur" url

Mais le résultat de la seconde page est vierge...

Hors ligne

#8 Le 14/07/2013, à 00:35

nesthib
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Re : [curl] Formulaire en deux étapes

Est-ce que tu récupères les données de la première page ? Il ne suffit pas des cookies pour que la seconde comprenne ce qui s'est passé avant.
Je t'avoue que je n'ai pas regardé le code de ta page (et que je n'ai pas spécialement envie de le faire), mais ça me paraît être un problème assez facile à résoudre.
Il faut bien que tu penses à enregistrer la sortie du premier curl pour récupérer le formulaire renvoyé. C'est pour ça que je t'ai orienté vers python au départ, tu peux faire tout ça plus ou moins automatiquement sans avoir à t'embêter à parser la sortie à la main.

Pour récupérer la sortie du premier curl :

page=$(curl …)

Hors ligne