jon*_*bon 5 gmail selenium python-3.x 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")
Run Code Online (Sandbox Code Playgroud)
此代码假定cookie已经保存,但是最后重新保存它们,因此进行第二次运行(如果您是第一次手动登录)。
我的猜测是Gmail是否以某种方式使用了更高级的cookie识别方法?
您正在为一个域复制 cookie。您还需要复制以下域
accounts.google.com
mail.google.com
Run Code Online (Sandbox Code Playgroud)
甚至可能更多,请参阅下面的全新登录屏幕截图
| 归档时间: |
|
| 查看次数: |
122 次 |
| 最近记录: |