Comment saisir les informations de connexion d'un site Web à partir de la ligne de commande Linux

25

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 qui (entre autres) contient 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 depuis la ligne de commande).

Existe-t-il un moyen d'automatiser le processus de connexion à l'aide d'un script bash? Cela permettrait de faire la connexion au démarrage, de sorte qu'il soit déjà là lorsque je démarre le serveur X.

Tim
la source
1
Vous pourrez peut- être appeler le script de connexion à partir de l' ACTIONattribut du formulaire avec curldirectement.
terdon
De nombreuses universités proposent également un réseau qui utilise «l'authentification d'entreprise» (c'est-à-dire en utilisant un nom d'utilisateur / mot de passe pour la connexion réseau elle-même, au lieu d'attendre jusqu'à ce que vous essayiez d'accéder à une page pour demander des informations d'identification). La capacité de stocker ces informations d'identification réseau est intégrée dans le système d'exploitation. Il est également beaucoup plus sûr, car cela signifie qu'il est plus difficile pour les autres d'espionner votre connexion. Si votre université le soutient, vous devriez y passer.
Moshe Katz
Cela nous aiderait également si vous pouviez donner un exemple (anonyme) de l'URL vers laquelle vous êtes redirigé lorsque vous vous connectez. (Anonymisé ici signifie que vous devez supprimer votre adresse MAC et / ou votre adresse IP de l'URL si elles s'y trouvent, mais laissez tout le reste, y compris le nom de l'Université.)
Moshe Katz

Réponses:

16

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 la réponse Stackoverflow

    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 effectuer une autre demande de curl après vous être connecté. L'identifiant de session dans les cookies aidera la prochaine requête de curl 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

BlueBerry - Vignesh4303
la source
1
Je ne suis pas en mesure d'essayer cela pour le moment, mais je m'attends à ce que cela ne fonctionne que lorsqu'il y a une boîte de dialogue demandant le mot de passe lors de l'ouverture du site. Dans mon cas, il n'y a que deux formes. Un pour le nom et un pour le mot de passe. Je vais changer la question pour que ce soit plus clair.
Tim
@Tim a ajouté comment transmettre des données, normalement Vous devez savoir à quelle page la page demande (ou la valeur d'action de la page).
BlueBerry - Vignesh4303
Cela sonnait comme si cela pouvait fonctionner, mais malheureusement, ce n'était pas le cas. Lorsque vous regardez la sortie de curl, cela suggère que le Usernamechamp est correctement rempli avec la bonne valeur, mais pas le Passwordchamp (cela peut être correct comme mesure de sécurité). Je ne sais pas si le bouton d'envoi a été effectivement déclenché. Quelle est la valeur à laquelle est transmise Login?
Tim
5

J'ai finalement trouvé un moyen de me connecter automatiquement à l'aide de 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 ~/.elinks/elinks.conf(si le fichier n'est pas là, créez-en un) 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:

  • Définissez ces deux options
  • Ouvrez la page de connexion elinks, remplissez les formulaires et soumettez-les.
  • Choisissez de vous souvenir du nom et du mot de passe pour une utilisation ultérieure.
  • Fermer les liens
  • Courir elinks -auto-submit http://somesite.com

Cette dernière commande doit effectuer la connexion automatique sans autre intervention de l'utilisateur.

J'utilise en fait timeout 1m elinks -auto-submit http://somesite.com &, de sorte que je n'ai pas de processus de ralenti tournant en arrière-plan tout le temps.

Tim
la source
3

Un moyen simple d'écrire un script avec Selenium .

Vous pouvez utiliser leur plugin Firefox "Test Recorder" pour enregistrer un test de vous connecter au réseau, puis relire le test.

Moshe Katz
la source
0

Oui, il existe un moyen très simple de se connecter à Internet de votre université.Vous pouvez utiliser le navigateur Web « Lynx » qui est un navigateur texte, conçu pour être utilisé sur le terminal. Alors, voici le chemin:

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

où, " username " est le nom du champ correspondant au nom d'utilisateur dans le formulaire et " password " est le nom du champ correspondant au champ de mot de passe et " myname " et " mypassword " sont les valeurs correspondantes à remplir la forme. 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 cela n'a pas fonctionné.

Kushagra Sharma
la source
0

Vous pouvez obtenir un module complémentaire 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é.

myfavoritenoisemaker
la source