Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
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 Hace 2 Semanas
guspx guspx is offline
Registrado
 
Registrado: jun 2019
Posts: 5
Poder: 0
guspx Va por buen camino
Question Intento de Post con usuario y contraseña sin saber la url de login

Hola, estoy intentando acceder a una web con mi nombre de usuario y contraseña usando TIdhttp.Post y creo que usa autenticación Web, pero no estoy seguro porque examinando el código HTML en chrome no aparece ninguna entrada de la forma

Código:
<form method="post" action="url"
Es la web de un periódico que ha implantado suscripción hace muy poco, y lo que me temo es que oculta de alguna forma esos datos, y no sé lo suficiente de este tema para saber si los navegadores los obtienen mediante algún código javascript o como lo hacen, o simplemente es que no usa el procedimiento post y lo hace haciendo get, pero me extrañaría mucho.

Mi código es:

Código:
function Login: string;
var
    Request: TStringList;
    IdSSLIOHandlerSocket: TIdSSLIOHandlerSocketOpenSSL;
begin
    Result := '';
    IdSSLIOHandlerSocket := TIdSSLIOHandlerSocketOpenSSL.Create(self);
    try
        Request := TStringList.Create;
        try
            Request.Add('username=miusername');
            Request.Add('password=mipassword');
            Request.Add('remember=1');
            Request.Add('remember=true'); // hay una casilla de verificación con ese "name" y no se si ponerle 1 o  true
            IDHttp1.IOHandler:= IdSSLIOHandlerSocket;
            IdHTTP1.AllowCookies := True;
            IdHTTP1.HandleRedirects := True;
            IdHTTP1.Request.ContentType := 'application/x-www-form-urlencoded';
            IdHTTP1.Request.Connection := 'keep-alive';
            Result := IdHTTP1.Post({url donde está físicamente el botón de submit}, Request);
        finally
            Request.Free;
        end;
    except
        on E: Exception do ShowMessage(E.Message);
    end;
end;
En el retorno del Post tengo el mismo código HTML que puedo ver en chrome en la página del login.
En Idhttp1.Response.RawHeaders.Text puedo ver que la conexión está cerrada, así que no ha funcionado lo de keep-alive y no hay ninguna cookie, por lo que no hago el login realmente.
Supongo que lo que está mal es que la url que tengo que poner en la instrucción Post no es esa, y sería la que en casi todos los ejemplos que he visto la que vendría en <form action, de haber alguna en el código fuente, pero ya digo que no hay.

Entonces, ¿alguna idea de cómo puedo obtener esa url? Se supone que en algún sitio tiene que estar, para que los navegadores vayan allí, a no ser que los navegadores en sí sean los que se encargan de ocultarla por algún convenio que haya por ahí extraño. Muchas gracias por cualquier idea, si acaso puedo mandar la url por mp.
Responder Con Cita
  #2  
Antiguo Hace 1 Semana
tsk tsk is offline
Miembro
 
Registrado: dic 2017
Posts: 19
Poder: 0
tsk Va por buen camino
Sin ver la página me puedo imaginar que el front-end está hecho ya sea con Angular o React. Y pues la mayoría está hecho en javascript.

Entonces, si haces un simple "Ver código fuente" te vas a topar con algo parecido a


Código PHP:
<!doctype html>
<
html lang="en">
<
head>
  <
meta charset="utf-8">
  <
title>Todo List</title>
  <
base href="/">

  <
meta name="viewport" content="width=device-width, initial-scale=1">
  <
link rel="icon" type="image/x-icon" href="favicon.ico">
<
link rel="stylesheet" href="styles.fd5a66b8129deb426b66.css"></head>
<
body>
  <
app-root></app-root>
<
script type="text/javascript" src="runtime.26209474bfa8dc87a77c.js"></script><script type="text/javascript" src="es2015-polyfills.bda95d5896422d031328.js" nomodule></script><script type="text/javascript" src="polyfills.8bbb231b43165d65d357.js"></script><script type="text/javascript" src="main.cf9b53bb05fc8927a7d8.js"></script></body>
</html> 

En Chrome, con las herramientas de desarrollador puedes inspeccionar, pero aún así no vas a obtener mucha más información

Código PHP:
<form _ngcontent-mhg-c3="" class="form ng-untouched ng-pristine ng-valid" novalidate="">
<
input _ngcontent-mhg-c3="" name="title" placeholder="Add Todo..." type="text" class="ng-untouched ng-pristine ng-valid">
<
input _ngcontent-mhg-c3="" class="btn" type="submit" value="Submit">
</
form

En el caso de angular, esa forma lo genera del siguiente código


Código PHP:
<form class="form" (ngSubmit)="onSubmit()">
    <
input type="text" name="title" [(ngModel)]="title" placeholder="Add Todo...">
    <
input type="submit" value="Submit" class="btn">
</
form

La forma en que podrías ver, con las mismas herramientas de desarrollador, es observando en el tab que se llama Network




Ya que sabes cual es la URL, podrías buscarla en las fuentes de javascript, por ejemplo, en este caso se encuentra en main.XXXXXXXXXXX.js

Código PHP:
this.todosUrl="https://jsonplaceholder.typicode.com/todos 
Y la función addTodo la verías como

Código PHP:
t.prototype.addTodo=function(t){return this.http.post(this.todosUrl,t,vf)} 
donde

t son los datos que vienen de la forma y vf son las opciones, por ejemplo

Código PHP:
vf={headers:new Uh({"Content-Type":"application/json"})} 
Lo de arriba, en el código fuente original lo verías como (Angular)

Código PHP:
 addTodo(todo:Todo):Observable<Todo>{
    const 
url = `${this.todosUrl}/${todo.id}`;
    return 
this.http.post<Todo>(this.todosUrltodohttpOptions);
  } 
y

Código PHP:
const httpOptions = {
  
headers: new HttpHeaders({
    
'Content-Type''application/json'
  
}) 
Responder Con Cita
  #3  
Antiguo Hace 1 Semana
guspx guspx is offline
Registrado
 
Registrado: jun 2019
Posts: 5
Poder: 0
guspx Va por buen camino
Muchísimas gracias, en la pestaña Headers de Network he podido ver que en realidad el procedimiento es GET y la url es la misma. Me guardo tu utilísimo post para el futuro. Saludos.
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
Usuario y contraseña sauldelphi Varios 5 24-01-2017 19:39:04
Usuario y Contraseña nicolass_83 Conexión con bases de datos 7 30-05-2016 16:12:05
Crear Login (usuario y contraseña) DANIEL1818 Tablas planas 3 07-04-2015 01:16:17
Hacer un post con usuario y contraseña gulder Varios 5 12-09-2008 19:08:21
Usuario y Contraseña??? danytorres Oracle 1 24-07-2007 16:16:19


La franja horaria es GMT +2. Ahora son las 23:30:15.


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