# Automatischer Login auf einer Webseite



## svott (12. Mrz 2012)

Hallo,

ich bin dabei ein kleines Programm zu schreiben, dass sich auf der Website eines Online Fußballmanagers einloggt - mit meinen Logindaten - und dort die Spieler aller Teams mit der der maximalen Stärke zählt.

Der zweite Teil ist dabei kein Problem. Den html-Text einer Website auslesen und nach Keywörtern durchsuchen lassen bekomm ich hin. Auf alle Teams zu zugreifen sollte auch kein Problem sein, da die jeweilige TeamID im Link zu der jeweiligen Seite enthalten ist.

Mein Problem ist nur, dass das Java-Programm gar nicht erst bis zu den Teamseiten kommt, weil es am Login hängen bleibt.

Leider bin ich im Netz noch nicht fündig geworden. Ich hab zwar gehört das curl für sowas ganz nützlich sein soll, allerdings habe ich dafür kein nützliches Bsp-Programm oder Tutorial gefunden, dass mir weiterhilt.

Ich bin über jede Hilfe sehr dankbar


----------



## irgendjemand (12. Mrz 2012)

überspann mit Curl mal nicht gleich den bogen ... das wäre etwas overkill

ein normales login läuft so ab

ein client füllt ein form aus und sendet diese daten meist per HTTP POST an den server ... diese prüft die gültigkeit und reagiert entsprechend ...
in der regel bekommst du ein session-cookie *falls die id nicht an der url klebt* was du natürlich zu deiner identifikation jedes mal mitsenden musst

zieh dir mal "wireshark" und guck dir an was alles an daten durchläuft wenn du deinen browser verwendest ...
das kannst du dann in java mit sockets/streams/url/urlconnction ... oder meinste wegen auch mit ner apache common lib ... nachbauen ...

sind eigentlich grundlagen des net-i/o und HTTP


----------



## svott (14. Mrz 2012)

ok danke für die hinweise.

dann werd ich wohl erstmal noch ein wenig die insel und andere sachen durchstöbern bevor ich damit weiter mache,


----------



## ARadauer (14. Mrz 2012)

Es kommt auf das Login System an....


----------



## irgendjemand (14. Mrz 2012)

naja ... HTTP AUTH und normales session-management dürften wohl die beiden verbreitesten systeme sein ...
bei jedem muss man allerdings jedes mal den entsprechenden header mitsenden was das ganze ziemlich aufwändig macht


----------



## schalentier (14. Mrz 2012)

Weiss ja nicht, was genau du machen willst - aber eventuell hilft dir das: Greasemonkey Hacks - WikiContent

Mit Greasemonkey kannst du mit simplem JavaScript direkt auf die aktuelle Seite im Firefox zugreifen und sogar veraendern (und so z.B. die Gesamtstaerke irgendwo direkt auf die Seite schreiben).


----------



## irgendjemand (14. Mrz 2012)

Java != JavaScript


----------



## svott (15. Mrz 2012)

nein ich habe keine javascript kenntnisse und ich will auch keine sachen verändern oder in irgendeiner form cheaten

ich will nur ein kleines justforfun programm schreiben, dass mit bestimmte werte ausließt und dabei scheitert es eben noch am login-problem


----------



## irgendjemand (15. Mrz 2012)

hmm .. vielleicht wäre es auch mal hilfreich wenn du uns die seite linken könntest auf der du dich einloggen willst ...
dann könnte man dir z.b. in soweit schon mal helfen dir tipps zu geben wie du es umsetzen könntest ...

normaler weise werden HTML-formulare *wie auch hier* verwendet ... nach eingabe deiner daten bekommst du vom server eine antwort welche meist ein sog. session-cookie enthält ...

dieses cookie musst du nun bei jeder anfrage zum server mitsenden um ihm zu sagen das du das bist der sich gerade eingeloggt hat ... denn HTTP selbst ist stateless ... führt also selber keine protokolle wer wann mit wem welche informationen ausgetauscht hat ... *selbst HTTP AUTH ist da nur eine art erweiterter header type bei dem auch bei jeder anfrage gewissen informationen mitgesendet werden müssen*

alternativ kann es auch sein das anstatt eines session-cookies die session-id dierekt als URL-paramter mitgeliefert wird *heute eigentlich nicht mehr so oft verwendet* ... aber selbst dann musst du diese infor nur ein mal parsen und kannst dann den rest selbst zusammen bauen ...

vielleicht wäre es auch hilfreich wenn du dich auf SelfHTML und PHP.net mal über sog. session-handling informierst damit du weist was da im hintergrund abläuft ...

wenn du dann weist wie das authing läuft kannst du entweder mit sockets und streams alles selbst zusammen basteln ... mit URL.openConnection versuchen einen teil der arbeit an die VM abzuwälzen oder ziehst dir die *nach meiner meinung ziemlich aufgeblähte und aus einer millionen von dependencies bestehende* lib : Apache Commons ...

*persönlich : wenn man das ganze selbst über sockets und streams zusammenbaut ist zwar der schreibaufwand etwas größer und man brauch schon grundlegende kenntnisse ... ist aber an sich das einfachste*


----------



## ARadauer (15. Mrz 2012)

man könnte auch selenium verwenden


----------



## svott (15. Mrz 2012)

also bei der Seite handelt es sich um Online Fußball Manager - Soccer-Match
wobei das ganze noch ein wenig komplizierter ist und ich mich über dieses Forum einloggen muss:
Anmelden &bull; FM-Arena Fussball Manager 12

Das Buch "Mehr als eine Insel" ist jetzt endlich eingetroffen und ich hoffe das ich in den nächsten Tagen etwas Zeit finde um das Kapitel Netzwerkprogrammieren durchzugehen und was neues dazu lerne.


----------



## irgendjemand (15. Mrz 2012)

[noparse]wie ich es mir gedacht hab ... einfachstes session-management

ums kurz zu fassen

header
POST http://www.soccer-match.de/?action=login&do=send
content
loginname=<DEIN NICK>&passwrd=<DEIN PASSWORT>

dann bekommst du ne HTTP 302 mit folgenden headern

Set-Cookie: smID=
Set-Cookie: smsession=
Set-Cookie: smsesshash=
Set-Cookie: user_id=

und wirst auf "/?action=first&did=login" verwiesen

die callst du dann mit GET und den cookies ... und gut is

das sollte eigentlich mit URL.openConnection machbar sein ... bin mir aber nicht sicher ...

zur not : Socket und Stream ... und halt alles selbst zusammenbauen ...


wie man das ganze jetzt sinnvoll verwendet und in einen kontext bringt würde das zeichenlimit sprengen ... aber das sind die dinge auf die du dich konzentrieren musst ...

eventuell würde apache commons helfen da du dort eine sehr einfache cookie-verwaltung hast ... aber ich selbst hab damit noch nie gearbeitet ...

*ganz einfach n acc erstellt und mit wireshark den verkehr mitgelesen ...

ich denke auf grundlage dieser informationen können dir die anderen auch helfen *da ich mich jetzt erstmal ins bett lege und morgen vormittag vielleicht versuche alles mal knapp zusammen zu fassen*

was du da allerdings meinst mit von wegen "nich so einfach" und "muss mich über diese seite einloggen" ... hmm .. kein plan was dein system macht ... ist aber nicht nötig ...[/noparse]


----------



## svott (16. Mrz 2012)

na das hört sich doch ganz gut an. dann hoffe ich mal demnächst etwas zeit zu finden um daran rumtüffteln zu könnnen

danke


----------

