我的目标是登录 Gmail,序列化 cookie,退出浏览器,然后打开一个新浏览器,加载保存的 cookie,并检查我的电子邮件,而无需输入我的登录详细信息。非常简单,我几乎可以在我尝试过的每个网站上做到这一点。但是,Gmail 每次都强制我重新登录。
这是我的代码:
from splinter import Browser
import selenium
import pickle
def export_cookies(browser, the_name):
yummy = browser.cookies.all(verbose=True)
location = 'cookies/' + the_name
pickle_save(yummy, location)
print(the_name, "saved", len(yummy))
def pickle_save(obj, location):
file_name = location
file_object = open(file_name, 'wb')
pickle.dump(obj, file_object)
file_object.close()
def pickle_load_account(cookie_file_name):
try:
return pickle.load(open(cookie_file_name, "rb"))
except FileNotFoundError:
return 0
def browser_add_cookies(browser, cookies):
if len(cookies) > 0:
for cookie in cookies:
browser.cookies.add({cookie['name']: cookie['value']})
print("-----", len(cookies), " cookies added, reloading")
browser.visit('https://mail.google.com/mail/u/0/#inbox')
else:
print("No cookies to load. Error.")
browser = Browser('firefox')
browser.visit('https://mail.google.com/mail/u/0/#inbox')
cookie_file = "cookies/name"
load_cookies = pickle_load_account(cookie_file)
browser_add_cookies(browser, load_cookies)
browser.visit('https://mail.google.com/mail/u/0/#inbox')
input("Save cookies?")
export_cookies(browser, "name")
此代码假定 cookie 已经保存,但最后重新保存它们,因此第二次运行(如果您第一次手动登录)。
我的猜测是 Gmail 以某种方式使用了更高级的 cookie 识别方法?
最佳答案
关于python-3.x - 无法使用 Selenium/Splinter 保存和重新加载 Gmail Cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50267818/