PDA

Ver la Versión Completa : sessiones+cookies en página web


BlackDaemon
22-08-2007, 06:11:04
Buenas noches
después de mucho tiempo he regresado al foro, estaba de vagaciones :D, bueno y por ende han regresado las preguntas (de novato) jeje
ya, ahora lo que me trae por aquí es lo siguiente:

Estoy realizando una especie de emm.. bot ? bueno, la idea es hacer algo así, un robot que ingrese a una página, y me descargue ciertos datos que necesito, no es ficheros ni nada por el estilo, son solo datos en texto plano.

Ahora explicaré como lo hago a mano y luego analizar para poder hacerlo desde delphi, que componentes usar, como usarlos, etc.

Primeramente me logeo a una web miweb.com:8080/index.jsp vale, ahora ingreso los datos de user y pass y si son incorrectos, pues me sale eso, "usuario no encontrado" y si son correctos me sale un link lago así miweb.com:8080/espere.jsp donde me dice "espere unos segundos..... " y al pasar los segundos me muestra de nuevo miweb.com:8080/index.jsp "pero" ya estoy logeado, vamos, ahi tengo el link que me interesa jeje, se llama "tareas pendientes" y luego ingresando a ese links tengo los datos listos para almacenarlos en mi PC.

Bueno ahora lo que se que tengo que hacer es lo siguiente :

Primero tengo las opciones de usar idHTTP o la API WiniNet, ya he optado por usar los componentes Indy, osea idHTTP, ya que para usar la API WinInet se requiere "mas" conocimientos, ahora el siguiente paso sería logearme, luego una ves logeado, buscar o ma sbien dicho parsear el código y buscar el link que necesito, ingresar a ese link y LISTOO!! tengo otro lindo HTML para jugar a parsearlo e ir sacando lo que me interesa y guardarlo en una tabla plana como paradox, YA, eso es todo lo que tengo que hacer en teoria, vamos, que facil parece me se todos los pasos :D pero no se como hacerlos en delphi :\
Aquí muestro lo que he logrado hacer y en que me he trancado como es de suponerse, si no no estaría mi pregunta aquí jeje ;)

Primero como dije, estoy usando idHTTP, y uso este código para logearme en la web..

bueno buscando en este mismo foro he encontrado mas de una opción, y la que he optado es por esta :

procedure TForm1.Button1Click(Sender: TObject);
var
http: TIdHttp;
params: TStrings;
respuesta: string;
begin
http := TIdHTTP.Create(Self);
params := TStringList.Create;
try
params.Add('username=mi_usuario');
params.Add('password=mi_pass');
respuesta := http.Post('mipagina.com:8080/index.jsp', params);
ShowMessage('Respuesta: ' + respuesta);
finally
http.Free;
params.Free;
end;
end;

Ya, he logrado logearme con éxito :) tengo el código html en una variable, PEROOOOOO... èh aquí el problema... como les había mencionado antes la página me muestra una página luego de logearme, una página mipagina.com:8080/espere.jsp y lo que me logro bajar es el código fuente de esa página :confused: que no me sirve para nada, solo un código HTML con unas cuantas etiquetas y el mensaje de " espere unos segundos..." ya, ni modo, era de suponerse no todo es facil como quitarle el chupete a un niño, al tener esa sorpresa inmediatamente he dicho que el sitio tiene una cookie y mantiene una sessión en tu equipo, y pues es verdad eso, ahora el problema... como hago para parecer un navegador ??
Como manejo sessiones en delphi ? como manejo la cookie ? que componente mas tengo que usar a parte de ese idHTTP ?
supongo que tengo que enviar la url miweb.com:8080/index.jsp + cookie, para asi tener una sessión y poder navegar por todos los links de la página, pro que si pongo por ejemplo mipagina.com:8080/tareas.jsp sin haber iniciado sessión me regresa a index.jsp como es de esperarse, bueno pero coo darán cuenta se lo que tengo que hacer pero no se com implementarlo en delphi, ya, creo que son muchas preguntas.. y he buscado en este mismo foro, en estos links he revisado "todos"
http://www.clubdelphi.com/foros/search.php?searchid=811931
y este también que esta muy interesante y me lo he leido todo.
http://www.clubdelphi.com/foros/showthread.php?t=37050&page=2 (gracias señor Al Gonzales ;) )

Ahora estoy trabado en esa parte, me podrían explicar un poco esto ?
o algún código ? no se por que, pero aprendo mas mirando códigos mala maña creo, ya supongamos que lo tengo resuelto, y pase a la otra fase que sería parsear la página buscar el link de "mis tareas" e hacer una petición a miweb.com:8080/tareas.jsp + cookie y luego otra ves lo mismo, paresear y extraer lo que me interesa :)
para eso he visto que hay muchos componetes para parsear html, pero no se por que pero me interesaría poder hacerlos con regex, en fin, solo es un gusto, con tal que me automatize el trabajo, jeje

espero haber sido claro y me hayan entendido, he estado todo el día buscando, leyendo y es todo lo que he podido avanzar, y cualquier respuesta es Bienvenida y se agradece de antemano señores

saludos pues!!

BlackDaemon
26-08-2007, 05:14:05
emm.. alguna idea ?
por cierto ya he revisado el hilo de Al Gonzales, y no entiendo, con solo colocar ese componente de Indy, creo que es Cookies, algo así, con solo ponerlo al form ya el hace todo el trabajo de manejar sessiones ?

saludos!

MaMu
26-08-2007, 13:55:13
Te respondo con un interrogante...

Se puede usar codigo ASP desde tu proyecto Delphi? porque lo resolverias con Session.

Saludos

BlackDaemon
26-08-2007, 16:42:14
pues no, en primer lugar se que me estaría complicando mas, y segundo lugar yo no se asp :), quisiera hacerlo puro delphi, se que no es dificil, pero para uno que recién aprende todo le parece complicado.
saludos!