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) 

  • Python - Abrufen von Informationen aus einer Syslog-Datei
  • Wie kann ich mich bei der CodeCademy mit pycurl anmelden?
  • Einreichen von Formularen mit Mechanisat (Python)
  • Wie bekomme ich die Benutzer-Login / Logoff Zeit von Python für Windows & Linux?
  • Kann nicht auf der django admin-Seite mit einem gültigen Benutzernamen und Passwort angemeldet werden
  • So verwenden Sie Sitzung auf Google App-Engine
  • 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.