web-dev-qa-db-fra.com

Enregistrer des publications sous forme http via un navigateur

J'essaie d'automatiser la connexion à un site Web et la soumission d'un formulaire.

Existe-t-il un plug-in de navigateur (pour Firefox ou Chrome) vous permettant d'enregistrer les demandes HTTP GET et POST sous une forme leur permettant d'être lues ultérieurement? Je cherche quelque chose qu'il sera possible d'automatiser à partir d'un script, par exemple. via curl ou wget.

J'ai essayé d'utiliser les outils de développement Chrome pour capturer les données de formulaire POST, mais des erreurs se produisaient lorsque je tentais de répliquer la demande avec wget, ce qui suggère que des cookies ou d'autres paramètres sont manquants. Idéalement, il y aurait une bonne façon automatisée de faire cela plutôt que de faire beaucoup d'essais et d'erreurs.

35
Alex Spurling

Pour une interaction simple, vous n'avez pas vraiment besoin d'un outil comme Selenium pour enregistrer et lire les requêtes.

Vous n'avez besoin que des outils que vous avez déjà mentionnés:

  1. Chrome contient déjà les outils de développement dont vous avez besoin: utilisez l'onglet Réseau. Aucun plugin à télécharger. Je ne sais pas si Safari fonctionnera. Je ne vois pas d'onglet "Réseau" dans ses outils de développement.
  2. curl et wget prennent en charge les cookies et POST data, mais j'ai seulement essayé curl pour l'automatisation.

Plusieurs étapes clés doivent être effectuées correctement (cela nécessite de l'expérience):

  1. La séquence de pages demandée doit modéliser une interaction utilisateur réelle. Ceci est important car vous ne savez pas exactement comment le système gère les formulaires ou l’authentification. C’est là que l’onglet Réseau des Outils de développement de Chrome apparaît. (Notez qu’il existe un bouton "enregistrer" qui empêchera l’effacement du journal.) Lorsque vous vous apprêtez à consigner une véritable interaction utilisateur pour votre analyse, n'oubliez pas Effacez vos cookies au début de chaque session.
  2. Vous devez utiliser toutes les options appropriées de curl et wget afin de vous assurer que les cookies et les redirections sont correctement traités.
  3. Tous POST les champs du formulaire devront probablement être envoyés (vous verrez souvent des champs avec des valeurs nonce pour empêcher CSRF

Voici un échantillon de 3 appels curl que j'ai écrits pour un script d'automatisation que j'ai écrits pour télécharger l'utilisation du haut débit à partir de mon fournisseur de services Internet:

curl \
    --silent \
    --location \
    --user-agent "$USER_AGENT" \
    --cookie-jar "$COOKIES_PATH.txt" \
    'https://idp.optusnet.com.au/idp/optus/Authn/Service?spEntityID=https%3A%2F%2Fwww.optuszoo.com.au%2Fshibboleth&j_principal_type=ISP' >$USAGE_PATH-1.html 2>&1 && sleep 3 &&

# --location because the previous request returns with a series of redirects "302 Moved Temporarily" or "302 Found"
curl \
    --silent \
    --location \
    --user-agent "$USER_AGENT" \
    --cookie "$COOKIES_PATH.txt" \
    --cookie-jar "$COOKIES_PATH.txt" \
    --referer 'https://idp.optusnet.com.au/idp/optus/Authn/Service?spEntityID=https%3A%2F%2Fwww.optuszoo.com.au%2Fshibboleth&j_principal_type=ISP' \
    --data "spEntityID=https://www.optuszoo.com.au/shibboleth&j_principal_type=ISP&j_username=$OPTUS_USERNAME&j_password=$OPTUS_PASSWORD&j_security_check=true" \
    'https://idp.optusnet.com.au/idp/optus/Authn/Service' >$USAGE_PATH-2.html 2>&1 && sleep 1 &&

curl \
    --silent \
    --location \
    --user-agent "$USER_AGENT" \
    --cookie "$COOKIES_PATH.txt" \
    --cookie-jar "$COOKIES_PATH.txt" \
    --referer 'https://www.optuszoo.com.au/' \
    'https://www.optuszoo.com.au//r/ffmu' >$USAGE_PATH-3.html 2>/dev/null

Notez l'utilisation prudente de --cookie-jar, --cookie et --location. Les sleeps, --user-agent et --referer peuvent ne pas être nécessaires (le backend peut ne pas être vérifiés), mais ils sont assez simples pour que je les inclue afin de minimiser le risque d'erreur.

Dans cet exemple, j’ai eu de la chance qu’il n’y ait pas de champs dynamiques POST, par exemple. champs nonce anti-CSRF, que j’aurais dû extraire et transmettre à une requête ultérieure. C'est parce que cette automatisation est pour l'authentification. Pour automatiser d'autres types d'interactions Web, une fois que l'utilisateur est déjà connecté, vous risquez de rencontrer davantage de ces champs générés dynamiquement.

23
huyz

Pas exactement un plugin de navigateur, mais Fiddler peut capturer toutes les données HTTP échangées; avec FiddlerScript ou FiddlerCore , il est alors simple de exporter cela dans un fichier texte - et de le transférer dans cURL en tant qu'en-têtes et corps de demandes.

5
Piskvor

Dans Firefox, activez l'option Persist dans Firebug pour vous assurer de capturer le POST. Puis installez et utilisez le "Bookmark POST" add-on pour mettre en signet la demande POST pour une utilisation ultérieure.

4
Finn Haakansson

Firefox Firebug a déjà une fonctionnalité qui vous permet de copier une requête Web en tant que requête curl, de sorte que vous puissiez voir tous les divers éléments de la requête sur la ligne de commande.

Allumez le Firebug, cliquez avec le bouton droit de la souris sur une requête du panneau Réseau et choisissez Copier en tant que cURL. Puis utilisez-le dans curlhttps://hacks.mozilla.org/2013/08/firebug-1-12-new-features/#copyAsCURL

3
Azi

Avez-vous essayé sélénium ?

3
DanSingerman

Il y a beaucoup trop de méthodes à choisir.

  1. Utilisez Firefox et Selenium IDE. Il peut enregistrer l'action de votre navigateur

  2. Pilote Web utilisateur Selenium. Il peut simuler différentes actions du navigateur par le script que vous écrivez en Ruby ou en Java.

  3. Utilisez un plugin macro pour Firefox pour simuler des clics absolus et des pressions de touche.

  4. Utilisez une application macro au niveau du système d'exploitation et procédez de la même manière que 3.

  5. Écrivez un script (tel que PHP) pour simuler les interactions de publication de formulaire ou de cookie.

No.1 est commun et facile à utiliser. No.4 peut être puissant, mais vous avez besoin de temps pour peaufiner l’automatisation.
No.3 est au milieu du n ° 4 et n ° 1. . N ° 2 peut être un outil pour les tests d'environnement et les tests de résistance. économie.

2
Abby Chau Yu Hoi

Récemment, j'ai traversé cette belle extension chromée qui fait ce que vous demandez: Katalon Recorder

Katalon Recorder facilitera grandement l'automatisation de vos tests.

  • Enregistrement, lecture, débogage avec contrôle de la vitesse, pause/reprise, capacités des points d'arrêt.

  • Profitez de la vitesse d'exécution la plus rapide par rapport aux autres extensions avec le moteur central Selenium 3.

  • Utilisez plusieurs types de localisateurs, notamment XPath et CSS.

  • Utilisez les commandes Selenium IDE d'origine (Selenese), ainsi que l'instruction block si ... elseIf ... else ... endIf et while ... endWhile. Test du contrôle d'entrée de fichier est pris en charge.

  • Importer des données de test à partir de fichiers CSV pour des tests pilotés par les données.

  • Rapportez facilement avec les journaux, les captures d'écran, avec les données historiques et les analyses de Katalon Analytics.

  • Composez et organisez des cas de test dans des suites. Ne perdez jamais votre travail avec la fonction de sauvegarde automatique.

  • Importez les tests Selenium IDE d'origine (extension Firefox).

  • Exportez les scripts Selenium WebDriver dans les cadres suivants: C # (MSTest et NUnit), Java (TestNG et JUnit), Ruby (RSpec), Python (unittest), Groovy (Katalon Studio), Robot Framework et XML.

0
Promod
0
princecharmx

Les outils de développement Safari et Firebug suffisent à vos besoins.

0
Alessandro