Usar wget en condiciones extremas: sesiones PHP

Hoy me he encontrado con un problema, una website de muy mal agüero no me dejaba buscar informacion dentro de una tabla que ocupaba 172 pagina. Es un problema buscar entre tal numero de paginas cuando no sabes exactamente donde demonios esta la entrada, así que he pensado que nada como un for y un wget:
for i in $(seq 0 1 172)
do
   wget "http://sitiowarro.org/tabla.php?page=$i"
done


Te crees el rey del mambo hasta que te das cuenta que si no estas logueado, no puedes ver la dichosa pagina cawento

Así que dispuesto a solucionarlo, he echado mano del man del wget. Lo que nos interesa es esto:
       --post-data=string
       --post-file=file
           Use POST as the method for all HTTP requests and send the specified
           data in the request body.  "--post-data" sends string as data,
           whereas "--post-file" sends the contents of file.  Other than that,
           they work in exactly the same way.


La técnica consiste en hacer un POST con el login usando cookies, es decir marcando que se nos recuerde el login y cargar esas cookies cuando vamos a descargar las paginas.

Entonces

wget --save-cookies cookies.txt --post-data "patatinpatatan" [url]http://sitiowarro.org/login.php[/url]
for i in $(seq 0 1 172)
do
   wget --load-cookies cookies.txt -p "http://sitiowarro.org/tabla.php?page=$i"
done


El único problema que nos queda es averiguar que demonios ponemos en el POST. Los datos son el nombre de usuario y el password básicamente, pero cada pagina usa sus variables.
Tenemos que hechar mano de un sniffer. Como no estoy muy puesto en sniffers, usaré ethereal corriente y moliente. Inicio el sniffeo, hago login en la pagina (marcando lo de recordar la sesión) y paro el sniffeo.
Ahora toca buscar entre los resultados del protocolo HTTP (los filtros van bien para esto, pero si no teneis mucha carga de red, no son necesarios) un método POST. Seleccionamos la entrada del POST y buscamos la parte del paquete que especifica DATA. Es posible que el paquete se encuentre partido, así que buscad por continuaciones del paquete: es la ultima parte, al menos en mi caso.
Puede saliros algo como esto:
loginid=Raharu&password=atitelovoyadecir

Solo falta meterlo en el primer wget (donde pone patatinpatatan) y disfrutar de un trabajo conseguido.

Esta forma, puede ser la más complicada de conseguir lo que pretendia, pero me ha hecho ilusión descubrirla yo solo ^^U. Si teneis alguna duda, como por ejemplo, ¿que demonios estas haciendo? responderé encantado.

Saludos y felices examenes.
Edito: He puesto esto en el weblog, así que sigue la CC
Edito2: Si Ark lo ve y quiere meterlo en el wiki, es libre de hacerlo ;)
¿A ti no te ha quedado nada para septiembre no? X-D X-D X-D X-D X-D X-D
Buenas

Felicidades Raharu :-)

Y gracias por compartirlo con nosotros es un mensaje muy interesante y demuestra que la necesidad de solucionar problemas agudiza el ingenio y que man es nuestro amigo :-)
Muy bien pensado Raharu [beer]

PD: Si ,parece que te ha quedado poco o nada para setiembre XD
Pues si tanto insistis os lo digo: Por segundo año consecutivo septiembre totalmente limpio [angelito]
A la hoguera con él


ratataaaa Raharu [toctoc]


Enhorabuena, tanto por pasar limpio como por el "método Raharu".

Un saludo
Para lo de las cabeceras podías haber usado la extensión "Live HTTP headers" de Firefox :D
Churly escribió:Para lo de las cabeceras podías haber usado la extensión "Live HTTP headers" de Firefox :D


Ya sabia yo que debia haber una forma más fácil de hacerlo, aunque con el sniffer queda más pr0 [qmparto]
Raharu escribió:
Ya sabia yo que debia haber una forma más fácil de hacerlo, aunque con el sniffer queda más pr0 [qmparto]


Puestos a hacerlo como empezaste pozí :P, yo hubiese cerrado el navegador :Ð
Este post a tan pocos días de septiembre debería ser penalizado con 64 instalaciones seguidas de windows xp en un pentium 120. Y con la caché L2 desactivada.

He dicho.

salu2
Briareos_H escribió:Este post a tan pocos días de septiembre debería ser penalizado con 64 instalaciones seguidas de windows xp en un pentium 120. Y con la caché L2 desactivada.

He dicho.

salu2


Si tiene que ser un XP puede ser este?
http://barrapunto.com/article.pl?sid=04/08/23/1512251&mode=thread

Saludos
PD: Como nos rayamos con los offtopics [poraki]
Raharu escribió:
Si tiene que ser un XP puede ser este?
http://barrapunto.com/article.pl?sid=04/08/23/1512251&mode=thread

Saludos
PD: Como nos rayamos con los offtopics [poraki]


lo he visto como hace media hora y aun me estoy tronchando..... XD [sati]
11 respuestas