Simular Navegacion

De Proyectos
Saltar a: navegación, buscar

Etapas:

  • Login Web
  • Procesamiento datos
  • Almacen datos
  • Mostrar datos
  • Interfaz para gestionar aplicacion
    • Colocar datos login
    • Elegir datos a extraer
    • Salvar datos en archivo
    • Donde se mostraran resultados




LOGUEO Y EXTRACCION DE DATOS


En esta etapa se tiene que hacer estas cosas:

  1. Loguearse en la web
  2. Extraer datos de las cuentas que quiera (mediante un formulario)
    1. Cuenta
    2. Fechas de las operaciones
  3. Extraer datos tarjetas
    1. Elegir tarjeta
    2. Aqui es diferente a las cuentas, tendre que buscar liquidaciones, que es donde estan los datos
  4. Los datos de las cuentas y las tarjetas tienen que estar unidos en una sola tabla
    1. Los de tarjeta pueden ir con una etiqueta para distinguirlos
    2. Las fechas de los cargos con tarjeta tengo que mirar cual poner, porque te dan dos







PROCESAMIENTO DATOS

Debido a que el obtener los datos está siendo un poco complicado he decidido ir haciendo el script que procese los datos.
Los pasos que seguira el script seran:

  1. Almacenar operaciones
    1. Nombre operacion
    2. Importe
    3. Fecha
  2. Hacer categorias segun nombre operacion
  3. Construir graficas segun criterios



Almacenar operacion

  1. Base de datos MySQL
    1. Punto a favor, profundizar en la utilizacion de MySQL, que esto me interesa bastante
    2. A la larga creo que el rendimiento seria mayor que con ficheros
    3. Comandos de busqueda ya implementados
  2. Ficheros divididos por meses
    1. Más sencillo para un principio
    2. Para procesar los datos tendria que hacer funciones



Hacer categorias segun nombre operacion

  1. Me gustaria poder agrupar todos los gastos de movil en una categoria, todas las compras superfluas en otras, todos los parkings en otras, ...
  2. Tendria que tener un sistema para poder ir añadiendo palabras claves para que el script las categorizara, sin tener que ir a tocar el codigo fuente



Construir graficas segun criterios

  1. Me gustaria poder tener graficas para comparar los meses, por ejemplo para el consumo del gas o electricidad, que los meses de verano/invierno varia con los demas meses, etc etc
  2. Tendria que haber un sistema para poder escojer los criterios para crear los graficos, una especie de backend donde poder configurar los criterios
  3. Seguramente hara falta graficos que esten siempre presentes al entrar, no tener que crearlos siempre






DIARIO

Para empezar:

- Crear formulario acceso
- Crear cookies sesion
- Analizar encabezados hhtp, post y cookies
- Usar pycurl para loguear en página


Hay una cookie que genera el sitio, JSESSIONID_CTX, que aun no se exactamente que es. Por lo que he leido tiene algo que ver con aplicaciones java, pero por lo que he visto es la cookie que mantiene la sesión abierta. Si borro esta cookie se cierra la sesión

La dirección web esta codificada, y para cada sesión se genera una clave diferente, pero todas siguen este patrón

https://loc3.lacaixa.es/GPeticiones;WebLogicSession=

Sabiendo esto he intentado abrir una sesión manualmente y guardarme el valor de la cookie y el valor de la dirección web, pero el wget:
- No se que hace con la dirección pero no pasa todo lo que hay despues del ;
- No se si una cookie de sesión se puede guardar como archivo de texto y que el wget la envie

Tendré que mirar:
- Donde se guardan las cookies de sesión en el ordenador cliente?
- Como se puede crear una cookie manualmente, sin php, ni javascript, ...
- Se podria enviar la página principal con los campos de usuario y contraseña rellenados?

Funcionamiento página:
-Se carga portal.lacaixa.es
-El formulario tiene una funcion Javascript (CargaYTrata()) en el onsubmit
-Esta funcion coloca la dirección lolopo/nocache/lolopo_es.html?loce=es-particulars-home-particulares-06-i01-3-E en el frame oculto FOculto
-En este frame oculto se carga un script desde una página de la caixa en el que nos da el valor de wblSession (esta variable indica la dirección http de nuestra linea oberta pero codificada)
-En el script también hay las funciones que codifican el pin
-Una vez codificado el pin hay un formulario con inputs ocultos que una función Javascript se encarga de enviar mediante el método document.forms.xxx.submit()



El método que he encontrado ha sido utilizando PhantomJS (una aplicación que ejecuta el motor de Webkit con Javascript).
-Con este programa para acceder a los elementos de la página lo hago a través del DOM.
-Este programa me permite hacer peticiones a la página web, hacer callbacks para esperar la respuesta, y luego continuar ejecuntando el código
-Me he encontrado que para poder navegar por esta web que esta llena de frames, con phantomjs solamente es bastante tedioso. He encontrado CasperJS, que es una API que trabaja conjuntamente con PhantomJS y soluciona el tema de navegar por la web, hacer clicks, etc etc

Procedimiento para loguearse:

Recursos:
Lugar donde se guardan las cookies en Firefox: c:/Usuario/Nombre usuario/AppData/Roaming/Mozilla/Firefox/Profiles/<nombre raro>/cookies.sqlite
Opciones del wget para bajar una página funcional (con estilos e imágenes) -p -k
En wget con -U "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:17.0) Gecko/20100101 Firefox/17.0" simulamos agente de usuario de Firefox