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