viernes, 28 de diciembre de 2012

Consulta tus cuentas sin restricciones

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.

6 comentarios:

  1. Cada vez es más normal este tipo de limitaciones en la banca online...

    Parece que con la crisis, en vez de ampliar los sistemas, la soluciones es limitar las querys.

    Muy buen aporte.

    Un Saludo.

    ResponderEliminar
    Respuestas
    1. Muchas gracias Andromeda, no se si sera por la crisis o no pero es una lastima no poder sacar todo el potencial de las aplicaciones web por culpa de este tipo de limitaciones.

      Eliminar
  2. No se por qué, casi, casi, caigo. En otra banca, antes, sólo se podía pedir por una cantadad determinada. Creo recordar que era "menor que", sin poder poner un rango. Menos mal que ya lo han puesto. Es más "user friendly".

    ResponderEliminar
    Respuestas
    1. ¿En que has caido agux?

      Por suerte si actualizaron esa banca que comentas. Nocreo que quedase muy bien ese tipo de filtro.

      Eliminar
    2. Debe de ser que como lo has posteado el día de los santos inocentes piensa que es una broma, por eso dice que casi cae.

      Yo como no tengo una cuenta en cajasol no puedo probarlo para ver si es verdad o no, pero no creo que sea una broma, cualquiera que tenga una cuenta ahí puede probarlo.

      Saludos y feliz año nuevo.

      Eliminar
    3. Buenos días AOCarallo, feliz año!!!

      Pues si, tal vez fuera que ha parecido una inocentada pero no es así, lo que he comentado sobre Cajamar es completamente cierto.

      Supongo que en Cajasol también pasará lo mismo.

      Saludos

      Eliminar