python-3.x - 无法使用 Selenium/Splinter 保存和重新加载 Gmail Cookie

标签 python-3.x selenium gmail splinter

我的目标是登录 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 识别方法?

最佳答案

您正在为一个域复制 cookie。您还需要为以下域进行复制

accounts.google.com
mail.google.com

甚至可能更多,请在新登录时查看下面的屏幕截图

Domains

关于python-3.x - 无法使用 Selenium/Splinter 保存和重新加载 Gmail Cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50267818/

相关文章:

python-3.x - Python 3 .format 和 List

python-3.x - 使用 FFT 进行实时音频处理

python-3.x - 如何逐行读取 .txt 文件并使用它登录大量帐户(Python、Selenium)

php - 通过 IMAP 删除 GMail 聊天记录

python - 如何将两个复杂的字典合并在一个表达式中?

python - 删除列表中字符串的所有扩展名

java - 如何使用移动 Chrome 并通过 Appium 测试应用程序

asp.net - 我们可以使用 IIS 而不是 Visual Studio 开发服务器运行 Selenium WebDriver 测试用例吗

javascript - 从 gmail 中检索 csv 附件文件并将数据放在谷歌电子表格中

email - 我可以使用 Go 在 Google 群组上发布新主题吗?