Frage Python 3, urllib POST senden


Ich möchte ein Python-Skript schreiben, um mich automatisch bei meinem Breitband-Nutzungszähler-Konto anzumelden. Ich habe noch nie eine POST-Submission gemacht und ich habe Probleme damit.

import urllib.request, urllib.parse, urllib.error
import socket

try:
    details = urllib.parse.urlencode({ 'IDToken1': 'USERNAME', 'IDToken2': 'PASSWORD' })
    url = urllib.request.Request('https://login1.telecom.co.nz/distauth/UI/Login?realm=XtraUsers&goto=https%3A%2F%2Fwww.telecom.co.nz%3A443%2Fjetstreamum%2FxtraSum%3Flink%3Drdt', details)
    url.add_header("User-Agent","Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.29 Safari/525.13")

    responseData = urllib.request.urlopen(url).read().decode('utf8', 'ignore')
    responseFail = False

except urllib.error.HTTPError as e:
    responseData = e.read().decode('utf8', 'ignore')
    responseFail = False

except urllib.error.URLError:
    responseFail = True

except socket.error:
    responseFail = True

except socket.timeout:
    responseFail = True

except UnicodeEncodeError:
    print("[x]  Encoding Error")
    responseFail = True

print(responseData)

Aus dem HTML habe ich das abgeleitet IDToken1 ist die Benutzername-ID und IDToken2 ist die Passwort-ID.

Hier ist mein Problem:

  • Wenn ich den richtigen Benutzernamen und das richtige Passwort eingegeben habe, wird die Anmeldeseite geladen, aber:

  • Wenn ich den falschen Benutzernamen oder das falsche Passwort eingegeben habe, bekomme ich eine Seite mit folgenden Angaben:

    Dieser Server hat einen internen Fehler festgestellt, der die Ausführung Ihrer Anfrage verhindert. Die wahrscheinlichste Ursache ist eine Fehlkonfiguration. Bitten Sie den Administrator, im Fehlerprotokoll des Servers nach Nachrichten zu suchen.


6
2018-04-30 13:38


Ursprung


Antworten:


details = urllib.parse.urlencode({'IDToken1': 'USERNAME', 'IDToken2': 'PASSWORD'})

Fügen Sie die folgende Zeile hinzu:

details = details.encode('UTF-8')

7
2018-04-08 02:39



Das könnte von Entwurf sein. Was passiert, wenn Sie es in einem Browser tun? Die Tatsache, dass es mit korrekten Daten arbeitet, bedeutet, dass Sie es richtig machen.


0
2018-02-06 14:48