Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 29-05-2007
imossa imossa is offline
Miembro
 
Registrado: mar 2007
Posts: 15
Poder: 0
imossa Va por buen camino
Efectivamente, entiendo tu aclaración de "legalidad"....
Bueno, sólo prentendo hacer... lo que tantas veces me han explicado: automatizar una tarea que ejecuto todos los dias.
Me imagino que para el registro de votos se tendrá encuenta la ip que envía el voto o similar para gestionar que no se pude votar más de una vez.... no se...
En cuanto al origen, bueno, el que pone el link en su página, me imagino que estará más preocupador por recoger votos que por saber si ha habido intervención humana en la recogida del voto. Son listas de popularidad nada más, con lo que cuantos más arriba aparezcas, más posibles usuarios se podrán conseguir.
Ya me contarás cuando si lo ves bien, o mal, y si se puede hacer algo.
Gracias.
Responder Con Cita
  #2  
Antiguo 29-05-2007
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
Pues no me parece muy complicado, a simple vista el método de votación parece mas simple que el mecanismo de un chupete , habrá que ver como lo maneja internamente.

Supongo que ya has leído el hilo sobre Automatización web. Si lo has hecho y tienes claro como comunicarse con la pagina web lo demás no parece difícil.

Primero accederiamos a la pagina que contiene el boton y nos fijariamos en esta parte:
Código PHP:
<INPUT TYPE="HIDDEN" NAME="31" VALUE="60199"
Parece que "value" es un valor fijo, que seguramente identifica a quien se quiere votar, mientras que "name" tiene un valor variable. Pues bien solo tendríamos que obtener ese valor y simular un POST.

Como ya dije, a simple vista no parece que se implementen mas protecciones. Intentalo y nos cuentas ...
Responder Con Cita
  #3  
Antiguo 29-05-2007
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Yo me he quedado en "dónde" hacer el "POST", puesto que no he podido encontrar un "regvote.php válido"...
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #4  
Antiguo 29-05-2007
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
Cita:
Empezado por dec
Yo me he quedado en "dónde" hacer el "POST", puesto que no he podido encontrar un "regvote.php válido"...
El truco amigo dec puede ser en el header referer de la petición, creo que este debe contener la dirección de la pagina donde se encuentra el botón.
Responder Con Cita
  #5  
Antiguo 29-05-2007
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Bueno. Yo he tratado de hacer un "post" al Script en cuestión... y obtengo el 404... Por otro lado he localizado un "regvote.php" otra URL de la misma Web (ahora no recuerdo el dominio), pero, sin resultados.... es decir, no funcionaba el "post", pero ya no sabe uno si porque no incluyó los parámetros adecuados, si porque no se trata del mismo "regvote.php"...

Cita:
Empezado por Seoane
El truco amigo dec puede ser en el header referer de la petición, creo que este debe contener la dirección de la pagina donde se encuentra el botón.
Pues... chico, no sé, puede ser, sí. Por mi parte le dejo al compañero comprobarlo. ¡Yo ya le he votado hoy!
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #6  
Antiguo 29-05-2007
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
Esto es todo lo que voy a dedicar a este asunto, espero que te sirva. Yo no lo puedo comprobar porque ahora ya ni me deja entrar a la pagina de votación, me dice que ese servidor esta offline y que no puedo votar por el

Es una aplicación de consola.
Código Delphi [-]
program Voto;

{$APPTYPE CONSOLE}

uses
  Windows, SysUtils, WinInet, Classes;

function URLEncode(Str: string): string;
var
  i: integer;
begin
  Result:= '';
  for i:= 1 to Length(Str) do
    if Str[i] in ['A'..'Z','a'..'z','0'..'9','-','_','.'] then
      Result:= Result + Str[ i ]
    else
      Result:= Result + '%' + IntToHex(Ord(Str[ i ]),2);
end;

function SendRequest(Server, Uri: string; Port: Word; Params: TStringList;
  Response: TStream): Boolean;
var
  hNet: HINTERNET;
  hCon: HINTERNET;
  hReq: HINTERNET;
  Context: DWORD;
  Buffer: array[0..10240] of Char;
  BytesRead: DWORD;
  i: integer;
  Str: String;
  Success: Boolean;
begin
  Context:= 0;
  Result := FALSE;
  hNet := InternetOpen('Agente', INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
  if (hNet <> nil) then
  begin
    hCon:= InternetConnect(hNet,PChar(Server),Port,nil,nil,
      INTERNET_SERVICE_HTTP,0,Context);
    if (hCon <> nil) then
    begin
      if Params <> nil then
        hReq:= HttpOpenRequest(hCon,'POST',PChar(Uri),nil,nil,nil,
          INTERNET_FLAG_RELOAD,Context)
      else
        hReq:= HttpOpenRequest(hCon,'GET',PChar(Uri),nil,nil,nil,
          INTERNET_FLAG_RELOAD,Context);
      if (hReq <> nil) then
      begin
        if Params <> nil then
        begin
          Str:= Emptystr;
          for i:= 0 to Params.Count - 1 do
            Str:= Str + '&' + URLEncode(Params.Names[i]) + '=' +
              URLEncode(Params.ValueFromIndex[i]);
          Delete(Str,1,1);
          Success:= HttpSendRequest(hReq,
           'Content-Type: application/x-www-form-urlencoded',Cardinal(-1),
            PChar(Str),Length(Str));
        end else
          Success:= HttpSendRequest(hReq,nil,0,nil,0);
        if Success and (Response <> nil) then
        try
          while (InternetReadFile(hReq,@Buffer,sizeof(Buffer),BytesRead)) do
          begin
            if (BytesRead = 0) then
            begin
              Result := TRUE;
              break;
            end;
            Response.Write(Buffer,BytesRead);
          end;
        except end;
        InternetCloseHandle(hReq);
      end;
      InternetCloseHandle(hCon);
    end;
    InternetCloseHandle(hNet);
  end;
end;

procedure Votar;
var
  Campos: TStringlist;
  Respuesta: TStringStream;
  Str: String;
begin
  Campos:= TStringList.Create;
  Respuesta:= TStringStream.Create('');
  try
    if SendRequest('l2.hopzone.net','/vote.php?site=60199',80,nil,Respuesta) then
    begin
      if Pos('<INPUT TYPE="HIDDEN" NAME="',Respuesta.DataString) > 0 then
      begin
        Str:= Respuesta.DataString;
        Respuesta.Size:= 0;
        Delete(Str,1,Pos('<INPUT TYPE="HIDDEN" NAME="',Respuesta.DataString)+
          Length('<INPUT TYPE="HIDDEN" NAME="') - 1);
        Delete(Str,Pos('"',Str),MAXINT);
        Campos.Values[Str]:= '60199';
        Campos.Values['gogogo']:= 'VOTE FOR Insomnyo Server';
        if SendRequest('l2.hopzone.net','/regvote.php',80,nil,
          Respuesta) then
        begin
          // Aqui comprobariamos la respuesta, pero en principio el voto
          // se ha realizado
        end else Writeln('No puedo acceder al servidor');
      end else Writeln('No encuentro el campo oculto');
    end else Writeln('No puedo acceder al servidor');
  finally
    Campos.Free;
    Respuesta.Free;
  end;
end;

begin
  Votar;
end.

Última edición por seoane fecha: 29-05-2007 a las 20:02:27.
Responder Con Cita
  #7  
Antiguo 29-05-2007
imossa imossa is offline
Miembro
 
Registrado: mar 2007
Posts: 15
Poder: 0
imossa Va por buen camino
Bueno chicos, felicidades, creo que ha funcionado.
De verdad, gracias por vuestra ayuda.
Saludos.

Edito: el navegador no se abre jeje lo abría yo en otro punto. Ahora termino las pruebas....

Última edición por imossa fecha: 29-05-2007 a las 21:16:14.
Responder Con Cita
  #8  
Antiguo 31-05-2007
imossa imossa is offline
Miembro
 
Registrado: mar 2007
Posts: 15
Poder: 0
imossa Va por buen camino
Últimos comentarios tras las pruebas realizadas:
Todo parece correcto, se hace el get y el post (en el código que me pasásteis había un pequeño error, que al llamar la segunda vez a la función que hace el post, no iban los parámetros), y he guardado las respuestas en un post, y es curioso lo que pasa:
La página se carga bien, y se ejecuta el post, pero realmente, el voto no queda registrado.
Además, si ejecuto el form desde el firefox, la página resultante viene en inglés, pero si lo ejecuto con delphi, la página la devuelve en castellano ...

Seguiré haciendo alguna prueba más a ver si lo consigo.
Gracias por todo.
Responder Con Cita
  #9  
Antiguo 29-05-2007
imossa imossa is offline
Miembro
 
Registrado: mar 2007
Posts: 15
Poder: 0
imossa Va por buen camino
Efectivamente, esta idea me ha surgido de otra que me hizo leer esos hilos.
De hecho intenté con el código que vi, simular o lanzar el post, pasándole lo datos, pero, claro, el tema es que uno de los datos lo genera el programa.
Entonces, pensé en, hacer un get y recoger el fuente en un stream, revisarlo para extraer los datos hidden que me ofrecía y hacer un post con ellos, pero, tampoco funcionó....
No obstante y como ya tengo la mente limpia de lo otro que estaba haciendo, voy a repetir toda la jugada y te comento los resultados, ya que si me diriges a ese hilo es porque debe ser el camino más fácil para hacer lo que me propongo.
Gracias por el tiempo que le has dedicado.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
dudas delamisma Varios 1 15-02-2005 23:15:47
dudas con generadores acrophet Conexión con bases de datos 3 19-07-2004 18:57:40
Dudas con el sql acrophet Conexión con bases de datos 6 07-10-2003 16:29:54
Dudas de SQL Rubiel SQL 2 09-06-2003 16:16:50
Dudas de SQL Rubiel Conexión con bases de datos 3 09-06-2003 15:53:41


La franja horaria es GMT +2. Ahora son las 00:34:23.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi