viernes, 2 de febrero de 2018

Manejo de un captcha con JSOUP [Java]

Antes de comenzar estoy muy contento de estar de regreso, espero no desaparecer de nuevo, pero estos últimos meses fueron muy pesados y complicados.

Para iniciar, esta publicación es producto de un recuerdo que tuve hace algunos días, uno de mis primeros proyectos como desarrollador independiente y aprendiz (tiene como 6 años eso) era una aplicación móvil para validar facturas, en esos momentos un cliente nos proporcionaba un servicio para validar un tipo específico de facturas, pero otro tipo en particular de facturas no había forma de validar, solo era posible por medio de un sitio, entonces mi jefe con mucho colmillo (experiencia) hizo parte de la app donde integró el captcha que pedía el sitio para poder finalizar el proceso de validación y así podía hacer una extracción de los datos y mostrarlos como información en la app.

Básicamente para poder entender como funciona esto, gracias a maravillosas bibliotecas, es posible simular que visitas una página web y de esa forma manipular la página a partir del DOM (el código html) con nuestro hermoso Java. Es muy interesante porque para el caso que muestro a continuación se tuvieron que trabajar las cookies para no perder la sesión que se nos asigna cuando ingresamos al sitio. Para adelantar un poco, el sitio con el que trabajaremos es una página de México para consultar la CURP, espero no tener problemas, mi intención no es "hackear" el sitio, ya que nuestra aplicación como lo mencione solo simula que entramos al sitio, llenamos los datos que nos pide y por ultimo nos muestra la información.

Primero creamos un proyecto de maven y agregamos una sola dependencia a nuestro archivo POM.



Jsoup es una interesante biblioteca que si deseas conocer más de ella puedes checarlo en el siguiente sitio: https://jsoup.org/

Ahora, si checas mi código a continuación probablemente pienses: "qué feo programa", la situación es que no dediqué demasiado tiempo para dejar hermoso el código, me interesa mostrarte como trabajar el captcha y solo eso.



El formulario que propongo se constituye de dos partes:
  1. Formulario de solicitud de CURP: Son los dos jFields para ingresar la CURP, Captcha y el botón para solicitar el captcha (ese botón es como si entraras al sitio). Donde se puede ver la captcha es un jPanel, los nombres los podrás identificar fácilmente cuando mires un poco el código.
  2. Resultado de consulta de la CURP: El botón de Consultar lanza una solicitud (simulando que llenaste lo que te pidió la página) para después mostrar la información de la parte inferior con unos pequeños jLabels que al inicio se ven vacíos.


Para poder saber las urls a las que se debe enviar la información utilicé las herramientas de desarrollador de mi precioso Chrome, ahí es posible ver las solicitudes que se lanzan y sus respuestas.

El resultado es el siguiente:



Considerar que hay validaciones que no consideré, por ejemplo el valor del CURP debe ser en mayúsculas y sabemos que tiene un tamaño específico.  También no validé el caso cuando ingresan una CURP incorrecta (supongo se queda vacío todo).

Espero esta publicación pueda ser de utilidad, ¡nos vemos en la siguiente entrega!.

    Choose :
  • OR
  • To comment
1 comentario:
Write comentarios
  1. Muchas gracias por la información. Te tengo una pregunta. ¿Con el cambio de la URL para realizar la consulta, que modificaciones tendríamos que hacer en la página?

    ResponderEliminar