Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Spezielle Daten aus Webseite auslesen (https://www.delphipraxis.net/67364-spezielle-daten-aus-webseite-auslesen.html)

Balu der Bär 13. Apr 2006 15:59


Spezielle Daten aus Webseite auslesen
 
Moin,

ich hab da ein klitzekleines Problemchen, welches ich einfach nicht in den Griff bekomme:

Ich möchte Daten eines Buttons auf einer Webseite auslesen. Als Beispiel: Ich klicke (Browser Firefox) den Login-Button der DP (hier: http://www.delphipraxis.net/login.php) mit rechts an und wähle "Seiteninformationen anzeigen". Danach wähle ich die Registerkarte "Formulare". Unter "Aktueller Wert" finde ich nun die Daten ***************, on, Login". Wie kann ich diese Daten automatisch mit Delphi auslesen und in einer Variable speichern ? Wäre echt gut wenn mir jemand helfen könnte, vielen Dank schonmal. ;)

P.S.: Das ganze dient für ein Webseiten-Anlysierungs-Programm.

Matze 13. Apr 2006 16:07

Re: Spezielle Daten aus Webseite auslesen
 
Hi,

ich denke, um's Parsen des HTML-Codes wirst du nicht herumkommen. Etwas anderes wird Firefox auch nicht machen.

Balu der Bär 13. Apr 2006 16:09

Re: Spezielle Daten aus Webseite auslesen
 
Moin Matze,

ja das habe ich schon fast befürchtet, nur leider hab ich keinerlei Ahnung wie man das halbwegs gut und effizient realisieren könnte...

easteregg 13. Apr 2006 16:11

Re: Spezielle Daten aus Webseite auslesen
 
nuja du könntest die seite doch mit den indykomponenten in dein programm laden und dann die entsprechenden einträge durchsuchen mithilfe von markannten sachen (eben wie der loginbutton oder solchen "festen" sachen) und das dazwischen rauskopieren.

Balu der Bär 13. Apr 2006 16:16

Re: Spezielle Daten aus Webseite auslesen
 
Was meinst du denn mit "entsprechende Einträge durchsuchen" ? Die von mir gesuchten Daten stehen nicht im Seitenquelltext, dass ist ja mein Problem.

Matze 13. Apr 2006 16:18

Re: Spezielle Daten aus Webseite auslesen
 
Zitat:

Zitat von Balu der Bär
Die von mir gesuchten Daten stehen nicht im Seitenquelltext, dass ist ja mein Problem.

Achso nicht, hm, dann nützt das Parsen natürlich nichts, aber irgendwoher muss Firefox die ja nehmen. :gruebel: (Ich möchte mich grad nicht abmelden, aber alle Infos über die normalen Formulare stehen im Quelltext (ich habe die Login-Seite jetzt nicht angesehen).

marabu 13. Apr 2006 16:23

Re: Spezielle Daten aus Webseite auslesen
 
Hallo Balu,

Zitat:

Zitat von Balu der Bär
Die von mir gesuchten Daten stehen nicht im Seitenquelltext

die Informationen, welche der FireFox an der von dir angegebenen Stelle (page info :: forms :: fields) anzeigt, stehen definitiv im Quelltext. Suchst du vielleicht doch nach etwas anderem?

Freundliche Grüße vom marabu

Balu der Bär 13. Apr 2006 16:26

Re: Spezielle Daten aus Webseite auslesen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich hab mal ein Screenie von den Daten die angezeigt werden angehängt. Und wie gesagt, die "********" die dort stehen gibt es im Seitenquelltext halt nicht. Hat niemand ne Idee wie Firefox da rankommt ?

@marabu: Ne, irgendwie nicht...

P.S.: Sry für die schlechte Bildqualität. ;)

marabu 13. Apr 2006 16:34

Re: Spezielle Daten aus Webseite auslesen
 
Entschuldige, ich dachte dich interessieren die Feldinhalte im allgemeinen - weil du den Weg zu den Form-Felder gezeigt hast. Deine Frage hätte dann wohl besser geheißen: wie kann ich die vom Browser sicher abgelegten Kennwörter auslesen? Was hat das mit Seiten-Analyse zu tun?

marabu

Balu der Bär 13. Apr 2006 16:37

Re: Spezielle Daten aus Webseite auslesen
 
Naja ich möchte halt diese Daten (die auf dem Screenshot im unteren Feld sind) anzeigen lassen. Es soll eine Komplettübersicht über eine Webseite erstellt werden können, diese Daten würde ich daher gern in meinem Programm mit anzeigen. ;)

Gibts da einen Weg ?

marabu 13. Apr 2006 16:49

Re: Spezielle Daten aus Webseite auslesen
 
Das Kennwort des angemeldeten Users gehört eigentlich nicht in eine solche Komplettübersicht einer WebSeite. Wenn du ein Tool schreiben möchtest, welches den Seiten-Kennwortschutz über den Browser aushebelt, dann musst du es nicht als Seitenanalyse verschleiern. Oder ist dir die Brisanz dieser Vorgehensweise nicht bewusst?

marabu

Balu der Bär 13. Apr 2006 16:55

Re: Spezielle Daten aus Webseite auslesen
 
Also pass mal auf, es geht mir garantiert nicht um irgendein Passwort. ;) Ich möchte einfach die Daten auslesen mehr nicht. Siehst du in dem Screenshot vom Firefox ein Passwort ? Ich nicht. Desweiteren diente mir die DP nur als Beispiel, und wenn ich die Seite analysieren will befinden sich keinerlei Daten in den Feldern, also wo soll das Passwort herkommen ? Ich möchte nur genau das machen was der Firefox auch macht, nicht mehr und nicht weniger, und ich denke es ist legitim da ich an kein Passwort ran will. Aber ich habe es mir bereits gedacht das dieses Problem in der Delphi-PRAXiS noch mehr Probleme (unsinnige imho) aufwirft, deshalb habe ich gleich in den ersten Post geschrieben wozu ich es brauche. Zum Beispiel Seiten wie Google.de, wenn ich mir da die Daten von dem Suchen-Button angucke finde ich "de, Google Suche, Auf gut Glück, cr=CountryDE" und genau das möchte ich auslesen, und kein Passwort. Verstehst du was ich meine ?

marabu 13. Apr 2006 19:20

Re: Spezielle Daten aus Webseite auslesen
 
Hallo Balu,

ich bin zwar alt, aber nicht begriffsstutzig. Ich hatte dir bereits in Beitrag #7 geschrieben, dass die von dir gesuchten Feldwerte im HTML-Code stehen. Für den Verlauf der weiteren Diskussion kann ich nichts. Hier hast du etwas Code zum Auslesen der Feldwerte:

Delphi-Quellcode:
procedure ExtractFields(f: IHTMLFormElement; items: TStrings);
var
  i: Integer;
  ie: IHTMLInputElement;
begin
  for i := 0 to Pred(f.length) do
    if Succeeded(f.item(i, 0).QueryInterface(IID_IHTMLInputElement, ie)) then
      items.Values[VarToStr(ie.name)] := VarToStr(ie.value);
end;
Freundliche Grüße vom marabu

Balu der Bär 13. Apr 2006 19:30

Re: Spezielle Daten aus Webseite auslesen
 
Moin marabu,

danke erstmal, aber zu welcher Komponente/Unit gehört denn IHTMLFormElement ? Danke.

marabu 13. Apr 2006 19:31

Re: Spezielle Daten aus Webseite auslesen
 
Die Schnittstellen für vernünftiges Arbeiten mit der WebBrowser-Komponente findest du alle in der Unit MSHTML.

marabu

Balu der Bär 13. Apr 2006 19:38

Re: Spezielle Daten aus Webseite auslesen
 
Das einzige was ich gefunden hab is die Borland.mshtml.dll in meinem Delphi 2005 PE Ordner, weißt du zufällig wie ich an diese Unit komme ? Thx.

mkinzler 13. Apr 2006 19:52

Re: Spezielle Daten aus Webseite auslesen
 
Du mußt sie manuell aus der TLB erzeugen (Wrappen). das Problem an Delphi2005 ist aber, das diese Funktion vergessen wurde. Aber im Embedded-WB Package befindet sich eine passende Wrapper-Unit.Neueste Version hier.

Balu der Bär 13. Apr 2006 20:06

Re: Spezielle Daten aus Webseite auslesen
 
Alles klar, ich kann marabu´s Code jetzt kompilieren. Das Problem is nur das ich grad ziemlich auf dem Schlauch stehe. Ich habe jetzt ExtractFields(webbrowser1, listbox1); probiert, logischerweise ghet es aber nicht. Welchen Wert muss ich denn da übergeben ?

marabu 13. Apr 2006 20:34

Re: Spezielle Daten aus Webseite auslesen
 
Ein Beispiel:

Delphi-Quellcode:
procedure TWebForm.WebBrowserDocumentComplete(Sender: TObject;
  const pDisp: IDispatch; var URL: OleVariant);
var
  wb2: IWebBrowser2;
  doc2: IHTMLDocument2;
  s: TStrings;
  i: Integer;
begin
  if Succeeded(pDisp.QueryInterface(IID_IWebBrowser2, wb2)) then
  begin
    doc2 := wb2.Document as IHTMLDocument2;
    s := TStringList.Create;
    for i := 0 to Pred(doc2.forms.length) do
    begin
      s.Clear;
      ExtractFields(doc2.forms.item(i, 0) as IHTMLFormElement, s);
      ShowMessage(s.Text);
    end;
    s.Free;
  end;
end;
marabu

Balu der Bär 13. Apr 2006 21:03

Re: Spezielle Daten aus Webseite auslesen
 
Vielen Dank marabu, es geht. :-)

marabu 13. Apr 2006 21:15

Re: Spezielle Daten aus Webseite auslesen
 
Wenn es irgendwann einmal doch nicht funktioniert, dann könnte es daran liegen, dass Frames im Spiel sind. Suche dann mal nach GetFrameDoc() hier im Forum - es könnte dir weiter helfen.

Gute Nacht

marabu


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:57 Uhr.

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