Breadcrumbs
Inicio / Script: consulta de saldo de tarjeta restaurantScript: consulta de saldo de tarjeta restaurant
Last Updated on martes, 17 noviembre 2009 04:24 Written by macuriel martes, 17 noviembre 2009 10:49
Hoy inaguramos la sección de Laboratorio incluyendo el primer script de automatización de “tareas web”.
Este script consulta una página de Gestión de Tarjeta Restaurant, y consulta el saldo para enviar un email al usuario elegido. Parece un simpleza, pero podemos aprender varias cosas dado que es una buena plantilla para hacer nuestros scripts propios.
#!/bin/bash
export AGENT="Mozilla/5.0 (X11; U; Linux i686; es-ES; rv:1.8) Gecko/20051111 Firefox/1.5"
export LOGINURL="https://ticketrestaurant.geanetondemand.com/TRC/index.html"
export POSTLOGIN="https://ticketrestaurant.geanetondemand.com/TRC/checkUserLogin.php"
export POSTDATA="user=usuario&passwd=password&type=trc"
curl -s -A '${AGENT}' -d "${POSTDATA}" -c ticketrestaurant.cookie -o login1.out -e ${LOGINURL} ${POSTLOGIN}
curl -s -A '${AGENT}' -b ticketrestaurant.cookie -o login2.out -e ${POSTLOGIN} https://ticketrestaurant.geanetondemand.com/TRC/home.html
curl -s -A '${AGENT}' -b ticketrestaurant.cookie -o login3.out -e https://ticketrestaurant.geanetondemand.com/TRC/home.html https://ticketrestaurant.geanetondemand.com/TRC/consulta_tarjeta.html
curl -s -A '${AGENT}' -b ticketrestaurant.cookie -o login4.out -e https://ticketrestaurant.geanetondemand.com/TRC/consulta_tarjeta.html https://ticketrestaurant.geanetondemand.com/TRC/logout.html
SALDO=`cat login3.out | sed -n '/SALDO/p' | sed 's/.* \([0-9]*,[0-9]*\) .*/\1/g'`
clear
MAIL_BODY=`echo "Su saldo Sr. Señor: ${SALDO} euros" > /tmp/mail.body`
mail email@domain.com -s "Saldo Tarjeta Restaurant: ${SALDO} euros" < /dev/null
Sigue leyendo para conocer la explicación
La página en cuestión puede verse a través del enlace de la imagen:
Antes de nada, comentaremos las herramientas que hemos utilizado para elaborarlo.
Estas herramientas nos permiten identificar los elementos iniciales: url de inicio, url de login, campos de formulario y dirección del POST. Es importante obtener todos los campos de tipo hidden para lanzar el POST.
Con la variable AGENT simulamos un navegador de usuario, aquí dejo otros ejemplos válidos:
Mozilla/3.0 (compatible; HandHTTP 1.1)
Mozilla/4.0 (compatible; MSIE 4.01; Windows NT Windows CE)
Mozilla/2.0 (compatible; MSIE 3.02; Windows CE; 240x320)
Mozilla/1.22 (compatible; MMEF20; Cellphone; Sony CMD-Z5)
Nokia-Communicator-WWW-Browser/2.0 (Geos 3.0 Nokia-9000i)
Nokia-Communicator-WWW-Browser/3.0 (Geos 3.0 Nokia-9110)
Mozilla/4.51 (compatible; Opera 3.62; EPOC; 640x240)
Palmscape/PR5 (PalmPilot Pro; I)
Mozilla/5.001 (windows; U; NT4.0; en-us) Gecko/25250101
Mozilla/5.001 (Macintosh; N; PPC; ja) Gecko/25250101 MegaCorpBrowser/1.0 (MegaCorp, Inc.)
Mozilla/9.876 (X11; U; Linux 2.2.12-20 i686, en) Gecko/25250101 Netscape/5.432b1 (C-MindSpring)
TinyBrowser/2.0 (TinyBrowser Comment) Gecko/20201231
Mozilla/5.0 (compatible; Konqueror/3.4; Linux 2.6.10-5-386; X11; i686; es, en_US) KHTML/3.4.0 (like Gecko)
Microsoft Internet Explorer/4.0b1 (Windows 95)
Mozilla/1.22 (compatible; MSIE 1.5; Windows NT)
Mozilla/1.22 (compatible; MSIE 2.0; Windows 95)
Mozilla/2.0 (compatible; MSIE 3.01; Windows 98)
Mozilla/4.0 (compatible; MSIE 5.0; SunOS 5.9 sun4u; X11)
Mozilla/4.0 (compatible; MSIE 5.23; Mac_PowerPC)
Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)
Mozilla/4.0 (compatible; MSIE 6.0; MSN 2.5; Windows 98)
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322)
Mozilla/4.0 (compatible; MSIE 7.0b; Windows NT 5.1)
Mozilla/4.0 (compatible; MSIE 7.0b; Windows NT 6.0)
Mozilla/1.1 (compatible; MSPIE 2.0; Windows CE)
Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; PPC; 240x320)
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Avant Browser [avantbrowser.com]; iOpus-I-M; QXW03416; .NET CLR 1.1.4322)
Mozilla/5.0 (compatible; Konqueror/3.1-rc3; i686 Linux; 20020515)
Mozilla/5.0 (compatible; Konqueror/3.1; Linux 2.4.22-10mdk; X11; i686; fr, fr_FR)
Mozilla/5.0 (Windows; U; Windows CE 4.21; rv:1.8b4) Gecko/20050720 Minimo/0.007
Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.8) Gecko/20050511
Mozilla/5.0 (X11; U; Linux i686; cs-CZ; rv:1.7.12) Gecko/20050929
Mozilla/5.0 (Windows; U; Windows NT 5.1; nl-NL; rv:1.7.5) Gecko/20041202 Firefox/1.0
Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.7.6) Gecko/20050512 Firefox
Mozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.7.8) Gecko/20050609 Firefox/1.0.4
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.10) Gecko/20050716 Firefox/1.0.6
Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-GB; rv:1.7.10) Gecko/20050717 Firefox/1.0.6
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.12) Gecko/20050915 Firefox/1.0.7
Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.7.12) Gecko/20050915 Firefox/1.0.7
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8b4) Gecko/20050908 Firefox/1.4
Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8b4) Gecko/20050908 Firefox/1.4
Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9a1) Gecko/20051019 SeaMonkey/1.1a
Mozilla/3.0 (X11; I; SunOS 5.4 sun4m)
Mozilla/4.61 (Macintosh; I; PPC)
Mozilla/4.61 [en] (OS/2; U)
Mozilla/4.7C-CCK-MCD {C-UDP; EBM-APPLE} (Macintosh; I; PPC)
Mozilla/4.8 [en] (Windows NT 5.0; U)
Mozilla/5.0 (X11; U; SunOS sun4u; en-US; rv:1.0.1) Gecko/20020920 Netscape/7.0
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.4) Gecko/20030624 Netscape/7.1 (ax)
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.5) Gecko/20050519 Netscape/8.0.1
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50215) Netscape/8.0.1
Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en-US) AppleWebKit/125.4 (KHTML, like Gecko, Safari) OmniWeb/v563.51
Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en-US) AppleWebKit/125.4 (KHTML, like Gecko, Safari) OmniWeb/v563.57
Mozilla/4.0 (compatible; MSIE 5.0; Windows 2000) Opera 6.03 [en]
Nokia9500/7.23 (Windows 98; U) [en]
Opera/8.00 (Windows NT 5.1; U; en)
Opera/8.0 (X11; Linux i686; U; cs)
Opera/8.02 (Windows NT 5.1; U; en)
Opera/8.50 (Windows NT 5.1; U; en)
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en) Opera 8.50
Mozilla/5.0 (Windows NT 5.1; U; en) Opera 8.50
Opera/8.5 (X11; Linux i686; U; cs)
Opera/9.0 (Windows NT 5.0; U; en)
Mozilla/4.0 (PSP (PlayStation Portable); 2.00)
Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/124 (KHTML, like Gecko) Safari/125
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2)
Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en-us) AppleWebKit/312.1 (KHTML, like Gecko) Safari/312
Mozilla/5.0 (Macintosh; U; PPC Mac OS X; it-it) AppleWebKit/412 (KHTML, like Gecko) Safari/412
ELinks (0.4pre5; Linux 2.4.27 i686; 80x25)
Links (0.99pre14; CYGWIN_NT-5.0 1.5.16(0.128/4/2) i686; 80x25)
Links (2.1pre17; Linux 2.6.11-gentoo-r8 i686; 80x24)
Lynx/2.8.4rel.1 libwww-FM/2.14
Mozilla/4.7 (compatible; OffByOne; Windows 2000
En sucesivos script iremos explicando el resto de comandos.
Etiquetas: curl, sed, shell script

Hola MAC,
He modificado una cosilla, porque cuando utilizas una distribucion de mayores, como ubuntu server, el curl necesita un parametro para hacer conexiones SSL inseguras, con certicados que no cumplen las tres “normas”. Para esto hay que añadir el parametro -k.
Muy util el script!
Web con UserAgentStrings:
http://useragentstring.com
[...] en la web de Ticket Restaurant, he tenido que modificar el script original para adaptarlo. Recordad el artículo anterior con el script y la explicación. Resumen de modificaciones que han [...]