Невозможно сохранить и повторно загрузить файлы cookie Gmail с помощью Selenium / Splinter - PullRequest
0 голосов
/ 10 мая 2018

Моя цель - войти в 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?

1 Ответ

0 голосов
/ 18 мая 2018

Вы реплицируете куки для одного домена. Вам также необходимо выполнить репликацию для следующих доменов

accounts.google.com
mail.google.com

А может быть даже больше, см. Скриншот ниже при новом входе в систему

Domains

...