Python: Wie melden Sie sich bei einer Seite an und sehen die resultierende Seite in einem Browser an?

Ich gehe schon seit einiger Zeit herum und kann es nicht schaffen, das zu arbeiten. Viele meiner Recherchen haben mich darauf hingewiesen, dass ich ähnliche Probleme gefunden habe, aber alle scheinen mit dem Cookie-Grabbing verknüpft zu sein. Ich glaube, ich habe das richtig eingestellt, aber wenn ich versuche, die "versteckte" Seite zu öffnen, bringt es mich wieder auf die Login-Seite und sagt, dass meine Sitzung abgelaufen ist.

import urllib, urllib2, cookielib, webbrowser username = 'userhere' password = 'passwordhere' url = 'http://example.com' webbrowser.open(url, new=1, autoraise=1) cj = cookielib.CookieJar() opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj)) login_data = urllib.urlencode({'username' : username, 'j_password' : password}) opener.open('http://example.com', login_data) resp = opener.open('http://example.com/afterlogin') print resp webbrowser.open(url, new=1, autoraise=1) 

  • Wie melde ich mich bei der Django Rest-Browser-API an, wenn ich ein benutzerdefiniertes auth-Modell habe?
  • Python fordert die Anmeldeseite vor dem Analysieren von Daten an
  • So verwenden Sie Sitzung auf Google App-Engine
  • Web.py Benutzerauthentifizierung mit PostgreSQL Datenbankbeispiel
  • Anfragen s.get (url, verify = False) Fehler [Python]
  • Warum kann ich nicht abmelden auf django user auth?
  • 3 Solutions collect form web for “Python: Wie melden Sie sich bei einer Seite an und sehen die resultierende Seite in einem Browser an?”

    Zuerst einmal, wenn du eine Cookie-basierte Authentifizierung machst, musst du einen CookieJar , um deine Cookies zu speichern, ganz in der gleichen Weise, dass dein Browser seine Cookies einen Ort speichert, wo er sie wieder finden kann.

    Nach dem Öffnen einer Login-Seite durch Python und Speichern des Cookies von einem erfolgreichen Login, sollten Sie die MozillaCookieJar , um die Python-Cookies an ein Format zu übergeben, das ein Firefox-Browser analysieren kann. Firefox 3.x verwendet nicht mehr das Cookie-Format, das MozillaCookieJar produziert, und ich konnte keine tragfähigen Alternativen finden.

    Wenn alles, was Sie tun müssen, ist, spezifische (im Voraus bekannte format formatierte) Daten abzurufen, dann schlage ich vor, dass Sie alle Ihre HTTP-Interaktionen innerhalb von Python behalten. Es ist viel einfacher, und man muss sich nicht darauf verlassen, dass bestimmte Browser verfügbar sind. Wenn es absolut notwendig ist, Zeug in einem Browser zu zeigen, könntest du die so genannte "versteckte" Seite durch urllib2 rendern (was übrigens sehr schön mit cookielib integriert), die html in eine temporäre Datei speichern und an die webbrowser.open Die dann diese spezifische Seite wiedergeben wird. Weitere Umleitungen sind nicht möglich.

    Ich habe in der Regel die Mechanisierungsbibliothek benutzt , um Sachen so zu behandeln. Das antwortet nicht auf deine Frage, warum dein existierender Code nicht funktioniert, aber es ist noch etwas zu spielen.

    Der angegebene Code ruft:

     opener.open('http://example.com', login_data) 

    Aber wirft die Antwort weg. Ich würde auf diese Antwort schauen, um zu sehen, ob es "schlechtes Passwort" oder "Ich akzeptiere nur IE" oder ähnliches.

    Python ist die beste Programmiersprache der Welt.