2011-03-02 274 views
2

我是python的新手,在掙扎了一段時間之後,我幾乎找到了工作的代碼。Python身份驗證

import urllib, urllib2, cookielib 

username = 'myuser' 
password = 'mypass' 

cj = cookielib.CookieJar() 
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj)) 
login = urllib.urlencode({'user' : username, 'pass' : password}) 
opener.open('http://www.ok.com/', login) 
mailb = opener.open('http://www.ok.com/mailbox').read() 
print mailb 

但是我打印後得到的輸出只是一個重定向頁面。

<html> 

<head> 

<META HTTP-EQUIV="Refresh" CONTENT="0;URL=https://login.ok.com/login.html?skin=login-page&dest=REDIR|http://www.ok.com/mailbox"> 

<HTML dir=ltr><HEAD><TITLE>OK :: Redirecting</TITLE> 

</head> 

</html> 

感謝

+0

您現在可以使用這個'cj'瀏覽網站。 – methyl 2011-03-02 19:21:30

回答

3

如果瀏覽器得到了響應,這將它解釋爲重定向到指定的URL的請求。

您需要對腳本進行類似的操作。您需要解析<META>標記並找到該URL,然後在該URL上執行GET操作。

+0

最後它的工作,謝謝。我也覺得我有點幸運。如果我在另一個網站嘗試同樣的事情,它可能無法工作。它會一直輸出重定向頁面?我總是可以依靠這種方法? – sophiaw 2011-03-02 20:29:50

+0

@sophiaw,誰知道ok.com會做什麼?他們沒有義務繼續在登錄時顯示重定向。您需要繼續測試您的應用,以確保它可以與當前版本的ok.com一起使用。 – 2011-03-02 20:38:39

+0

@ S.Lott,感謝編輯,這對OP更有幫助。 – 2011-03-02 20:39:00