Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Go Back   Foros Club Delphi > Principal > Internet
Register FAQ Members List Calendar Guía de estilo Search Today's Posts Mark Forums Read

Colaboración Paypal con ClubDelphi

Reply
 
Thread Tools Search this Thread Display Modes
  #1  
Old 10/06/2019
guspx guspx is offline
Miembro
 
Join Date: Jun 2019
Posts: 17
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

Code:
<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:

Code:
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.
Reply With Quote
  #2  
Old 11/06/2019
tsk tsk is offline
Miembro
 
Join Date: Dec 2017
Posts: 56
Poder: 9
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


PHP Code:
<!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

PHP Code:
<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


PHP Code:
<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

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

PHP Code:
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

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

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

PHP Code:
const httpOptions = {
  
headers: new HttpHeaders({
    
'Content-Type''application/json'
  
}) 
Reply With Quote
  #3  
Old 12/06/2019
guspx guspx is offline
Miembro
 
Join Date: Jun 2019
Posts: 17
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.
Reply With Quote
Reply


Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
Usuario y contraseña sauldelphi Varios 5 24/01/2017 19:39
Usuario y Contraseña nicolass_83 Conexión con bases de datos 7 30/05/2016 16:12
Crear Login (usuario y contraseña) DANIEL1818 Tablas planas 3 07/04/2015 01:16
Hacer un post con usuario y contraseña gulder Varios 5 12/09/2008 19:08
Usuario y Contraseña??? danytorres Oracle 1 24/07/2007 16:16


All times are GMT +2. The time now is 23:07.


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