java - Un inicio de sesión exitoso no me proporciona las cookies necesarias para acceder a otras páginas(usando Jsoup)
login web-scraping (1)
Intento iniciar sesión en un sitio web a través de la interfaz de programación (utilizando Java con Jsoup) y guardar la cookie de respuesta para poder pasarla a las siguientes solicitudes. Pero no hay ninguna cookie en el encabezado de respuesta después de iniciar sesión :(
Me las arreglé para iniciar sesión con éxito sin embargo, no hay cookies en el encabezado de respuesta. Para fines de depuración, inicié sesión desde el navegador chrome y marqué el encabezado de respuesta usando la pestaña de red de Chrome y luego de hacer clic en el botón "iniciar sesión", inicia sesión exitosamente en la página de índice pero sin cookies en el encabezado de respuesta. Sé que necesito las cookies para acceder a otras páginas que requieren iniciar sesión porque su encabezado de solicitud tiene una cookie llamada "SESIÓN ..." y nunca recibí esa cookie en el encabezado de respuesta.
¿Alguien podría ayudarme a identificar el problema aquí? He publicado el código para iniciar sesión a continuación. Este es el sitio web www.lib.uts.edu.au
Connection.Reponse res = Jsoup.connect(url)
.data("username", id
, "password", password
, "lt", ltVal
, "_eventId", "submit"
, "sso_submit", "Sign In"
, "rememberMe", "true")
.userAgent("Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.874.120 Safari/535.2")
.cookies(cookies)
.method(Method.POST)
.followRedirects(true)
.execute();
Creo que está buscando la llamada incorrecta, a menudo la cookie se establece en la llamada anterior a la de inicio de sesión (la que carga el formulario de inicio de sesión).
Si prueba este fragmento de código:
//This url loads the login form
Connection.Response response = Jsoup.connect("https://www.lib.uts.edu.au/auth/login?service=https%3A%2F%2Fwww.lib.uts.edu.au%2Fcas%3Fcas_load_iframe%3D1%26destination%3Ddashboard&iframe=true")
.timeout(300000)
.userAgent("Mozilla/5.0")
.method(Connection.Method.GET).execute();
System.out.println("JSESSIONID=" + response.cookies().get("JSESSIONID"));
Verás algo como:
JSESSIONID=E16B98E972FFF05E9091453C01779E67
Espero que tengas allí la cookie de la sesión que estás buscando, solo recuerda usar esa cookie en el inicio de sesión y llamadas sucesivas.
--- EDITAR ---
Hay otro uri que establece una cookie SSESS012 ... y luego redirige a la url que mencioné en mi respuesta original, por favor intente esto:
//Try this other url
Connection.Response response = Jsoup.connect("https://www.lib.uts.edu.au/cas?destination=dashboard&cas_load_iframe=1")
.timeout(300000)
.userAgent("Mozilla/5.0")
.method(Connection.Method.GET).execute();
System.out.println("JSESSIONID=" + response.cookies().get("JSESSIONID"));
System.out.println("SSESS012...=" + response.cookies().get("SSESS012ea49d58f199a67a953e1500684490"));
Ahora verá algo similar a:
JSESSIONID=5466DCD5601415175514AA88FEC967A0
SSESS012...=DfL4tW0xOdfu_9Op52b-z3El3CNG2xxOYZdruuVfWH0
Espero que esto sea lo que necesitabas :)