我想寫一個Python腳本來自動登錄到我的寬帶使用計量器帳戶。我從來沒有做過POST提交,我遇到了一些麻煩。Python 3,urllib POST提交
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)
從我得到的是IDToken1
的HTML是用戶名ID和IDToken2
是密碼ID。
這裏是我的問題:
當我輸入正確的用戶名和密碼,登錄頁面加載,但:
當我輸入不正確的用戶名或密碼,我得到一頁說:
此服務器遇到了一個內部錯誤,阻止它履行您的請求。最可能的原因是配置錯誤。請要求管理員在服務器的錯誤日誌中查找消息。
好了,這是非常困難的,沒有看到你正在使用...也許你應該檢查什麼實際上是由您的瀏覽器與Chrome瀏覽器開發實際發送的頁面工具或像Wireshark這樣的數據包嗅探器? – Strayer 2012-10-18 10:12:58