Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 17-04-2018
Dark_Code Dark_Code is offline
Miembro
 
Registrado: Jan 2018
Posts: 11
Poder: 0
Dark_Code Va por buen camino
Exclamation Ingresar login de un sitio web desde Delphi

Hola a todos, quiero crear un Login en Delphi, para conectarse a un foro, llenando el Username y el Passaword en delphi, una ves ingresado los datos, que compruebe si existe esa cuenta, el foro es este:
Código Delphi [-]
worldhack.net/profile/login/
, en VB ocupan este codigo:

Código:
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Using EnviarPara As New Net.WebClient
            Dim Param As New Specialized.NameValueCollection
            Param.Add("username_or_email-71", TextBox1.Text)
            Param.Add("user_pass-71", TextBox2.Text)
            Dim RespostaBytes As Byte() = EnviarPara.UploadValues("worldhack.net/profile/login/", "POST", Param)
            Dim RespostaHTML As String = (New System.Text.UTF8Encoding).GetString(RespostaBytes)
            If RespostaHTML.Contains("getNotificationsList") Then
                Form2.Show()
            End If
        End Using
    End Sub


End Class
Espero que me ayuden como hacer el login foro, o pasar ese codigo a delphi. Gracias de antemano
Responder Con Cita
  #2  
Antiguo 18-04-2018
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: Jul 2004
Ubicación: Barcelona - España
Posts: 15.700
Poder: 10
Neftali [Germán.Estévez] Tiene un aura espectacularNeftali [Germán.Estévez] Tiene un aura espectacular
Normalmente puedes hacerlo utilizando las Indy y su componente TIdHttp para realizar un post a la web con los parámetros que necesites.
En este hilo/Mensaje tienes un código de [dec] que se parece bastante a lo que necesitas. Se crea el componente, se pasan los parámetros y se envían con un POST.

De todas formas si haces una búsqueda en los foros, encontrarás otros hilos que hablan de temas similares porque es algo que ya hemos tratado en otras ocasiones:

http://www.clubdelphi.com/foros/show...35&postcount=5
http://www.clubdelphi.com/foros/show...6&postcount=12
http://www.clubdelphi.com/foros/showthread.php?t=37050
https://www.clubdelphi.com/foros/showthread.php?t=72881

Y aquí un mensaje mio de hace un tiempo con una duda similar, donde puedes encontrar código y ejemplos, y la solución que otros compañeros me ayudaron a encontrar.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 19-04-2018
manelb manelb is offline
Miembro
 
Registrado: Mar 2017
Posts: 132
Poder: 2
manelb Va por buen camino
Unhappy

Saludos a todos y perdón por mi ignorancia en el tema...

Este sistema funcionaria con cualquier web donde se espera un valor y devuelve uno o varios resultados??

Mi caso concreto es el de la web del Ministerio de Agricultura donde se consulta el registro de un producto fitosanitario y devuelve el registro, el nombre del producto, la composición y el titular o fabricante de dicho producto.

La web es la siguiente y un posible registro a consultar seria por ejemplo este: 11179

Hace unos meses me puse en contacto con el Ministerio de Agricultura para preguntar si había algún webservice donde poder realizar estas consultas y me respondieron que la única forma era a través del enlace que os he indicado y que debía consultarse directamente a través de la web.
Con este método que proponéis se podría solucionar, y el resultado seria similar a la utilización de un servicio web. Estoy diciendo alguna barbaridad??
Responder Con Cita
  #4  
Antiguo 19-04-2018
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: Jul 2004
Ubicación: Barcelona - España
Posts: 15.700
Poder: 10
Neftali [Germán.Estévez] Tiene un aura espectacularNeftali [Germán.Estévez] Tiene un aura espectacular
Pues basándote en los códigos que hemos puesto puedes hacerlo sin problemas.
Crea un formulario con 1 TButton y 2 TMemo.
Y utiliza el siguiente código:

Código Delphi [-]
procedure TForm2.Button2Click(Sender: TObject);
var
  http: TIdHttp;
  params: TStrings;
  respuesta: string;
const
  url = 'http://www.mapama.gob.es/es/agricultura/temas/sanidad-vegetal/productos-fitosanitarios/registro/productos/proexi.asp';
begin
  http := TIdHTTP.Create(Self);
  params := TStringList.Create;
  try
    params.Add('e=0');
    params.Add('cod=11179');
    params.Add('nom=');
    respuesta := http.Post(url, params);
    Memo2.Lines.Text := Respuesta;

    BuscarDatosRespuestas(respuesta, '', '');
    BuscarDatosRespuestas(respuesta, 'tit.asp?id=50000">', '');

  finally
    http.Free;
    params.Free;
  end;
end;

Verás que el primer TMemo contiene el código HTML de la página de respuesta que necesitas.
A partir de ahí puedes hacer un parser simple conuna rutina como esta para obtener los datos que necesitas:

Código Delphi [-]
function TForm2.BuscarDatosRespuestas(ARespuesta:string; Tag1, Tag2:string):string;
var
  str:String;
  i, j:integer;
begin
  repeat
    i := AnsiPos(Tag1, ARespuesta);
    if (i > 0) then begin
      str := Copy(ARespuesta, (i + Length(Tag1)), Length(ARespuesta));
      ARespuesta := Str;
      j := AnsiPos(Tag2, Str);
      if (j > 0) then begin
        Str := Copy(Str, 1, j-1);
        Memo1.Lines.Add(Str);
      end;
    end;
  until (i = 0);
end;

Te adjunto el proyecto de ejemplo.
Archivos Adjuntos
Tipo de Archivo: zip Consultar_Web_Parametros.zip (6,2 KB, 6 visitas)
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #5  
Antiguo 19-04-2018
Dark_Code Dark_Code is offline
Miembro
 
Registrado: Jan 2018
Posts: 11
Poder: 0
Dark_Code Va por buen camino
Cita:
Empezado por Neftali [Germán.Estévez] Ver Mensaje
Normalmente puedes hacerlo utilizando las Indy y su componente TIdHttp para realizar un post a la web con los parámetros que necesites.....
Hola, e utilizado este codigo para iniciar sesión del foro desde delphi, pero lo que pasa es que al loguearme osea poner el usuario y contraseña, no se puede conectar al servidor.

Este es el link del foro:
Código Delphi [-]
worldhack.net/foro/login.php

MI CUENTA DEL FORO:
USUARIO: caaf95
CONTRASEÑA: clubdelphi

Ahi esta mi source, espero de tu ayuda a que pueda conectarme correctamente al foro desde delphi. Muchas Gracias de antemano.
Archivos Adjuntos
Tipo de Archivo: rar AutoWeb.rar (3,9 KB, 4 visitas)
Responder Con Cita
  #6  
Antiguo 20-04-2018
Dark_Code Dark_Code is offline
Miembro
 
Registrado: Jan 2018
Posts: 11
Poder: 0
Dark_Code Va por buen camino
Red face Ingresar login de un sitio web desde Delphi

Hola a todos de esta comunidad, lo que estoy tratando de hacer es un login de un foro pero que se conecte mediante delphi. Pero al momento de probar, e ingresar mi cuenta registrada no se puede conectar. E probado varios codigos y no logro soluccionarlo.

El foro que quiero conectarme es este:
Código Delphi [-]
worldhack.net/foro/login.php

Esta es mi cuenta registrada del foro:

USUARIO: caaf95
CONTRASEÑA: clubdelphi

Espero que me ayuden a soluccionarlo, se les agradece de antemano.
Archivos Adjuntos
Tipo de Archivo: rar AutoWeb.rar (3,9 KB, 2 visitas)
Responder Con Cita
  #7  
Antiguo 21-04-2018
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: Sep 2004
Ubicación: En algún lugar.
Posts: 28.595
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
No repitas temas, continua en el que creaste.
He unido ambos hilos.
Lee nuestra guía de estilo, gracias.
Responder Con Cita
  #8  
Antiguo 23-04-2018
Dark_Code Dark_Code is offline
Miembro
 
Registrado: Jan 2018
Posts: 11
Poder: 0
Dark_Code Va por buen camino
Alguien que me ayude ?
Responder Con Cita
  #9  
Antiguo 23-04-2018
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: Sep 2004
Ubicación: En algún lugar.
Posts: 28.595
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por Dark_Code Ver Mensaje
Alguien que me ayude ?
¿Cómo te ayudamos? tendrás que poner el código que estás usando, el problema exacto que tienes, etc.
Responder Con Cita
  #10  
Antiguo 23-04-2018
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: Jul 2004
Ubicación: Barcelona - España
Posts: 15.700
Poder: 10
Neftali [Germán.Estévez] Tiene un aura espectacularNeftali [Germán.Estévez] Tiene un aura espectacular
Cita:
Empezado por Dark_Code Ver Mensaje
Esta es mi cuenta registrada del foro:

USUARIO: caaf95
CONTRASEÑA: clubdelphi
Estos datos no me dan acceso.
Error de usuario y/o contraseña incorrectos.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #11  
Antiguo 23-04-2018
Dark_Code Dark_Code is offline
Miembro
 
Registrado: Jan 2018
Posts: 11
Poder: 0
Dark_Code Va por buen camino
Cita:
Empezado por Neftali [Germán.Estévez] Ver Mensaje
Estos datos no me dan acceso.
Error de usuario y/o contraseña incorrectos.


Nueva Cuenta Registrada:

USUARIO: DarkCode99
CONTRASEÑA: clubdelphi

Foro: https://www.worldhack.net/foro/login.php


Código Delphi [-]
uses WinInet;

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 TfrmMain.btn1Click(Sender: TObject);
var
  Campos: TStringlist;
  Respuesta: TStringStream;
begin
  txtInfo.Clear;
  Application.ProcessMessages;
  txtUsuario.Text:= Trim(txtUsuario.Text);
  txtPassword.Text:= Trim(txtPassword.Text);
  if (txtUsuario.Text = EmptyStr) or (txtPassword.Text = EmptyStr) then
  begin
    txtInfo.Lines.Add('Introduce el nombre de usuario y contraseña');
    Exit;
  end;
  Campos:= TStringList.Create;
  Respuesta:= TStringStream.Create('');
  try
    Campos.Values['vb_login_username']:= txtUsuario.Text;
    Campos.Values['vb_login_password']:= txtPassword.Text;
    Campos.Values['do']:= 'login';
    txtInfo.Lines.Add('Enviando usuario y contraseña');
    if SendRequest('www.worldhack.net','/foro/login.php',80,Campos,Respuesta) then
    begin
      if Pos('Gracias',Respuesta.DataString) > 0 then
      begin
        FreeAndNil(Respuesta);
        Respuesta:= TStringStream.Create('');
        txtInfo.Lines.Add('Usuario Conectado Correctamente');
      end else txtInfo.Lines.Add('El usuario o la contraseña no son validos');
    end else txtInfo.Lines.Add('No puedo acceder al servidor');
  finally
    Campos.Free;
    Respuesta.Free;
  end;
end;

Ese codigo estoy que uso, pero lo que pasa es que al ingresar con mis datos ID y Password, no se puede conectar al foro.
Archivos Adjuntos
Tipo de Archivo: rar Login Foro Delphi.rar (3,9 KB, 1 visitas)

Última edición por Dark_Code fecha: 23-04-2018 a las 17:48:01.
Responder Con Cita
  #12  
Antiguo 23-04-2018
bucanero bucanero is offline
Miembro
 
Registrado: Nov 2013
Ubicación: Almería, España
Posts: 111
Poder: 5
bucanero Va por buen camino
Hola a todos

si compruebas los campos que tiene el formulario HTML de ingreso, son algunos mas de los que tienes insertados en tu código, aquí abajo puedes ver las etiquetas que se envían, en el HTML de ingreso y que son las mismas que tu necesitas enviar por POST:

Código:
<form id="navbar_loginform" action="https://www.worldhack.net/foro/login.php?do=login" method="post" onsubmit="md5hash(vb_login_password, vb_login_md5password, vb_login_md5password_utf, 0)">
<input type="text" class="textbox default-value loginInput" name="vb_login_username" id="navbar_username" size="10" accesskey="u" tabindex="101" value="Usuario">
<input type="password" class="loginInput" tabindex="102" name="vb_login_password" id="navbar_password" size="10" style="display: none;">
<input type="text" class="loginInput" tabindex="102" name="vb_login_password_hint" id="navbar_password_hint" size="10" value="Contraseña" style="display: inline;">
<input type="image" src="images/styles/DeFraction/style/loginButton.png" tabindex="104" value="Iniciar sesión" title="Escribe tu nombre de usuario y contraseña en los campos para iniciar la sesión, o pulsa el botón 'registrarse' para crearte un perfil." accesskey="s">
<input type="checkbox" name="cookieuser" value="1" id="cb_cookieuser_navbar" class="cb_cookieuser_navbar" accesskey="c" tabindex="103">
<input type="hidden" name="s" value="">
<input type="hidden" name="securitytoken" value="guest">
<input type="hidden" name="do" value="login">
<input type="hidden" name="vb_login_md5password">
<input type="hidden" name="vb_login_md5password_utf">
</form>
Ademas la dirección a la que debes de enviar esa informacion con los correspondientes campos es la que esta en la etiqueta action del form "https://www.worldhack.net/foro/login.php?do=login", incluido el parámetro do=login que se pasa tanto por GET como por POST.

Aunque lo realmente "complicado" del acceso para esta pagina es que los campos securitytoken, vb_login_md5password y vb_login_md5password_utf seguramente se rellenen con una función javascript que llama el propio form antes de enviarse,
Código:
onsubmit="md5hash(vb_login_password, vb_login_md5password, vb_login_md5password_utf, 0)"
y que seguramente se encargue de codificar ciertos datos de una determinada manera. Por lo que debes de realizar tu también una función en DELPHI que te realice las mismas operaciones en esos respectivos campos.

Un saludo
Responder Con Cita
  #13  
Antiguo 24-04-2018
Dark_Code Dark_Code is offline
Miembro
 
Registrado: Jan 2018
Posts: 11
Poder: 0
Dark_Code Va por buen camino
Cita:
Empezado por bucanero Ver Mensaje
Hola a todos si compruebas los campos que tiene el formulario HTML de ingreso...
Entonces como seria el codigo para que se loguee perfectamente en delphi ?
Responder Con Cita
  #14  
Antiguo 24-04-2018
bucanero bucanero is offline
Miembro
 
Registrado: Nov 2013
Ubicación: Almería, España
Posts: 111
Poder: 5
bucanero Va por buen camino
Cuando capturas la lista de campos que envía el formulario estos es los que se obtiene para establecer la conexión:
Código:
    [vb_login_username] => DarkCode99
    [vb_login_password] => 
    [vb_login_password_hint] => clubdelphi
    [x] => 74
    [y] => 59
    [s] => 
    [securitytoken] => guest
    [do] => login
    [vb_login_md5password] => 		d41d8cd98f00b204e9800998ecf8427e
    [vb_login_md5password_utf] => 	d41d8cd98f00b204e9800998ecf8427e
como ya te puse en mi anterior post, algunos de estos campos los ingresa o modifica el javascript que se ejecuta al enviar el formulario, y aquí no te puedo ayudar mucho mas por que el JAVASCRIPT lo desconozco, aunque aquí tienes el código por si deseas analizarlo

https://www.worldhack.net/foro/clien...n_md5.js?v=425

en cuanto a tu código suponiendo que se establezca bien la conexión SSL con el servidor, entonces deberías de añadir los campos faltantes:

Código Delphi [-]
function codificarPassword(const password:String):string;
begin
  /// esta función debe hacer lo mismo que la función original de JAVASCRIPT.
  if password='clubdelphi' then 
    /// para el password 'clubdelphi' el valor que retorna es este:
    result := 'd41d8cd98f00b204e9800998ecf8427e'
  else 
    result := 'aquí falta poner las funciones que hace la librería de JAVASCRIPT con el password';
end; 

  ...
  try
    ///estos son los campos que debes de insertar
    Campos.Values['vb_login_username']:= txtUsuario.Text;
    Campos.Values['vb_login_password']:= '';
    Campos.Values['vb_login_password_hint'] := txtPassword.Text;
    Campos.Values['x'] := '74';
    Campos.Values['y'] := '59';
    Campos.Values['s'] := '';
    Campos.Values['securitytoken'] := 'guest';
    Campos.Values['do'] := 'login';
    Campos.Values['vb_login_md5password'] := CodificarPassword(txtPassword.Text);
    Campos.Values['vb_login_md5password_utf'] := Campos.Values['vb_login_md5password'];

    ...
    // aquí he modificado la URL de destino e importante: el puerto ha de ser SSL y por defecto es el 443, aunque dependiendo de la configuración del servidor pudiera se cualquier otro.
    if SendRequest('www.worldhack.net','/foro/login.php?do=login', 443,Campos,Respuesta) then
    begin
        ....
    end;
  finally
     ...
  end;

Ya por ultimo no he podido probar todo esto por que ademas las credenciales a la pagina parecen no funcionar incluso ingresandolas a mano.

Un saludo
Responder Con Cita
  #15  
Antiguo 24-04-2018
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: Jul 2004
Ubicación: Barcelona - España
Posts: 15.700
Poder: 10
Neftali [Germán.Estévez] Tiene un aura espectacularNeftali [Germán.Estévez] Tiene un aura espectacular
Cita:
Empezado por bucanero Ver Mensaje
Ya por ultimo no he podido probar todo esto por que ademas las credenciales a la pagina parecen no funcionar incluso ingresandolas a mano.
+1
Siguen sin funcionar.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
necesito ayuda alopezikari Varios 1 04-05-2010 21:54:57
Necesito ayuda MrCuCo Varios 2 24-03-2010 03:35:39
Necesito Ayuda vicoxl16 Internet 1 03-01-2010 20:58:35
Necesito ayuda RoyTan Conexión con bases de datos 1 27-08-2006 06:23:15
Necesito ayuda!! DiRHoP Varios 7 16-09-2005 02:44:42


La franja horaria es GMT +2. Ahora son las 11:03:11.


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