Simulación de navegación manteniendo la sesión con wget

0
15774

Simulación de navegación manteniendo la sesión con wget

1. Introducción

Es habitual que en las tareas de mantenimiento de nuestros sistemas automaticemos procesos que realizamos todos los días. En este tutorial vamos a ver un ejemplo práctico donde necesitemos simular la navegación por un sitio web como si de un navegador se tratara utilizando el comando wget.

Imaginaros que tenemos contratado un hosting donde tenemos nuestra aplicación web y queremos automatizar la tarea de descarga del backup de nuestro schema de la base de datos. El proveedor habitualmente nos ofrece la herramienta «CPanel» para gestionar nuestro servidor y entre las opciones se encuentra la posibilidad de descargar el backup de la base de datos.

El problema es que para poder descargar el backup necesitamos previamente habernos logado con nuestro usuario en el CPanel lo que implica que tenemos que mantener la cookie de sesión entre una petición y otra. Gracias a wget este problema se resuelve ya que nos permite guardar y enviar las cookies entre diferentes peticiones.

A continuación os muestro un gráfico donde queda más claro el proceso que debe automatizar nuestro script.

2. Entorno

Entorno utilizado para escribir este tutorial:

  • Hardware: Mac Book Pro (Core 2 Duo 2,8 Ghz, 4 GB RAM, 500 GB)
  • Sistema Operativo: Ubuntu Server 64 bits
  • Kernel: 2.6.35

3. Simulando la navegación con wget

Para aquellos que no lo sepáis el comando wget nos permite descargar contenidos de los servidores web de forma sencilla con solo poner la url (Por ejemplo «wget http://www.adictosaltrabajo.com/tutoriales/pdfs/spnego-spring.pdf»).

En nuestro caso lo vamos utilizar también para simular la navegación por un sitio web manteniendo las cookies de una petición a otra.

Para nuestro ejemplo, la primera petición que realicemos al servidor debe simular el envío del formulario de login por post y además guardar las cookies para mantener la sesión en las siguientes peticiones. Lo haremos de la siguiente forma:

wget "https://www.midominio.com/cpanel/login" --post-data "user=username&pass=password" --no-check-certificate --keep-session-cookies --save-cookies /tmp/cookies -S -O /dev/null 

Con este comando lo que estamos diciendo a wget es que envíe una petición POST con los parámetros «user=username&pass=password» a la url https://www.midominio.com/cpanel/login, que no valide el certificado y que guarde las cookies en el fichero /tmp/cookies y ademas que la respuesta la guarde en /dev/null.

La siguiente petición será descargar nuestro fichero de backup utilizando las cookies de la primera petición.

wget "https://www.midominio.com/cpanel/backup.sql.gz" --no-check-certificate --keep-session-cookies --load-cookies /tmp/cookies

Aqui le estamos indicando a wget que se descargue el fichero https://www.midominio.com/cpanel/backup.sql.gz sin validar el certificado del servidor y que envíe al servidor las cookies almacenadas en el fichero /tmp/cookies.

Como habéis podido ver con estos dos sencillos comandos hemos conseguido la descarga de un fichero en la zona privada de un web.

Ahora vamos a realizar un Shell Script que nos automatice la descarga.

USER="username"  
PASSWD="password"  
  
URL="https://www.midominio.com/cpanel"  
PATH_FILE_COOKIE=cookie_midominio  
BACKUP_DB="getsqlbackup"  
DIR_BACKUP_DB=/var/backups  
  
SCHEMA_DB="schema.sql.gz"  
  
BACKUP_FILE="$BACKUP_DB/$SCHEMA_DB"  
  
echo "stating $URL backup"  
  
echo "Log in in Cpanel"  
wget "$URL/login" --post-data "user=$USER&pass=$PASSWD" --no-check-certificate --keep-session-cookies --save-cookies $PATH_FILE_COOKIE -S -O /dev/null  
  
echo "downloading sql file: $BACKUP_FILE"  
  
wget "$URL/$BACKUP_FILE" --no-check-certificate --keep-session-cookies --load-cookies $PATH_FILE_COOKIE=  
  
cp $SCHEMA_DB $DIR_BACKUP_DB  
  
rm $PATH_FILE_COOKIE  
  
echo "done"

Y por último si queremos que se ejecute todos los días tendremos que configurar el crontab en nuestra máquina pero este paso ya lo hacéis vosotros.

4 Conclusión

Como habéis podido ver automatizar ciertos procesos que implican navegación por la zona privada de una aplicación web es relativamente sencillo con wget y el poder del Shell Script.

DEJA UNA RESPUESTA

Por favor ingrese su comentario!

He leído y acepto la política de privacidad

Por favor ingrese su nombre aquí

Información básica acerca de la protección de datos

  • Responsable:
  • Finalidad:
  • Legitimación:
  • Destinatarios:
  • Derechos:
  • Más información: Puedes ampliar información acerca de la protección de datos en el siguiente enlace:política de privacidad