С кодом, который вы опубликовали, довольно много проблем. Как правило, вы захотите создать пользовательский открыватель, который может обрабатывать перенаправления, https и т. Д., Иначе вы столкнетесь с проблемами. Что касается самих файлов cookie, вам необходимо вызвать методы load и save для вашего cookiejar
и использовать один из подклассов, например MozillaCookieJar
или LWPCookieJar
.
.
Вот класс, который я написал для входа в Facebook, когда играл в глупые веб-игры. Я просто изменил его, чтобы использовать cookiejar на основе файлов, а не в памяти.
import cookielib
import os
import urllib
import urllib2
# set these to whatever your fb account is
fb_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.urlencode({
'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, и использовать его, а затем снова войти в систему, если доступ запрещен.