Web-Seiten-Auto-Login Funktion und Generator für Login-Funktionen(V4.1)

  • Für die wohl immer wiederkehrende Frage nach einem Login-Skript hier die Lösung:

    _FF_AutoLogin

    1) $iMode = 0
    die Funktion versucht den Passwort- und Benutzer-Input selbst zu ermitteln, füllt diese aus und sendet das Formular ab.
    (gibt es zwar schon in tausendfacher Ausführung als GreaseMonkey-Script oder AddOn, aber was soll's :rolleyes: )
    Rückgabe 1/0
    2) $iMode = 1
    Das gleiche wie in Mode 0, nur daß hier eine fertige Login-Funktion zurückgegeben wird z.B für AutoIt.de:

    Spoiler anzeigen
    [autoit]

    Func _FFLogin($sUserName, $sPassWord) ; generated with _FF_AutoLogin, by Stilgar
    _FFOpenURL('http://autoit.de/index.php?form=UserLogin')
    If @error Then Return 0
    _FFSetValueByName('loginPassword', $sPassWord)
    If @error Then Return 0
    _FFSetValueByName('loginUsername', $sUserName)
    If @error Then Return 0
    _FFDispatchKeyEvent("content.document.getElementsByName('loginPassword')[0]", 13)
    If @error Then Return 0
    _FFLoadWait()
    If @error Then Return 0
    Sleep(500)
    Return _FFSearch('erfolgreich angemeldet')
    EndFunc ;==> _FFLogin

    [/autoit]

    Beispielaufruf:

    Spoiler anzeigen
    [autoit]

    #region Includes
    #include <_FF_AutoLogin.au3>
    #endregion Includes

    [/autoit] [autoit][/autoit] [autoit]

    _FFConnect()

    [/autoit] [autoit][/autoit] [autoit]

    _FF_AutoLogin("BenutzerName", "Passwort", "http://autoit.de/index.php?form=UserLogin", "erfolgreich angemeldet")

    [/autoit]


    ; das wars ...

    zur Funktionsweise:
    * das Formular mit einem input type='password' wird ermittelt
    * das Passwort wird dort eingetragen
    * im Text-Input davor wird der Benutzername eingetragen
    * das Formular wird abgesendet
    ( sollte eine Absende-Methode nicht funktionieren, wird die nächste ausprobiert, in der Reihenfolge:
    keypress
    click
    submit )
    * Statusmeldung der Seite überprüfen, ob das Einloggen erfolgreich war.
    * Rückgabe je nach Mode: 1 = Erfolgreich eingeloggt, oder Einlog-Funktion bzw. 0 bei Fehler

    Vorlagen für verschiedene Seiten:

    Spoiler anzeigen
    [autoit]

    _FF_AutoLogin($sUserName, $sPassword, "gmx.de", "herzlich willkommen")
    _FF_AutoLogin($sUserName, $sPassword,"web.de/fm/" , "Logout")
    _FF_AutoLogin($sUserName, $sPassword, "www.autoitscript.com/forum/index.php?app=core&module=global&section=login", "login was successful")
    _FF_AutoLogin/$sUserName, $sPassword, "autoit.de/index.php?form=UserLogin", "erfolgreich angemeldet")
    _FF_AutoLogin($sUserName, $sPassword, "www.autoitscript.fr/", "maintenant connect")

    [/autoit]

    falls es irgendwo nicht funktionieren sollte, bitte melden!

    Update V4.0:
    - auf die FF.au3 V0.6 "vorbereitet"

    Grüße
    Stilgar

    15 Mal editiert, zuletzt von Stilgar (14. November 2009 um 15:02)

  • Danke!

    Der Vorschlag ist schon realisiert: Der "FF-Page-Analyzer" (siehe sig) macht das schon, der baut auch ganze Einlog-Funktionen :D
    Aber ich kann gern mal die drei Zeilen zum Einloggen irgendwo ausgeben :)

  • Auf Wunsch generiert die Funktion nun eine Login-Funktion.

    Hier im Forum würde diese so aussehen:

    Spoiler anzeigen
    [autoit]

    Func _FFLogin($sUserName, $sPassWord) ; generated with _FF_AutoLogin, by Stilgar
    _FFOpenURL('http://autoit.de/index.php?form=UserLogin')
    If @error Then Return 0
    _FFSetValueByName('loginPassword', $sPassWord)
    If @error Then Return 0
    _FFSetValueByName('loginUsername', $sUserName)
    If @error Then Return 0
    _FFDispatchKeyEvent("content.document.getElementsByName('loginPassword')[0]", 13)
    If @error Then Return 0
    _FFLoadWait()
    If @error Then Return 0
    Sleep(500)
    Return _FFSearch('erfolgreich angemeldet')
    EndFunc ;==> _FFLogin

    [/autoit]
  • Update auf V3.1:
    - Korrektur der erzeugten Funktion, wenn das Formular nicht abgesendet werden soll.
    - Verwendung der Schlüsselwortes Default nun möglich ($sStatus und $sSubmitMode)

  • Das ist immer Ansichtssache, im Prinzip machen die Browser das ja schon von allein, wenn es nicht gerade Homebanking ist, muß ich bei mir eigentlich nur noch Enter drücken - sogar ohne AutoIt!

    Wenn ich dieses doofe Script-Kiddie Wort schon seh in Bezug auf so eine "simple" Funktion seh :cursing:

    Was hat man denn davon? Das Ganze füllt zwei Felder aus und schickt sie ab :)
    Damit ist man noch sehr viel weiter beim Automatisieren von irgendwelchen hohlen Online-Spielen.

    Das ist in erster Linie eine Erleichterung für mich - ich habe meine Ruhe vor tausenden Anfragen - wie log ich mich bei StudiVDings oder was auch immer für einem Sch... ein ... :P

  • Och so war dramatisch war das gar nicht gemeint - war nur kein passender Smilie da :D

    Aber es ist halt schon etwas nervend, wenn man bei jeder Kleinigkeit B** schreit.
    Ich versuch eben mit Programmen einem lästige Arbeit abzunehmen - mehr nicht.

  • Zitat

    Fällt ein Auto Login nicht schon zum Teil unter Bot ?


    Kapiere ehlich gesagt sowieso nicht um was es geht, ich logge mich EINMAL in eine Website ein, und dann erwarte ich von meinem Browser (Opera), daß er das beim nächsten Mal automatisch für mich erledigt. Bis auf Onlinebanking und ähnliche Sachen funktioniert das so bei mir schon seit Jahren....Mir wäre jetzt keine "normale" Website bekannt, bei der das nicht ginge. Und bei sich ändernden URL´s tuts dann im Zweifelsfall ein herzhaftes Ctrl+Enter...Vielleicht liegts aber auch daran, daß ich nicht bei jeder Müllseite meine Daten hinterlassen muss....

  • Normalerweise kann das jeder Browser schon seit zig Jahren, wenn man es nicht abschaltet ...

    Die Funktion existiert auch nur, weil es unzählige Threads gibt in denen immer wieder die Frage auftaucht, wie baue ich ein Einlog-Script für Seite XY?? Und dann meist noch von Leuten denen man erst mal HTML erklären, muß damit die überhaupt wissen von was man redet ...
    Jetzt frag mich nicht warum manche Leute ihren Browser nicht bedienen können ... oder nicht so einstellen, daß der das für sie macht ...

  • Du könntest sie perfektionieren, wenn du noch hinzufügst, ob man bereits angemeldet IST ;)...
    Also auch einfach ein Suchwort, z.B.... :)


    LG

    *edit*

    Übrigens, wegen des Beispiels... ->
    Bei mir geht _FFConnect NUR, wenn Firefox bereits offen ist... Wie kann das sein?! Sollte ja nicht so sein!?

    Zitat
    Zitat

    _FFConnect: OS:WIN_VISTA WIN32_NT 6002 Service Pack 2

    Zitat

    _FFConnect: AutoIt:3.3.0.0

    Zitat

    _FFConnect: FF.au3:0.6.0.0b-5

    Zitat

    _FFConnect: IP:127.0.0.1

    Zitat

    _FFConnect: Port:4242

    Zitat

    _FFConnect: Delay: 2ms

    Zitat

    _FFConnect ==> Timeout: TCPConnect Error: 10061

    Zitat

    _FFOpenURL: http://www.web.de

    Zitat

    _FFConnect ==> General Error: Timeout: Can not connect to FireFox/MozRepl on: 127.0.0.1:4242

    Zitat

    __FFSend ==> Socket Error

    Zitat

    _FFCmd ==> Error return value

    Zitat

    _FFOpenURL ==> No match: http://www.web.de

  • Du könntest sie perfektionieren, wenn du noch hinzufügst, ob man bereits angemeldet IST ;)...
    Also auch einfach ein Suchwort, z.B.... :)


    Ist mal mit eingeplant.


    Übrigens, wegen des Beispiels... ->
    Bei mir geht _FFConnect NUR, wenn Firefox bereits offen ist... Wie kann das sein?! Sollte ja nicht so sein!?


    Warum paßt doch. Wie der Name schon sagt: _FFConnect - verbindet mit FireFox, wenn der nicht läuft dann eben nicht; dazu gibt es _FFStart.

  • Super...^^
    Ich meine, ist zwar selbst leicht gemacht, aber wäre ne tolle Erweiterung^^...!

    Achso.... *hm* Hatte das anders verstanden, was ist denn dann der Sinn von _FFConnect? Ich meine, _FFStart verbindet sich ja auch mit einem laufenden FF-Prozess, wenn vorhanden... Oo

    Ist doch dann ein Allrounder, der _FFConnect total ersetzen sollet?!^^ :)


    LG