Seite 1 von 1

JavaScripts in urllib2 Anfrage

Verfasst: Sonntag 28. September 2008, 01:06
von BasterTWO
Guten Abend Zusammen,
ich habe es bereits geschaft das sich mein Python Script auf eine Seite einloggt. Nun möchte ich mich auf einer anderen Seite einloggen, das Problem ist das diese Seite kontroliert ob man JavaScripts erlaubt.

Ist so etwas in Urllib2 möglich das zu Emulieren oder diesen Schutz zu umgehen ?

MfG
BasterTWO

Verfasst: Sonntag 28. September 2008, 11:08
von Y0Gi
Der Server kann nicht prüfen, ob der Client JavaScript erlaubt, das macht der Browser. Mit urllib2 und ähnlichen Tools werden nur Dokumente vom Server bezogen, nicht ausgeführt. Der Server liefert entsprechenden JavaScript-Code aus, der bei Ausführung ein anderes Verhalten der Seite liefert (etwa Ein- oder Ausblenden bestimmter Elemente, automatische Weiter- oder Umleitung). Du musst herausfinden, was da passiert, um entsprechend reagieren zu können.

Verfasst: Sonntag 28. September 2008, 11:10
von Leonidas
Wie wird denn die Kontrolle ob JavaScript Aktiviert ist durchgeführt? Wenn es einfach ist, kannst du versuchen, das JavaScript zu simulieren, wenn es komplex ist, wirst du es ausführen müssen.

Verfasst: Sonntag 28. September 2008, 12:19
von BasterTWO
Also der Schutz ist durch einen <noscript> Tag eingebaut z.B:

Code: Alles auswählen

<title>Titel der Seite</title><noscript><meta http-equiv="refresh" content="1; URL=http://blabla.de/javascript.html" /></noscript>
Ich hoffe das Hilft, mehr konnte ich auch nicht finden.

BasterTWO

Verfasst: Sonntag 28. September 2008, 12:49
von Leonidas
Na dann sollte deine Seite doch tun, denn die JS-Fehlermeldung kommt ja nur auf der `javascript.html`.

Verfasst: Sonntag 28. September 2008, 14:55
von BasterTWO
Ich will ja auf der Seite mich einlogge, und muss dafür sorgen das ich eben nicht auf die javascript.html weiter geleitet werde.

BasterTWO

Verfasst: Sonntag 28. September 2008, 14:59
von Leonidas
BasterTWO hat geschrieben:Ich will ja auf der Seite mich einlogge, und muss dafür sorgen das ich eben nicht auf die javascript.html weiter geleitet werde.
Ja dann warum gehst du auf diese Seite überhaupt?

Verfasst: Montag 29. September 2008, 14:01
von Y0Gi
Wenn du die Seite, aus der du zitiert hast, einfach nur herunterlädst, wirst du gar nicht weitergeleitet.

Verfasst: Mittwoch 8. Oktober 2008, 11:12
von BasterTWO
Habe diesen Tread komplet Vergessen sry.

Aber ich muss mich ja auf der Seite einloggen können. Und das kann ich ja nur über urllib machen wo ich dann weiter geleidet werden.

Jarus

Verfasst: Mittwoch 8. Oktober 2008, 16:05
von Y0Gi
`urllib(2)` und Weiterleitung sind zwei verschiedene paar Schuhe. Mit ersterer führst du Requests aus, d. h. du lädst Dokumente (HTML, Stylesheets, JavaScript-Code, Bilder etc.) herunter und/oder übermittelst Daten an den Server (z. B. auch für einen Login).

Eine Weiterleitung kann mit HTML über das ``<meta>``-Tag oder mit JavaScript (``location.href = '/irgendwas';``) realisiert sein. In beiden Fällen beziehst du mit ``urllib2.urlopen(...)`` nur ein Dokument, in dem so ein Konstrukt stehen kann. Du bekommst nur einen String geliefert und es wird weder das HTML geparst und gerendert noch der JavaScript-Code geladen und ausgeführt.

Finde heraus, was genau zum Login führt und erzeuge einen entsprechenden (POST-)Request. Das dürfte vermutlich auch der erste sein, den du überhaupt benötigst, da der Weg zum Login meistens gleich bleibt.