Acceder desde Java a una web y saltarme una publicidad

B

Estoy con una aplicación Android en la que visualizo el contenido de ciertas páginas web en mis Layouts. Podría haber hecho un WebView de esos para sacar la web directamente pero me he empecinado en no hacerlo así sino descargar el código de la URL que quiero, acceder al contenido que quiero y visualizarlo a mi manera sobre mis Layouts y TextViews. Utilizaría RSS pero muchas webs ofrecen un fichero demasiado escueto y necesito acceder a la noticia completa.

Entonces, con ciertas webs la cosa funciona pero tengo problemas con aquellas que te meten publicidad justo antes de entrar en la página. Ilustro con un ejemplo. http://www.3djuegos.com/noticia/138771/0/reggie-fils-aime/innovacion-mas-importante/wiimote-ultima-decada/

Cuando desde Java accedo a esta dirección empleado la clase URL me devuelve la página de la publicidad y no la que tiene la noticia desarrollada por tanto no puedo acceder a los elementos del DOM que me interesan. Mi pregunta por tanto es si es posible saltarse ese bloqueo o si directamente es imposible.

EDIT: Se me olvidó deciros que claro está que si tienes un complemento Adblock pues obviamente no lo verás. Refresco por si alguno me dice que no le salta la publi. xD

1
JuAn4k4

Esa web que has puesto mete una cookie
"adcortinilla" con valor : "eNpTSjI0MTaONzS2MDMyNbI0Mo831FUCADPnBJs"

Prueba a hacer el request con esa cookie (con ese valor o algo random), y sino funciona, tendrás que hacer 2 requests a la misma url, en la primera lees la cookie y en la segunda se la pones.

1 2 respuestas
B

#2 No me había fijado en la cookie. Gracias por contestar. Me pongo manos a la obra. Si alguien más tiene otra solución que me comente. No está de más buscar nuevos caminos.

Soltrac

Tienes q hacer 2 llamadas, una "oculta" donde guardas la sesión y ya usar esa sesión en las demás llamadas.

1 1 respuesta
B

#2 #4 Muchas gracias. Ya he conseguido saltarme la publicidad siguiendo lo que proponíais. Dejo el código por si alguien en el futuro busca algo parecido:


// 1. Recuperar COOKIE publicidad
URL url2 = new URL(link);
URLConnection con2 = url2.openConnection();
String headerName=null;
String cookiePublicidad = null;
       for (int x=1; (headerName = con2.getHeaderFieldKey(x))!=null; x++) {
		   if (headerName.equals("Set-Cookie")) {                  
String cookie = con2.getHeaderField(x);
cookie = cookie.substring(0, cookie.indexOf(";")); String cookieName = cookie.substring(0, cookie.indexOf("=")); String cookieValue = cookie.substring(cookie.indexOf("=") + 1, cookie.length()); if( cookieName.equals("NOMBRE_COOKIE_PUBLICIDAD") ){ System.out.println(cookieValue); cookiePublicidad = cookie; } } }
// 2. ENVIAR COOKIES PUBLICIDAD URL myUrl = new URL(link); URLConnection urlConn = myUrl.openConnection(); urlConn.setRequestProperty("Cookie", cookiePublicidad); urlConn.connect();
1

Usuarios habituales