web-dev-qa-db-fra.com

Comment entrer les informations de connexion d'un site Web à partir de la ligne de commande linux

Ma connexion internet est fournie par l'université. Il est protégé par une combinaison nom d'utilisateur/mot de passe. Cela signifie que lorsque je démarre mon ordinateur, je dois démarrer un navigateur Web et ouvrir un site Web arbitraire. Je suis ensuite redirigé vers une page contenant (entre autres) deux formulaires. Dans ceux-ci, je dois entrer le nom d'utilisateur et le mot de passe. J'ai réussi à le faire avec Firefox (qui peut enregistrer le mot de passe) et aussi avec des liens (qui se charge plus rapidement et à partir de la ligne de commande).

Est-il possible d'automatiser le processus de connexion à l'aide d'un script bash? Cela permettrait de faire la connexion lors du démarrage, de sorte qu’elle soit déjà présente au démarrage du serveur X.

24
Tim

J'ai enfin trouvé un moyen de me connecter automatiquement en utilisant elinks. Cela fonctionne et il est même facile à configurer!

Deux options doivent être définies. Cela peut être fait en ajoutant les lignes suivantes dans ~/.elinks/elinks.conf (si le fichier n'y est pas, créez-en une) ou en modifiant les valeurs aux positions respectives dans la boîte de dialogue des options dans elinks:

    # Save username and password for later use
set document.browse.forms.show_formhist = 1
    # Do not ask for confirmation before a form is submitted
set document.browse.forms.confirm_submit = 0

Les étapes pour une connexion automatique scriptable sont alors les suivantes:

  • Définir ces deux options
  • Ouvrez la page de connexion dans elinks, remplissez les formulaires et envoyez-les.
  • Choisissez de retenir le nom et le mot de passe pour une utilisation ultérieure.
  • Fermer elinks
  • Exécuter elinks -auto-submit http://somesite.com

Cette dernière commande doit exécuter la connexion automatique sans autre interaction de l'utilisateur.

En fait, j'utilise timeout 1m elinks -auto-submit http://somesite.com &, de sorte que je n'ai pas de processus de liaison inactif qui s'exécute en arrière-plan tout le temps.

5
Tim

Vous pouvez l'essayer avec curl , vous pouvez simplement utiliser curl comme ceci pour vous connecter à la page Web:

curl --user name:password http://somesite.com -v 

Vous pouvez transmettre des données à un site Web comme celui-ci à partir de Stackoverflow answer

    curl -b cookies.txt -c cookies.txt --data "Username=xx&Password=xx&Login=Login" [urlthatyour form submits]

vous avez besoin de cookies si vous souhaitez faire une autre demande de curl après la connexion. L'identifiant de session dans les cookies aidera la prochaine demande de curl à être autorisée.

Si vous ne voulez pas de cookies, vous pouvez utiliser

curl --data "Username=xx&Password=xx&Login=Login" [url that your form submits]

Vous pouvez également vous référer ici pour les commandes spéciales

15

Un moyen simple de créer un script consiste à utiliser Selenium .

Vous pouvez utiliser leur plug-in Firefox "Test Recorder" pour enregistrer un test de votre connexion au réseau, puis lire le test.

3
Moshe Katz

Vous pouvez obtenir un add-on pour votre navigateur qui se connectera automatiquement aux sites Web avec des mots de passe enregistrés. J'ai utilisé AutoAuth avec Firefox. Ensuite, vous vous connectez une fois et enregistrez vos informations d'identification, puis écrivez un script qui a juste

#!/bin/bash
firefox https://website address goes here

Une fois exécuté, il se connectera automatiquement. J'ai essayé avec plusieurs sites et cela a bien fonctionné.

0

Oui, il existe un moyen très simple de vous connecter à Internet de votre université. Vous pouvez utiliser le navigateur Web ' Lynx ', qui est un navigateur textuel, conçu pour une utilisation sur terminal. Alors, voici le chemin:

$ echo "username=myname&password=mypassword" | lynx "url of the form" -post_data

où ' nom d'utilisateur ' est le nom du champ correspondant au nom d'utilisateur sous la forme et ' mot de passe 'est le nom du champ correspondant au champ du mot de passe et à' monnom 'et' mypassword 'sont les valeurs correspondantes à remplir dans le formulaire. Vous pouvez trouver le nom du champ en utilisant "Inspecter l'élément" depuis n'importe quel navigateur. J'ai essayé avec curl comme indiqué dans la réponse de BlueBerry - Vignesh4303 mais je n'ai pas fonctionné.

0
Kushagra Sharma