Automatisches Einloggen in Javascript

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

Kann ich die Password-Eingabe in einem Javascript, die sonst über die Tastatur eingegeben wird, automatisch aus einem Pythonscript, das die Seite z.B. mit urllib2.urlopen aufgerufen hat, eingeben lassen?
Beim manuellen Einloggen sind keine Mausaktionen nötig. Nach dem Seitenaufbau reicht es 'Username', 'Tab', 'Password', 'Enter' einzugeben. Kann man die Eingabe z.B. über eine Methode der urllib2 o.ä. übertragen oder muß man stdin umbiegen?

Danke HWK
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Nein, das musst du irgendwie umgehen, zum Beispiel indem du die Logindaten über POST an den Server schickst.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Ehrlich gesagt, verstehe ich die Frage nicht so wirklich...

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

Hallo, Jens!

Zum Verständnis: Ich möchte Daten aus einer Webpage auslesen. Dazu muß ich mich vorher einloggen. Dies möchte ich alles automatisch machen. Auf der Password-Seite läuft aber ein Javascript, das die Daten verschlüsselt an den Server sendet. Ich weiß deshalb nicht, wie ich mich automatisiert einloggen kann?

Hallo, Leonidas!

Kannst Du einem Internet-Anfänger erklären, was dieses POST ist?

Danke HWK
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

HWK hat geschrieben:Kannst Du einem Internet-Anfänger erklären, was dieses POST ist?
Steht in der Wikipedia.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

Hallo Leonidas!

Danke für die Antwort. Wie funktioniert das in Python? Wahrscheinlich mit HTTPConnection.request. Kannst Du mir dafür ein Beispiel geben?

Danke
HWK
CrackPod
User
Beiträge: 205
Registriert: Freitag 30. Juni 2006, 12:56

Am besten nimmst du dir die Site, wo das formular ist, schreibst dir die 2 Felder raus für den Login (Die müssen in html sein) dann gibste da die Daten per Python ein lässt bestätigen und solltest dann drinnen sein.
Aber ehrlichgesagt glaube ich nicht, dass du das realisieren kannst. Zumindest nicht allzuleicht. Wenn die Site nämlich einigermaßen gut gemacht ist, wird sie mit cookies oder Sessions arbeiten. D.h. du müsstest entweder die URL mit der SessionID haben und immer wieder benutzen und/oder du musst cookies mit deinem Script akzeptieren können.
Ich bin jetz kein Crack in Python, aber ich kenne mich gut mit HTML und PHP aus, von daher weiß ich, wie ungefähr alle Skripte aufgebaut sind. Und solange du nicht genau weist, was du unterstützen musst, musst du beides untersützen (cookies und Sessions). Ansonsten wirst du zwar das Formular abschicken können, aber nicht auf die Daten im internbereich zugreifen können.

Greetz
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

Das Formular sieht so aus:

Code: Alles auswählen

<form action="/dabip/DE/de/global/jsp/loginResult.jsp?_DARGS=/dabip/DE/de/sso/loginSSO.jsp.1" name="LoginForm" method="post"><input value="ISO-8859-1" type="hidden" name="_dyncharset">
<input name="content" type="hidden" value="/DE/de/personal/personalpage/personalpage.jsp">
<input type="hidden" name="template" value="">
<div class="pt10 pb7">
<table>
<tr>
<td style="margin-top:2px;" id="label_Username"><b>Benutzername:</b></td>
<td style="padding:5px;"><img name="gif_Username" src="/images/trading/dabde_errorpfeil_blank.gif" border="0" alt=""></td>
<td><input value="hwk" maxlength="20" type="text" class="edit" style="width:150px" size="20" name="username" id="Username"><input value=" " type="hidden" name="_D:username"></td>
<td> </td>
</tr>
<tr>
<td style="margin-top:2px;" id="label_Password"><b>Passwort:</b></td>
<td style="padding:5px;"><img name="gif_Password" src="/images/trading/dabde_errorpfeil_blank.gif" border="0" alt=""></td>
<td><input value="" type="password" class="edit" style="width:150px" name="password" id="Password"><input value=" " type="hidden" name="_D:password"></td>
<td class="pl10"><input type="image" src="/img/buttons/de/anmelden.gif" border="0" /></td>
</tr>
</table>
</div>
<div>
<span><a href="/dabip/homepage.jsp?content=/DE/de/global/personalize/register.jsp" tabindex="22">Kostenlos registrieren</a></span>
<span class="pl30"><a href="javascript:openLostLoginInfobereich();" tabindex="23">Zugangsdaten vergessen?</a></span>
</div>
<input value="/dabip/DE/de/sso/loginSSO.jsp.1" type="hidden" name="_DARGS"></form>
Wie kann ich denn hier die Daten mit Python eingeben?

Die URL der nächsten Seite sieht so aus:

http://.../index.html?nick=410735096&sid=Z2T5PDBN005HICQ5H2GSUYQKD24QWJVC&ts=1152738331961&check=1193c5b052136a904d4115a1c614274f&redomain=0&view=depot&lg=de&ct=de&nh=0&dp=depot1

Die übergebenen Parameter ändern sich aber von Mal zu Mal. Was kann ich also damit anfangen?

MfG
HWK
Tafkadasom2k5
User
Beiträge: 24
Registriert: Dienstag 25. Juli 2006, 09:32

Hi!
Ja, also ein Vorschlag wäre, dass du dir dieses Formular in eine eigene HTML-Datei baust.
Jetzt bastelst du dir ein Java-Script, dass bei Aufruf der Seite automatisch die Felder füllt und dann per "POST" die Daten übergibt.

Ohne Javascript würde das auch gehen, aber dann sind immer nur die Felder belegt, und auf "Einloggen" (oder whatever ;) ) müsstest du wieder von Hand klicken.

Nur ehrlich gesagt verstehe ich nicht, was Python da für eine Rolle spielt?

Naja, soweit mein erstes Posting hier im Forum ;)

Gr33tz
Tafkadasom2k5
Ich kam, ich sah, und ich ging einfach wieder...

Gott: "Nietzsche ist tot"
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

Da ich keine wirkliche Ahnung von Java besitze, habe ich eine andere Web-Page gesucht und zum Glück gefunden, bei der die gewünschten Daten ohne Einloggen, nur durch Aufruf der Seite mit dem Suchparameter heruntergeladen werden können. Und das geht dann mit Python wirklich einfach: Öffnen der Seite mit url = urlopen(url_name), dann Auslesen der ganzen Seite mit data = url.read() und Suchen der Daten mit data.find() etc. und dann beliebige Weiterverarbeitung. Hier macht sich batteries-included für einen Internet-Laien wirklich bezahlt. Also deshalb Python. Für einen Profi geht das sicher auch mit C, Java etc.
Tafkadasom2k5
User
Beiträge: 24
Registriert: Dienstag 25. Juli 2006, 09:32

Achso, ich verstand das erst so, als wenn du einfach nur dem ständigen "Login" entgehen wolltest.

Da hätte eine einfache HTML mit u.U. etwas Java-Script gereicht.
Aber zum Daten finden/auswerten ist Python natürlich praktischer.

Gr33tz
Tafkadasom2k5
Ich kam, ich sah, und ich ging einfach wieder...

Gott: "Nietzsche ist tot"
Python 47
User
Beiträge: 574
Registriert: Samstag 17. September 2005, 21:04

Hallo HWK,

ich hätte eine ganz andere Lösung für dich. Das Modul SendKeys dürfte dir bei deinem Problem sehr nützlich sein.

:arrow: http://www.rutherfurd.net/python/sendkeys/
mfg

Thomas :-)
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

Danke!
Das mit Sendkey klingt interessant. Das werde ich noch mal mit der zuerst von mir benutzten Weppage ausprobieren. Wenn das klappt, wäre der Vorteil, daß ich alle gewünschten Daten von einer URL auslesen könnte, was die Sache natürlich beschleunigen würde.
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

Für bestimmte Anwendungen ist Sendkey wirklich interessant. Ich habe mir aber vorgestellt, die Datenübergabe "unsichtbar" zu erledigen, funktioniert es in meiner Anwendung aber leider doch nicht. Sendkey muß die Daten ja dem aktiven Fenster, in diesem Fall also einem Browser übergeben. Den Browser möchte und muß ich aber nicht zwingend involvieren.
Tafkadasom2k5
User
Beiträge: 24
Registriert: Dienstag 25. Juli 2006, 09:32

Ja, dann mach es doch auf meine Weise:
Nimm dir das Formular aus der HTML-Einlog-Seite, und belege es "vor".

Bei dem Javascript, welches das dann beim Start automatisch macht, helfe ich dir dann.

Gr33tz
Tafkadasom2k5
Ich kam, ich sah, und ich ging einfach wieder...

Gott: "Nietzsche ist tot"
Antworten