En estas fechas solemos hacer balance de todo lo acontecido durante el año y nos hacemos propositos para mejorar en el año que va a comenzar y, tal y como está la situación económica, también es buen momento para hacer balance de nuestras cuentas y así poder ver donde se nos ha ido el presupuesto.
En mi caso accedí a la banca electrónica de Cajamar e intenté realizar una consulta de movimientos desde el uno de enero de 2012 hasta hoy pero Cajamar solo permite realizar consultas de seis meses (en bloques de seis meses), imagino que para evitar la saturación de sus sistemas pero en fin, el caso es que no he podido salirme con la mía... ¿o sí?
Al pulsar el botón "Aceptar" de la página de Cajamar me di cuenta que no se hacía ninguna petición al servidor (no se volvía a cargar la página) y por tanto la validación de los datos se debía hacer utilizando javascript así que me puse a mirar el código de la página para ver si me podía saltar dicha validación.
Como se puede apreciar, al pulsar el botón "Aceptar" se llama a la función doSubmit pasandole los parámetros 'ACEPTAR', 2 y false. Si buscamos la función doSubmit la encontramos en el archivo screen_code_v1.js que es incluido en la parte inicial de la página.
Y al abrir este archivo y mirar lo que hace la función doSubmit nos encontramos con una pequeña sorpresa:
A la función se le pasan tres parámetros y el segundo de ellos (llamado a) es el que controla si se debe o no hacer la validación de los campos del formulario. En este caso si el valor de a es igual a 2 se realizará la validación del formulario y si le indicamos cualquier otra cosa no se realizará dicha validación. ¡Esto pinta bien!
¿Podríamos llamar a la función doSubmit con los parámetros 'ACEPTAR', 1 y false? la respuesta es sí pero tenemos que tener en cuenta dos cosas, la primera es que la página de Cajamar se carga en varios frames y que el formulario se encuentra en un frame llamado "contenido" y la segunda es que debemos simular la pulsación del botón ACEPTAR por lo que debemos ejecutar todo el código de dicho botón, es decir:
field_executed(getFieldLayer('ACEPTAR'),getForm('ACEPTAR').REACTION_CODE); doSubmit('ACEPTAR',2,false);
Por lo que nuestro código debería quedar así
contenido.field_executed(contenido.getFieldLayer('ACEPTAR'), contenido.getForm('ACEPTAR').REACTION_CODE); contenido.doSubmit('ACEPTAR',1,false);
Notese que hemos cambiado el 2 por un 1 en la función doSubmit y que hemos añadido el identificador "contenido" antes de llamar a las funciones.
Como queda un poco largo lo podemos guardar en nuestros favoritos (marcadores) creando así un nuevo
bookmarklet como los que ya he comentado
en alguna ocasión.
Y, finalmente, después de ejecutar este bookmarklet tengo ante mi la consulta de todo el año de mi cuenta.
Si queremos acortar un poco el bookmarklet podemos introducir la fecha que queremos en el formulario y luego pulsar el botón "Aceptar". Esto hará que se muestre el mensaje de error pero también hará que se ejecute la primera parte del código del bookmarklet, es decir field_executed(getFieldLayer('ACEPTAR'), getForm('ACEPTAR').REACTION_CODE) por lo que ya no sería necesario volver a ejecutarla y ahora si podríamos escribir en la barra de direcciones simplemente javascript: contenido.doSubmit('ACEPTAR',1,false) obteniendo el mismo resultado.
Si todo esto os parece demasiado complejo también podéis utilizar la extensión
Tamper Data de Firefox y modificar los datos del formulario justo antes de ser enviados obteniendo el mismo resultado.
Espero que os sea de utilidad y que el balance del año (y de vuestras cuentas) haya sido positivo.