2015-09-07 56 views
2

我試圖使用Python請求模塊鏈接到MediaWiki頁面上有一個POST請求登錄:檢查後要求登錄我

import requests 

s = requests.Session() 
s.auth = ('....', '....') 
url = '.....' 
values = {'wpName' : '....', 
     'wpPassword' : '.....'} 
req = s.post(url, values) 
print(req.content) 

我無法從發佈請求的返回值告訴登錄嘗試是否成功。我能做些什麼來檢查嗎?謝謝。

回答

2

通常,這樣的認證機制是使用HTTP cookie實現的。驗證成功後,您可能能夠檢查會話cookie的存在。您可以在HTTP響應標頭或會話Cookie屬性s.cookies中找到cookie。

+0

看起來請求沒有工作,如餅乾罐是空的.....如果你知道,是MediaWiki的頁面設計,使你不能使用請求模塊手動登錄,或者是也許與我的代碼相反的問題? –

2

在正常情況下,我會建議你去機械化的方式,讓自己變得容易,但是由於你堅持要求,那就讓我們使用它。 YOu顯然已經得到了正確的值,但我個人不使用auth()函數。所以,試試這個。

import requests 

url = 'https://example.com/wiki/index.php?title=Special:UserLogin' 
values = { 
    'wpName': 'myc00lusername', 
    'wpPassword': 'Myl33tPassw0rd12' 
} 

session = requests.session() 
r = session.post(url, data=values) 
print r.cookies 
+0

你解決了我掙扎的問題。謝謝 – Jeeva

4

這是我用來解決這個問題的。 獲得成功登錄後,我從 response.text 中讀取文本,並將其與我在提交不正確信息時獲得的文本進行比較。 我這樣做的原因是驗證是在服務器端完成的,請求將得到200 OK響應,無論它是否成功。 所以我結束了這一行。

logged_in = True if("Incorrect Email or password" in session.text) else False