Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Formular mit HTTPRequest ausfüllen (https://www.delphipraxis.net/204945-formular-mit-httprequest-ausfuellen.html)

DelphiDude 16. Jul 2020 10:31

Formular mit HTTPRequest ausfüllen
 
Ich möchte einen Registrierungsprozess auf einer Webseite automatisieren.

Zu dem Registrierungsprozess gehört dass man sich zuerst auf der Webseite einloggt,
danach zu der URL mit den Registreirungsoptionen wechselt und dann die Formularfelder füllt und
anschlißend "abschicken" klickt.

Das Formularfeld ist in mehrere Tabs unterteilt, hat DrowpDown-Felder, Checkboxen, Textfelder und erlaubt das hinzufügen von Bildern.

Ich hab das Tutorial auf dieser Seite Formular zu der Indy-Komponente gelesen.
https://www.delphipraxis.net/160152-...protokoll.html

Allerdings habe ich daraus nicht gelernt wie ich jetzt die Informationen in die Formularfelder und Bilder setze.
Beim Klick auf "absenden" wird eine javascript-Funktion ausgeführt und keine PHP-Resource.
Des Weiteren habe ich keinen Zugriff auf die Quellcode-Dateien mit Ausnahme vom Web-Inspektor.

Ist es dann überhaupt machbar das umzusetzen?

TiGü 16. Jul 2020 10:52

AW: Formular mit HTTPRequest ausfüllen
 
Alternative: Anstatt das visuelle Formular auszufüllen ist es besser zu klären, ob es eine Schnittstelle für Entwickler gibt (SOAP, REST, whatever).
Wenn du nicht so recht weißt, wonach du schauen musst, wäre ein Link zur betreffenden Website hilfreich.

Hobbycoder 16. Jul 2020 11:01

AW: Formular mit HTTPRequest ausfüllen
 
Wenn du dir den Quelltext der betreffenden Login-Webseite anschaust, wird es im Formular ja eine Referenz auf die POST-Url geben. In den meisten Fällen ist das eine PHP-Datei. Die einzelnen Formularfehler habe ja eine ID. Aus der URL zu der PHP, den ID's und den Werten der Formularfeldern kannst du dir den kompletten Request-String zusammensetzen und über IdHTTP senden. Musst halt nur schauen ob mit GET oder POST.

z.B.
Code:
IdHTTP.Get('http://www.webseite.de/logon.php?username=anton&password=123456&acounttype=user');
Du kannst auch mal Wireshark bemühen und schauen was so alles übertragen wird.

Manchmal ist im Formular auch noch ein Hidden-Feld mit irgendeiner dynamischen Zahl, einem Hash oder sonstwas drin.

Rolf Frei 16. Jul 2020 12:10

AW: Formular mit HTTPRequest ausfüllen
 
Warum so kompliziert mit Indy, wenn es mit den Delphi Webbroker und IIS viel einfacher ist und genau dazu da ist Webanfragen zu behandeln? Mach eine WebBroker Anwendung (ISAPI, CGI oder Standalone) und handle das da per Web-Action. Der ganze Kram mit der Komunikation, etc. muss dich da nicht kümmern. Das macht das Webbroker Framework alles für dich.

Im Action deines Webbrokermoduls kannst du dann die übergebenen Daten des Webformulars ganz einfach verarbeiten und auswerten. Dazu ist der Parameter Request zuständig, der dann die ganzen Formulardaten enthält.

Im Formular machst du eine Form, die die Daten per POST überträgt auf die URL deiner Webbroker Anwendung: http://meinwebserver.de/myloginapp.exe/login (In diesem Fall eine CGI-Exe)

Die Namen Der Formularelemente müssen dann logischerweise mit denen im folgenden Login Action Event übereinstimmen.

Delphi-Quellcode:
procedure TMyWebModule.waLoginAction(Sender: TObject;
  Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
var
  aPassword, aLogin: String;
begin
  { Daten die per POST übertragen werden befinden sich im ContentFields.
    Daten die per GET übertragen werden befinden sich im QueryFields. }
  aLogin := Request.ContentFields.Values['login']; // Daten des Eingabefeldes "login" im Webformular
  aPassword:= Request.ContentFields.Values['password']; // Daten des Eingabefeldes "password" im Webformular
  // ... Hier kann nun das Login überprüft werden.
end;

Hobbycoder 16. Jul 2020 13:01

AW: Formular mit HTTPRequest ausfüllen
 
Ich glaube ich habe den Post falsch verstanden.

Ich dachte der TE wollte den Registrierungsprozess auf eine fremden Internetseite automatisieren.
Aber er will wohl eher den Registrierungsprozess seines eigenen Web-Service automatisieren.

Rolf Frei 16. Jul 2020 14:25

AW: Formular mit HTTPRequest ausfüllen
 
Ja ich habe das so verstanden, dass er ein Login über eine Website auf dem Server machen will. Dafür ist der Indy Ansatz komplett falsch und hierfür unpassend. Mit Indy müsste er den ganzen HTTP Serverteil schreiben und das macht keinen Sinn. IIS ist dafür da und dafür kann man dann eine Delphi WebBrokeranwendung schreiben, die dann von IIS für die aufgerufene URL genutzt wird.

Delphi.Narium 16. Jul 2020 15:10

AW: Formular mit HTTPRequest ausfüllen
 
Für mich klingt die Fragestellung so, als ob mit einem Delphiprogramm ein automatisches Login auf "irgendeiner" Webseite erfolgen soll. Von einer eigenen Webseite, die dann per Webserver ... zur Verfügung gestelle wird, kann ich dort nichts entnehmen.

Denke mal: In Bezug auf die Fragestellung besteht noch einiges an Klärungsbedarf.

DelphiDude 16. Jul 2020 15:33

AW: Formular mit HTTPRequest ausfüllen
 
Zitat:

Zitat von Hobbycoder (Beitrag 1469732)
Ich glaube ich habe den Post falsch verstanden.

Ich dachte der TE wollte den Registrierungsprozess auf eine fremden Internetseite automatisieren.
Aber er will wohl eher den Registrierungsprozess seines eigenen Web-Service automatisieren.

Ne ne du hast das schon richtig verstanden.
Der Prozess findet auf einer fremden Webseite statt.

Die Webseite wo ich das machen will ist beim
https://www.americanstockdog.org/

Auf meine Anfrage hin nach einer Entwickler Schnittstelle hab ich nie eine Antwort bekommen.


Also auch erstmal danke für die schnellen antworten.
Das bin ich so gar nicht gewohnt :-D

TurboMagic 16. Jul 2020 17:44

AW: Formular mit HTTPRequest ausfüllen
 
Was bedeutet "so gar nicht gewohnt"? Schnelle Antworten in der DP oder generell?

Hobbycoder 16. Jul 2020 18:29

AW: Formular mit HTTPRequest ausfüllen
 
Zitat:

Zitat von DelphiDude (Beitrag 1469756)
Zitat:

Zitat von Hobbycoder (Beitrag 1469732)
Ich glaube ich habe den Post falsch verstanden.

Ich dachte der TE wollte den Registrierungsprozess auf eine fremden Internetseite automatisieren.
Aber er will wohl eher den Registrierungsprozess seines eigenen Web-Service automatisieren.

Ne ne du hast das schon richtig verstanden.
Der Prozess findet auf einer fremden Webseite statt.

Die Webseite wo ich das machen will ist beim
https://www.americanstockdog.org/

Auf meine Anfrage hin nach einer Entwickler Schnittstelle hab ich nie eine Antwort bekommen.


Also auch erstmal danke für die schnellen antworten.
Das bin ich so gar nicht gewohnt :-D

Dann habe ich das doch richtig gelesen :-)

Da ist ein Hidden-Feld mit dem Namen "_token". Das hatte ich mir schon gedacht.
Code:
<input name="_token" type="hidden" value="422wu4yZWoqMd0Qvh3ScigqVV12KVUGSibXhEV1Y" aria-describedby="4rm9n3-abide-error">
Die dazugehörige Value musst natürlich aus der Seite auslesen, dann kannst du dir damit eine Url bauen:

Delphi-Quellcode:
IdHttp.get('https://www.americanstockingdog.org/login?email=aaa@bbb.de&password=123456&_token=422wu4yZWoqMd0Qvh3ScigqVV12KVUGSibXhEV1Y');
Musst du ggf noch in UTF8 umwandeln.

Das ist natürlich die GET-Methode. Aber manchmal geht die auch. Je nachdem wie das PHP das auswertet.
Wenn das nicht geht, dann musst du die Daten natürlich als POST-Request schicken.
Ich würde das an deiner Stelle erst einfach mal über das Navigation-Edit vom Browser probieren.

Ich denke dann hast du schon was du möchtest.


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:19 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz