Cómo ingresar información de inicio de sesión para un sitio web desde la línea de comandos de Linux

25

Mi conexión a internet es proporcionada por la universidad. Está protegido con una combinación de nombre de usuario / contraseña. Esto significa que cuando inicio mi computadora, tengo que iniciar un navegador web y abrir un sitio web arbitrario. Luego soy redirigido a una página, que (entre otras cosas) contiene dos formas. En estos tengo que ingresar nombre de usuario y contraseña. Logré hacer esto con firefox (que puede guardar la contraseña) y también con enlaces (que se carga más rápido y desde la línea de comandos).

¿Hay alguna forma de automatizar el proceso de inicio de sesión utilizando un script bash? Esto permitiría iniciar sesión al iniciar, de modo que ya esté allí cuando inicie el servidor X.

Tim
fuente
1
Es posible que pueda llamar al script de inicio de sesión desde el ACTIONatributo del formulario curldirectamente.
terdon
Muchas universidades también ofrecen una red que utiliza la "Autenticación empresarial" (es decir, el uso de un nombre de usuario / contraseña para la conexión de red en sí, en lugar de esperar hasta que intente acceder a una página para solicitar credenciales). La capacidad de almacenar dichas credenciales de red está integrada en el sistema operativo. También es mucho más seguro porque significa que es más difícil para otros espiar tu conexión. Si su universidad lo admite, debe cambiar a él.
Moshe Katz
También nos ayudaría si puede dar un ejemplo (anónimo) de la URL a la que es redirigido cuando inicia sesión. (Anónimo aquí significa que debe eliminar su dirección MAC y / o dirección IP de la URL si están allí, pero deja todo lo demás, incluido el nombre de la Universidad.)
Moshe Katz

Respuestas:

16

Puede probarlo con curl , simplemente puede usar curl como este para iniciar sesión en la página web:

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

Puede pasar datos a un sitio web como este desde la respuesta de Stackoverflow

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

necesita cookies si desea realizar otra solicitud de curl después de iniciar sesión. El ID de sesión en cookies ayudará a la siguiente solicitud de curl autorizada.

Si no quieres cookies puedes usar

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

También puede consultar aquí los comandos especiales

BlueBerry - Vignesh4303
fuente
1
No puedo probar esto en este momento, pero espero que esto solo funcione cuando hay un cuadro de diálogo que solicita la contraseña al abrir el sitio. En mi caso solo hay dos formas. Uno para el nombre y otro para la contraseña. Cambiaré la pregunta para aclarar esto.
Tim
@Tim agregó cómo pasar datos, normalmente Debería averiguar a qué página solicita la página (o el valor de acción de la página).
BlueBerry - Vignesh4303
Esto sonaba como si pudiera funcionar, pero lamentablemente no fue así. Cuando se observa la salida de curl, se sugiere que el Usernamecampo se rellena correctamente con el valor correcto, pero el Passwordcampo no (esto puede ser correcto como medida de seguridad). No estoy seguro de si el botón de envío se activó realmente. ¿Importa a qué valor se pasa Login?
Tim
5

Finalmente encontré una manera de iniciar sesión automáticamente usando elinks. ¡Funciona e incluso es fácil de configurar!

Deben establecerse dos opciones. Esto se puede hacer agregando las siguientes líneas ~/.elinks/elinks.conf(si el archivo no está allí, cree una) o cambiando los valores en las posiciones respectivas en el diálogo de opciones dentro de 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

Los pasos para un inicio de sesión automático programable son:

  • Establecer esas dos opciones
  • Abra la página de inicio de sesión elinks, complete los formularios y envíelos.
  • Elija recordar nombre y contraseña para su uso posterior.
  • Cerrar enlaces
  • correr elinks -auto-submit http://somesite.com

El último comando debe realizar el inicio de sesión automático sin mayor interacción del usuario.

Realmente uso timeout 1m elinks -auto-submit http://somesite.com &, por lo que no tengo un proceso de enlaces inactivos ejecutándose en segundo plano todo el tiempo.

Tim
fuente
3

Una forma sencilla de escribir esto es con Selenium .

Puede usar su plugin "Test Recorder" de Firefox para grabar una prueba de usted mismo iniciando sesión en la red y luego reproducir la prueba.

Moshe Katz
fuente
0

Sí, hay una manera muy simple de iniciar sesión en Internet de su universidad. Puede usar el ' navegador web Lynx ', que es un navegador basado en texto, diseñado para usar en la terminal. Entonces, aquí está el camino:

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

donde, ' nombre de usuario ' es el nombre del campo correspondiente al nombre de usuario en el formulario y ' contraseña ' es el nombre del campo correspondiente al campo de contraseña y ' myname ' y ' mypassword ' son los valores correspondientes a completar la forma. Puede encontrar el nombre del campo utilizando 'Inspeccionar elemento' desde cualquier navegador. Intenté con curl como lo indica la respuesta de BlueBerry - Vignesh4303 pero no funcionó.

Kushagra Sharma
fuente
0

Puede obtener un complemento para su navegador que iniciará sesión automáticamente en sitios web con contraseñas guardadas. Usé AutoAuth con firefox. Luego, inicie sesión una vez y guarde sus credenciales, luego escriba un script que solo tenga

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

Cuando se ejecute, se ejecutará y se iniciará sesión automáticamente. Intenté con varios sitios y funcionó bien.

myfavoritenoisemaker
fuente