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
Automatizar la votación en un sistema de votaciones en línea

Bueno, saludos otra vez.
Me imagino que todos conocéis las típicas páginas con links para emitir votos que se computan en una lista de "popularidad", hay juegos, foros, portales, etc... con este tipo de links.
Mi pregunta es si, con Delphi se puede generar algún proceso que, emita todos los días un voto a un link determinado.
La gestión de lanzamiento lo tengo claro, sólo necesitaría saber es, de qué manera puedo ejecutar el link y su código para que se registre ese voto.
He visto que, cuando accedo al link, se genera un id único cada vez, que está oculto (sólo se ve al editar el html que muestra el navegado)
Gracias por vuestra ayuda, y felicidades por el alto nivel que se alcanza en estos foros.
Responder Con Cita
  #2  
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,

Me atrevería a decir que si lo han hecho bien, será imposible (o nada trivial) duplicar el voto, o mejor dicho "automatizar" el voto de modo que puedas votar varias veces. Claro que quien hace la ley hace la trampa, pero, sin más datos para mí tengo que no será sencillo intentar ayudarte. Y luego está el que pides ayuda para "jorobar" un sistema de votos... probablemente para beneficio propio... No sé, no sé...

PD. Voy a editar el título del Hilo, puesto que "Dudas en la Web" no parece muy apropiado. Revisa la guía de estilo para más información.
__________________
David Esperalta
www.decsoftutils.com

Última edición por dec fecha: 29-05-2007 a las 18:29:09.
Responder Con Cita
  #3  
Antiguo 29-05-2007
imossa imossa is offline
Miembro
 
Registrado: mar 2007
Posts: 15
Poder: 0
imossa Va por buen camino
Bueno, no se trata de nada ilegar (al menos no pienso en jorobar nada), simplemente, yo todos los días voto en una página, a través de un link, y simplemente quería hacer un proceso automático para no tener que cliclar.
Con eso, pensaba más que en hacer algo ilegal, hacer algo para mi comodidad.
No deseo duplicar el voto, además no creo que eso se puediera hacer. Símplemente, es por facilitarme la vida, ya que todos los días, hago la operación a mano.
Ahora, si eso va en contra de alguna lei, entiendo que, en caso de tener el conocimiento no queráis compartirlo jejeje.
Gracias de todas formas.
Lo que si puedo decir que a simple vista, el link accede a una página web con un formulario y un botón.
Responder Con Cita
  #4  
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,

Pues, para empezar... me temo que tendrías que referir de qué página Web estamos hablando. Creo que sería preciso. Y, por otro lado, en lo que respecta a si es "legal" o no (entendiendo esta palabra sólo como si está bien o parece bien hacer lo que se quiere hacer), personalmente, imagino que quien sea querrá votos "humanos", y no de algún "programa robot". A esto más bien me refería.

Pero, no puedo negar que, por otro lado, si permiten votar una vez al día... lo cierto es que no estarías sino automatizando esa tarea: siempre que no trataras de votar más de una vez al día (si esa es la restricción) pues tampoco parece que quieras hacer nada malo. Al fin y al cabo tú estarías votando, aunque lo hicieras a través de un programa.

Ahora bien, como digo, habría que empezar por saber qué es lo que hay que superar... de qué Web estamos hablando.

PD. Si no quieres decir el sitio Web de que se trata... tal vez puedas describir el problema un poco más detalladamente, o, en todo caso, siempre querrás revisar este Hilo: Automatización Web (HTTP sin navegador).
__________________
David Esperalta
www.decsoftutils.com

Última edición por dec fecha: 29-05-2007 a las 18:47:04.
Responder Con Cita
  #5  
Antiguo 29-05-2007
imossa imossa is offline
Miembro
 
Registrado: mar 2007
Posts: 15
Poder: 0
imossa Va por buen camino
El link al que hago click tiene esta información:

http://l2.hopzone.net/vote.php?site=60199

y carga una página con este código:

Código PHP:
<script type="text/javascript" src"tools/flashobject.js"></script><HTML>
         <HEAD>
         <meta name="robots" content="all">
         <meta name="description" content="Top Mmorpg ,servers, sites, games, music, celebrities, and more.">
         <meta name="keywords" content="top list, sites, sites links, top web sites, toplists, top lists, top list web directory, the best sites, webdirectory search engines, searchengines portals, free internet community, send postcards, free traffic, free webpromotion, linkexchange, link exchange programs, webmaster community, webmaster affiliate programs, computers free, cliparts, clip arts, desktop themes, free games, free screensavers, free wallpapers, internet chat, cool sites, personal homepages, webmasters animals, crafts movies, free mp3 music, free cash, freestuff, free stuff greetingcards, shopping women ,business, free gsm telecom, free webhosting, free magazines, cars, celebrity, celebrities, free contests, dogs education, finance, free fonts, freeware, free graphics, health horoscopes, jobs, jokes ,free marketing, midi, pets, free phones, free, free software, free themes, top websites, top sites, travel free, videogames, webcams, webdesign, webhosting, entertainment">
         <meta name="revisit-after" content="1 days">
     <title>Welcome to HopZone.Net Voting page</title>
         <link href="styles.css" rel="stylesheet" type="text/css">
    <script language="JavaScript">
    <!--
    if (parent.frames.length > 0)
    {
    parent.location.href = location.href;
    }
    -->
    </script>
    <style type="text/css">
<!--
.vote-button {
    font-family: Tahoma;
    font-size: 12px;
    font-weight: normal;
    color: #000033;
    text-decoration: none;
    padding: 4px;
}
-->
</style>

         </HEAD>
    <body bgcolor="#EEF0FF">
    <div align="center">
      <table width="800" border="0" cellpadding="0" cellspacing="0" class="tabele-mici">
        <tr>
          <td height="23"><div align="center"><img src="images/header.jpg" width="800" height="82"></div></td>
        </tr>
      </table>
      <br>
      <table width="800" border="0" align="center" cellpadding="5" cellspacing="0" class="tabel-mijloc">
        <tr>
          <td height="23" class="text-in-site"><div align="center"><strong><font size="5">
        LINEAGE  2 TOPLIST + SERVER STATUS + COMMENTS</font></strong></div></td>
        </tr>
      </table>
      <br>
<form name="gogo" method="POST" action="regvote.php">
<table width="68%" height="106" border="0" align="center" cellpadding="3" cellspacing="0" class="tabel-mijloc">
              <tr>
                <td height="106" class="text-in-site"><div align="center">

                    <p> <font color="#333399">
                      </font>
                  <INPUT TYPE="HIDDEN" NAME="30" VALUE="60199">


                      <input type="submit" class="vote-button" name="gogogo" value="VOTE FOR Insomnyo Server"><br><br>
                    </p>
                  </div></td>
              </tr>
            </table>
</form>

      <p><span class="text-in-site"><a href="http://l2.hopzone.net/">[Click here if you don't want to Vote]</a></span></p>
      <p>


</p>
  <p><span class="text-in-site"><br>
    <a href="index.php">HopZone.Net</a> &copy; 2000-2005<br>
    </span></p>
  </div>
</body>
</html> 
Se podría hacer algo?
muchas gracias.
Edito: mis conocimientos de html y similar son muy bajos, ya que me dedico al desarrollo de aplicaciones generalmente para sistemas industriales con sistemas operativos propietarios, y suelos hacerlos en C o Basic. Delphi lo uso como apoyo para traspasos de ficheros y comunicaciones y cosas similares.... pero veo que hay un input type oculto con un dato que varia cada vez que accedo a la página.

Última edición por imossa fecha: 29-05-2007 a las 18:54:16.
Responder Con Cita
  #6  
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
  #7  
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
  #8  
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
  #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
  #10  
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
  #11  
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
  #12  
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
  #13  
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
  #14  
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
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 13:57:12.


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