Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi login wie bei web.de o.ä. (https://www.delphipraxis.net/30966-login-wie-bei-web-de-o-ae.html)

glkgereon 1. Okt 2004 22:02


login wie bei web.de o.ä.
 
hi

wie kann ich mich in delphi auf einer seite einloggen, sowie in opera mit strg+enter oder so?

fiasko 1. Okt 2004 22:04

Re: login wie bei web.de o.ä.
 
Was für'ne Seite in Delphi???

Was passiert beim Opera wenn man Ctrl+Return drückt???

glkgereon 1. Okt 2004 22:08

Re: login wie bei web.de o.ä.
 
also, bei opera wird dann automatisch per wand name+passwort eingegeben und der login-button gedrückt

ich wollte das mit TWebBrowser machen...

fiasko 1. Okt 2004 22:22

Re: login wie bei web.de o.ä.
 
Zitat:

Zitat von glkbkk
automatisch per wand name+passwort

Per Wand? Duden look-up... vielleicht meinst du:

Zitat:

Zitat von glkbkk
automatisch per hand name+passwort


Ach du Schande! :mrgreen:

TParadoxonException.Create();


--cut---

Ich denke mal du willst sowas machen das HTML-Formulare automatisch ausgefüllt werden? Da wüßte ich jetzt aus der Kalten auch nicht wie...

alcaeus 1. Okt 2004 22:24

Re: login wie bei web.de o.ä.
 
Hi glkbkk, Hi Thomas,

WAND ist der Passwort-manager von Opera.
Bemüh mal die Suche zu diesem Thema, es gab schon ein oder zwei Beiträge, in welchen es ums automatische ausfüllen von Formularen im Webbrowser ging.

Greetz
alcaeus

Alienhere 2. Okt 2004 11:31

Re: login wie bei web.de o.ä.
 
Schick Deinen Browser auf die Reise.

Wenn er am Ziel ist, würde ich mal sendkeys.pas (uralt) oder was Ähnliches ausprobieren.

mfg

Aenogym 2. Okt 2004 11:44

Re: login wie bei web.de o.ä.
 
hi,

bei den schweizern gibts mal wieder einen tipp dazu ;)

Aenogym

glkgereon 2. Okt 2004 18:13

Re: login wie bei web.de o.ä.
 
thx, ixch denk ich werd damit klarkommen...

toms 2. Okt 2004 18:16

Re: login wie bei web.de o.ä.
 
oder hier

emploi 2. Okt 2004 18:29

Re: login wie bei web.de o.ä.
 
hi

das sollte gehen:

Delphi-Quellcode:
PROCEDURE FillYourInput(WebBrowser1:TWebBrowser; name,text:STRING);
VAR i,j,k: Integer;
    ovElements,ovFrames: OleVariant;
BEGIN
  IF Webbrowser1.OleObject.Document.Frames.Length <> 0 THEN
  BEGIN
        ovFrames := Webbrowser1.OleObject.Document.Frames;
        FOR j := 0 TO (ovFrames.Length - 1) DO
            FOR k := 0 TO (ovFrames.Item(j).Document.Forms.Length - 1) DO
            BEGIN
                ovElements := ovFrames.Item(j).Document.Forms.Item(k).elements;
                FOR i := 0 TO (ovElements.Length - 1) DO
                  IF ((ovElements.Item(i).tagName = 'INPUT')
                  AND (ovElements.Item(i).name = name)) THEN
                      ovElements.Item(i).value := text;
            END;
  END
  ELSE
  BEGIN
      FOR j := 0 TO (WebBrowser1.OleObject.Document.forms.Length - 1) DO
      BEGIN
          ovElements := WebBrowser1.OleObject.Document.forms.item(j).elements;
          FOR i := 0 TO (ovElements.Length - 1) DO
              IF ((ovElements.Item(i).tagName = 'INPUT')
              AND (ovElements.Item(i).name = name)) THEN
                 ovElements.Item(i).value := text;
      END;
  END;
END;
Musst ihm einfach den WebBrowser und den 'Text' der eingetragen werden soll übergeben. Im Gegensatz zu dem quellcode von dem link der einen post vorher mitgeteilt wurde, funktioniert der code auch bei frames.

Damit du dann auch noch den Button deiner Wahl klicken kannst kannste ja die funktion benutzen:

Delphi-Quellcode:
PROCEDURE ClickOnButton(WebBrowser1:TWebBrowser; BT_text:STRING);
VAR
  ovElements,ovFrames: OleVariant;
  i,j,k: Integer;
BEGIN
  IF Webbrowser1.OleObject.Document.Frames.Length <> 0 THEN
  BEGIN
        ovFrames := Webbrowser1.OleObject.Document.Frames;
        FOR j := 0 TO (ovFrames.Length - 1) DO
            FOR k := 0 TO (ovFrames.Item(j).Document.Forms.Length - 1) DO
            BEGIN
                ovElements := ovFrames.Item(j).Document.Forms.Item(k).elements;
                FOR i := 0 TO (ovElements.Length - 1) DO
                  IF ((ovElements.Item(i).tagName = 'INPUT')
                    AND (ovElements.Item(i).type = 'submit')
                    AND (ovElements.Item(i).Value = BT_text)) THEN
                        ovElements.Item(i).Click;
            END;
  END
  ELSE
  BEGIN
      FOR j := 0 TO (WebBrowser1.OleObject.Document.forms.Length - 1) DO
      BEGIN
          ovElements := WebBrowser1.OleObject.Document.forms.item(j).elements;
          FOR i := 0 TO (ovElements.Length - 1) DO
              IF ((ovElements.item(i).tagName = 'INPUT')
                AND (ovElements.item(i).type = 'submit')
                AND (ovElements.item(i).Value = BT_text)) THEN
                    ovElements.item(i).Click;
      END;
  END;
END;

Prinzipiell ist es immer das gleiche schema. nach dieser Art kannste eigentlich fast alles lösen!

mfg emploi

glkgereon 2. Okt 2004 18:37

Re: login wie bei web.de o.ä.
 
ich peil das nicht mkit den frames etc...

also ich will das bei web.de machen....

das is der code für die inputs....
wie mach ich das jetzt?

Code:
<label class="labelUsername" for="inpLoginUsername">WEB.DE Nutzer</label>
<input id="inpLoginUsername" type="text" name="username" />
<label class="labelPassword" for="inpLoginPassword">Passwort</label>
<input id="inpLoginPassword" type="password" name="password" />

ah, neuer qt....auch angucken....

glkgereon 2. Okt 2004 19:01

Re: login wie bei web.de o.ä.
 
also, ich hab jetzt den quelltext, abver es funzt nit

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
FillYourInput(WebBrowser1,'username','glkgereon');
FillYourInput(WebBrowser1,'passwort','hallo');
end;
oben is der auszug aus der seite....

was is das falsch

achso, was nichrt funzt: es kommt nix....das edit bleibt einfach leer....
auch ein update hilft nix

emploi 2. Okt 2004 19:13

Re: login wie bei web.de o.ä.
 
ich tests mal eben.


--

hm sieht so aus das es an den <div> tags liegt
das es deswegen nicht geht. muss mal gucken ob ich dafür ne lösung
hinbekomme.


---

liegt nicht an den divs, habn fehler drin gehabt. obwohls sonst irgendwie immer ging :)

komisch. naja hier die überarbeitete version:

Delphi-Quellcode:
PROCEDURE ClickOnButton(WebBrowser1:TWebBrowser; BT_text:STRING);
VAR
  ovElements,ovFrames: OleVariant;
  i,j,k: Integer;
BEGIN
  IF Webbrowser1.OleObject.Document.Frames.Length > 1 THEN
  BEGIN
        ovFrames := Webbrowser1.OleObject.Document.Frames;
        FOR j := 0 TO (ovFrames.Length - 1) DO
            FOR k := 0 TO (ovFrames.Item(j).Document.Forms.Length - 1) DO
            BEGIN
                ovElements := ovFrames.Item(j).Document.Forms.Item(k).elements;
                FOR i := 0 TO (ovElements.Length - 1) DO
                  IF ((ovElements.Item(i).tagName = 'INPUT')
                    AND (ovElements.Item(i).type = 'submit')
                    AND (ovElements.Item(i).Value = BT_text)) THEN
                        ovElements.Item(i).Click;
            END;
  END
  ELSE
  BEGIN
      FOR j := 0 TO (WebBrowser1.OleObject.Document.forms.Length - 1) DO
      BEGIN
          ovElements := WebBrowser1.OleObject.Document.forms.item(j).elements;
          FOR i := 0 TO (ovElements.Length - 1) DO
              IF ((ovElements.item(i).tagName = 'INPUT')
                AND (ovElements.item(i).type = 'submit')
                AND (ovElements.item(i).Value = BT_text)) THEN
                    ovElements.item(i).Click;
      END;
  END;
END;


PROCEDURE FillYourInput(WebBrowser1:TWebBrowser; name,text:STRING);
VAR i,j,k: Integer;
    ovElements,ovFrames: OleVariant;
BEGIN
  IF Webbrowser1.OleObject.Document.Frames.Length > 1 THEN
  BEGIN
        ovFrames := Webbrowser1.OleObject.Document.Frames;
        FOR j := 0 TO (ovFrames.Length - 1) DO
            FOR k := 0 TO (ovFrames.Item(j).Document.Forms.Length - 1) DO
            BEGIN
                ovElements := ovFrames.Item(j).Document.Forms.Item(k).elements;
                FOR i := 0 TO (ovElements.Length - 1) DO
                  IF ((ovElements.Item(i).tagName = 'INPUT')
                  AND (ovElements.Item(i).name = name)) THEN
                      ovElements.Item(i).value := text;
            END;
  END
  ELSE
  BEGIN
      FOR j := 0 TO (WebBrowser1.OleObject.Document.forms.Length - 1) DO
      BEGIN
          ovElements := WebBrowser1.OleObject.Document.forms.item(j).elements;
          FOR i := 0 TO (ovElements.Length - 1) DO
              IF ((ovElements.Item(i).tagName = 'INPUT')
              AND (ovElements.Item(i).name = name)) THEN
                 ovElements.Item(i).value := text;
      END;
  END;
END;

sollte jetzt klappen, also bei mir gings :)

mfg emploi

yankee 2. Okt 2004 20:12

Re: login wie bei web.de o.ä.
 
Ich gehe mal davon aus, dass du die Felder nicht nur so zum Spaß ausfüllst, sondern dich einloggen willst. Und es scheint mir so, als willst du das nur bei web.de machen. Also sehen wir uns mal den Code vom Form an:
Code:
<form action="https://login.web.de/intern/login/" method="post" name="fm">

   <input type="hidden" name="service" value="freemail"/>
   <input type="hidden" name="server" value="https://freemail.web.de"/>
   <input type="hidden" name="onerror" value="https://freemail.web.de/msg/temporaer.htm"/>
   <input type="hidden" name="onfail" value="https://freemail.web.de/msg/logonfailed.htm"/>
   [..]
       <input id="inpLoginUsername" type="text" name="username" />
        [..]
       <input id="inpLoginPassword" type="password" name="password" />
        [..]<input class="submitButton" type="submit" name="rv_dologon" value="Login" />[..]
   [..]
      </form>
Unbenötigte Teile mal wegelassen.
Diese Seite: <form action="https://login.web.de/intern/login/" method="post" name="fm">
ruft er auf mit den parametern, die in den Feldern stehen. Zunächst haben wir ein paar versteckte eingabefelder, durch die wir ein paar statische Angaben bekommen. Das sind die Felder, bei denen "hidden" im type-Attribut steht. Dann kommen noch die Felder mit username und passwort. Beim klicken auf "submit" wird die im action-Attribut des Form-tags aufgerufen. Dabei werden dieser Seite Paramater übergeben. Der Teil hinter der I-Netdresse sieht so aus:
?[parameter1]=[Wert1]&[parameter2]=[Wert2]&[parameter3]=[Wert3]
paramater sind jewals die Werte, die in den name-Atributen sind und die Werte, sind die Werte, die in den value-Attributen, bzw. der Usereingabe bestehen. Umgesetzt sied die Aufgerufene Seite also so aus:
Code:
https://login.web.de/intern/login/?service=freemail&server=https://freemail.web.de[..]
ich denke du solltest in der Lage sein, die Adresse zu vervollständigen. Dann kannst du die entsprechende Seite direkt aufrufen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:24 Uhr.

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