Seite 1 von 1

Unvollständige Weiterleitung ?! Problem mit urllib

Verfasst: Donnerstag 4. Dezember 2014, 19:57
von Brainsucker
Guten Abend,


Ich habe das Problem, dass ich nach einem POST-Request über urllib.request nicht - so wie erwartet - auf eine bestimmte Seite weiter geleitet werde.
Stattdessen erhalte ich folgdenen HTML Schnipsel von dem Server:

Code: Alles auswählen

<script language="JavaScript">
<!-- 

function redirect() {
window.location = "hier steht die URL, auf die ich weiter geleitet werden SOLLTE";
}

timer = setTimeout('redirect()', '0');

-->
</script>
Wie der Name der JavaScript funktion schon sagt, sollte ich doch auf die angegebene Seite weiter geleitet werden?!
Was mir jedoch etwas komisch vor kommt und wenn mich meine Kenntnisse in HTML nicht vollkommen übers Ohr hauen, dann steht doch die Funktion in einem Kommentar drin, jedoch wenn ich den Schnipsel in eine HTML Datei kopiere und dann via Browser öffne, werde ich problemlos auf die gewünschte Seite weiter geleitet.

Gibt es da eine Möglichkeit in Python, dass ich nicht bei diesem Schnipsel HTML hängen bleibe, sondern dass der request von Python direkt auf der korrekten Seite landet?

Re: Unvollständige Weiterleitung ?! Problem mit urllib

Verfasst: Donnerstag 4. Dezember 2014, 20:01
von Sr4l
JavaScript in HTML Kommentaren ist kein Problem, das Problem ist das Python urllib kein JavaScript interpretiert. Bei deinem Problem kannst du dich allerdings einfach selber darum kümmern und dem Link folgen.

Re: Unvollständige Weiterleitung ?! Problem mit urllib

Verfasst: Donnerstag 4. Dezember 2014, 20:03
von Brainsucker
Sr4l hat geschrieben:Bei deinem Problem kannst du dich allerdings einfach selber darum kümmern und dem Link folgen.

Genau das soll Python für mich machen. Ansonten wäre das Programm vollkommen nutzlos :)

Re: Unvollständige Weiterleitung ?! Problem mit urllib

Verfasst: Donnerstag 4. Dezember 2014, 20:20
von Sirius3
@Brainsucker: es wird wohl einen Grund geben, dass die Weiterleitung normalerweise nur mit Browsern, die interaktiv benutzt werden, funktioniert.

Re: Unvollständige Weiterleitung ?! Problem mit urllib

Verfasst: Donnerstag 4. Dezember 2014, 20:26
von Brainsucker
Sirius3 hat geschrieben:@Brainsucker: es wird wohl einen Grund geben, dass die Weiterleitung normalerweise nur mit Browsern, die interaktiv benutzt werden, funktioniert.
Ob das stimmt, dass es ausschließlich nur mit einem "normalen" Browser funktioniert, wage ich stark zu Bezweifeln. Das heißt es muss definitiv noch andere Lösungen geben und nach genau diesen suche ich hier. Es mag schon richtig sein, dass dieses "Hindernis" nicht ohne Grund existiert^^

Re: Unvollständige Weiterleitung ?! Problem mit urllib

Verfasst: Donnerstag 4. Dezember 2014, 20:32
von Sr4l
Brainsucker hat geschrieben:
Sr4l hat geschrieben:Bei deinem Problem kannst du dich allerdings einfach selber darum kümmern und dem Link folgen.
Genau das soll Python für mich machen. Ansonten wäre das Programm vollkommen nutzlos :)
Python kann das für dich machen wenn du ihm hilfst, du suchst mit Python in dem HTML nach dem Link und öffnest ihn so wie du alle anderen Links auch öffnest. Verstehst du was ich meine?

Es gibt eigentlich keine andere praktikable Lösung, wenn man vom "automatisieren" von Webbrowsern absieht.

JavaScript zu interpretieren ist noch der einfachere Teil, man muss auch die Datenstruktur von der Website (DOM https://de.wikipedia.org/wiki/Document_Object_Model) abbilden.

Re: Unvollständige Weiterleitung ?! Problem mit urllib

Verfasst: Donnerstag 4. Dezember 2014, 20:47
von snafu
Das Problem kann man in Python entweder mit nem JavaScript-Parser oder mit einem regulären Ausdruck lösen. Letzteres könnte so aussehen (Ausgabe aus der Python-Shell):

Code: Alles auswählen

>>> code
'<script language="JavaScript">\n<!--\n \nfunction redirect() {\nwindow.location = "hier steht die URL, auf die ich weiter geleitet werden SOLLTE";\n}\n \ntimer = setTimeout(\'redirect()\', \'0\');\n \n-->\n</script>'
>>> re.search('window.location = "(.*)";', code).group(1)
'hier steht die URL, auf die ich weiter geleitet werden SOLLTE'
Das setzt natürlich voraus, dass der JS-Code immer exakt das von dir angegebene Muster hat. Ansonsten kommt man mit dieser Variante schnell in Teufels Küche.

Re: Unvollständige Weiterleitung ?! Problem mit urllib

Verfasst: Donnerstag 4. Dezember 2014, 22:27
von Brainsucker
snafu hat geschrieben:Das setzt natürlich voraus, dass der JS-Code immer exakt das von dir angegebene Muster hat. Ansonsten kommt man mit dieser Variante schnell in Teufels Küche.
Die Webseite, auf die weiter geleitet wird ist immer exakt die selbe. Das Problem dabei ist jedoch, dass die Website, auf die ich weiter gleitet werde erkennen muss, dass ich von der genau VORHERIGEN Seite, weiter gleitet wurde und ich daher keinen stupiden neuen request machen kann, weil sonst mein Vorhaben nicht funktioniert.

Gibt's denn eventuell etwas, dass ich den HEADER von meinem request so manipulieren kann, um der Website "vorzugaukeln", dass ich von Seite X weiter geleitet wurde?

Re: Unvollständige Weiterleitung ?! Problem mit urllib

Verfasst: Donnerstag 4. Dezember 2014, 22:39
von Sirius3
@Brainsucker: dafür gibt es den Referer, den Du im Header mitschicken mußt.

Re: Unvollständige Weiterleitung ?! Problem mit urllib

Verfasst: Donnerstag 4. Dezember 2014, 23:07
von Brainsucker
Danke erstmal für die Antworten. Ich werd mich mal die Tage dran setzen und berichten :)

Re: Unvollständige Weiterleitung ?! Problem mit urllib

Verfasst: Freitag 5. Dezember 2014, 07:57
von Sr4l
Du kannst dir auch noch das Modul Requests (http://docs.python-requests.org/en/late ... uickstart/ ) anschauen.

Re: Unvollständige Weiterleitung ?! Problem mit urllib

Verfasst: Freitag 5. Dezember 2014, 17:32
von Brainsucker
Sr4l hat geschrieben:Du kannst dir auch noch das Modul Requests (http://docs.python-requests.org/en/late ... uickstart/ ) anschauen.
Das sieht auf den ersten Blick sehr viel versprechend aus. Da werde ich auf jeden Fall nochmal rein schauen. :)