PDA

Ver la versión completa : Java, TLS y cookies



Segata Sanshiro
05/07/2008, 00:55
Hola chicos, últimamente vengo usando un servicio web que me interesa y tal pero tira demasiado de Flash y navegar por él es algo cansino a veces.

El servicio es bastante simple. Primero hay que loguearse (a través de https, usa TLS para la seguridad, es la única parte que no está en flash) y luego de vez en cuando enviar unas cuantas peticiones GET y POST bastante simples.

Entonces había pensado en hacer un programa en Java bien simple que me facilitara un poco la vida para no pelearme con el interfaz en Flash que han hecho.

El primer problema que me surge: cómo puedo darle a mi programa el nombre de usuario y contraseña y hacer que se loguee para recibir las cookies del servidor? Si fuera una petición POST cutre sin seguridad, como las hay a veces, no habría problemas. Pero es usando TLS. Es posible hacerlo? Qué tengo que averiguar? Luego Java sabrá manejar bien las cookies?

El caso es que como método alternativo (para evitar lo del logueo https) pensé en que podía loguearme desde el navegador usando el formulario que ellos me dan para loguearme, y ver la cookie que recibía. Como el resto de peticiones que se envían al servidor son muy simples, pensé que a lo mejor podía añadirles un campo "Cookie: " y copiar y pegar el contenido de la cookie que he sacado antes usando el navegador (ej.: conexion.setRequestProperty("Cookie", "ASPSESSION blablabla") )

Pero el problema (probablemente derivado de mi ignorancia sobre cómo funcionan las cookies) es que uno de los valores que se envían en el campo Cookie cambia con cada petición. Tiene pinta de ser una fecha en milisegundos desde 1970. Y la aplicación en el servidor es exigente y si el campo no es el que espera deja de funcionar. Y a veces manda error 500 y todo. Podría intentar ajustar manualmente el valor en cada petición, pero dudo que lo consiga.

Bueno, dudo que alguien haya llegado hasta aquí, pero gracias por leerme :D Si pudiera hacer que mi programa se logueara y delegar el tema de las cookies en Java creo que se habría solucionado todo...

joanvr
05/07/2008, 04:11
Mirate libcurl. Yo la usé para un bot en php que se logueaba en una página con https también y me fué de perlas. Creo que en Java habia tambien alguna clase ya hecha que te simulaba un cliente web entero. En PHP hay snoopy (http://snoopy.sourceforge.net/) para ese mismo cometido. Yo la descubrí dp de liarme con la libcurl, así que nunca la he usado :P Pero pinta muy fácil.

Segata Sanshiro
05/07/2008, 13:06
Muchas gracias joan, estoy probando con curl desde la línea de comandos. Con la poca idea que tengo me está resultando un poco difícil pero creo que me he podido loguear, a ver si el resto de peticiones las puede realizar bien. Las cookies que me envía son un poco distintas pero de momento parece que funciona :) Seguiré probando.

joanvr
05/07/2008, 16:15
Me resultó más sencillo de usar cURL con sus bindings de PHP que por la linea de comandos... xD Asegurate de mandar incluso el "REFERER" bien, pues algunos sitios lo comprueban...

Segata Sanshiro
06/07/2008, 12:57
Seguro que lo es, pero no tengo ni idea de PHP :(

Referer, User-Agent, etc., son iguales a los que envía el Flash. Lo único que tengo que seguir investigando es el tema de las cookies pero creo que ya está más o menos solucionado... Gracias de nuevo :brindis: