Python中的Cookie问题

时间:2009-01-16 15:39:36

标签: python cookies urllib2

我正在为python 2.6中的Hulu编写一个简单的HTML scraper,并且在登录我的帐户时遇到问题。到目前为止,这是我的代码:

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对于这种类型的程序是一个非常有用的模块,但由于这似乎是唯一的减速带,我希望能找到我的bug。

2 个答案:

答案 0 :(得分:4)

你所看到的是ajax回归。它可能使用javascript来设置cookie,并搞砸了你的身份验证尝试。

答案 1 :(得分:2)

您收到的错误消息可能会产生误导。例如,服务器可能正在查看用户代理,并且看到它说它不是受支持的浏览器之一,或者看着 HTTP_REFERER 期望它来自hulu域。我的观点是请求中有两个变量来逐一猜测它们

我建议使用http分析工具,例如CharlesFirebug中的{{3}}来确定当您通过浏览器进行hulu登录时客户端发送给服务器的内容(标题字段,Cookie,参数)。这将为您提供需要在python代码中构造的完全请求。