2009-01-16 43 views
2

我正在爲python 2.6中的Hulu開發一個簡單的HTML刮板,並且登錄到我的帳戶時遇到問題。這裏是我到目前爲止的代碼:Python中的Cookie問題

import urllib 
import urllib2 
from cookielib import CookieJar 
#make a cookie and redirect handlers 
cookies = CookieJar() 
cookie_handler= urllib2.HTTPCookieProcessor(cookies) 
redirect_handler= urllib2.HTTPRedirectHandler() 

opener = urllib2.build_opener(redirect_handler,cookie_handler)#make opener w/ handlers 

#build the url 
login_info = {'username':USER,'password':PASS}#USER and PASS are defined 
data = urllib.urlencode(login_info) 

req = urllib2.Request("http://www.hulu.com/account/authenticate",data)#make the request 
test = opener.open(req) #open the page 
print test.read() #print html results 

代碼編譯和運行,但所有的打印是:

Login.onError("Please \074a href=\"/support/login_faq#cant_login\"\076enable cookies\074/a\076 and try again."); 

我假設有在我如何處理Cookie一些錯誤,但就是」似乎發現它。我聽說Mechanize對於這種類型的程序來說是一個非常有用的模塊,但由於這似乎是唯一的減速帶,所以我希望找到我的錯誤。

回答

2

您收到的錯誤消息可能會引起誤解。例如,服務器可能正在查看用戶代理,並且看到它說它不是受支持的瀏覽器之一,或者看着 HTTP_REFERER預計它將來自hulu域。我的觀點是請求中有兩個很多變量來一一猜測它們

我推薦使用HTTP分析工具, CharlesFirebug中的一個來確定客戶端在通過瀏覽器進行hulu登錄時向服務器發送的內容(頭字段,Cookie,參數)。這會給你確切的請求,你需要在你的python代碼中構造。

4

你看到的是ajax回報。它可能使用JavaScript來設置cookie,並搞砸你的嘗試進行身份驗證。