您发布的代码有很多问题。通常,您需要构建一个可以处理重定向,https等的自定义打开器,否则会遇到麻烦。至于cookie本身,您需要在上调用load和save方法
cookiejar,并使用子类之一,例如
MozillacookieJar或
LWPcookieJar。
这是我写的用于登录Facebook的课程,当时我在玩愚蠢的网络游戏。我刚刚对其进行了修改,以使用基于文件的cookiejar,而不是内存中的cookiejar。
import cookielibimport osimport urllibimport urllib2# set these to whatever your fb account isfb_username = "your@facebook.login"fb_password = "secretpassword"cookie_filename = "facebook.cookies"class WebGamePlayer(object): def __init__(self, login, password): """ Start up... """ self.login = login self.password = password self.cj = cookielib.MozillacookieJar(cookie_filename) if os.access(cookie_filename, os.F_OK): self.cj.load() self.opener = urllib2.build_opener( urllib2.HTTPRedirectHandler(), urllib2.HTTPHandler(debuglevel=0), urllib2.HTTPSHandler(debuglevel=0), urllib2.HTTPcookieProcessor(self.cj) ) self.opener.addheaders = [ ('User-agent', ('Mozilla/4.0 (compatible; MSIE 6.0; ' 'Windows NT 5.2; .NET CLR 1.1.4322)')) ] # need this twice - once to set cookies, once to log in... self.loginToFacebook() self.loginToFacebook() self.cj.save() def loginToFacebook(self): """ Handle login. This should populate our cookie jar. """ login_data = urllib.urlenpre({ 'email' : self.login, 'pass' : self.password, }) response = self.opener.open("https://login.facebook.com/login.php", login_data) return ''.join(response.readlines())test = WebGamePlayer(fb_username, fb_password)设置用户名和密码后,您应该会看到一个文件
facebook.cookies,其中包含您的cookie。实际上,您可能需要对其进行修改,以检查是否有活动的cookie并使用它,如果访问被拒绝,请再次登录。



