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
JavaScripts in urllib2 Anfrage
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.
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
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.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Also der Schutz ist durch einen <noscript> Tag eingebaut z.B:
Ich hoffe das Hilft, mehr konnte ich auch nicht finden.
BasterTWO
Code: Alles auswählen
<title>Titel der Seite</title><noscript><meta http-equiv="refresh" content="1; URL=http://blabla.de/javascript.html" /></noscript>
BasterTWO
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Ja dann warum gehst du auf diese Seite überhaupt?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.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
`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.
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.