[英]Selenium - share the browser session (cookies, local storage) between computers
我需要在兩台計算機之間傳輸我的 Selenium 會話。
要通過 Selenium 導出和導入 cookie,您必須單獨訪問每個網站,然后才能設置其 cookie,我想避免這種情況。 我也想復制本地存儲。
這是我迄今為止嘗試過的:
1 - 啟動一個新的 Selenium 會話:
driver = webdriver.Chrome()
2 - 在 %temp% 中找到其臨時 Chrome 用戶配置文件並將其復制到我的應用程序文件夾
3 - 使用此用戶配置文件啟動新驅動程序:
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument("user-data-dir=C:\\profiles\\temp_profile")
driver = webdriver.Chrome(chrome_options=chrome_options)
以上工作 - 本地存儲和 cookie 仍然在我的本地 PC 上,但是,當我將此用戶配置文件復制到另一台 PC 並啟動它時,本地存儲仍然存在,但 cookie 消失了。
我也嘗試過使用常規 chrome 配置文件進行相同的操作,並嘗試直接在 Chrome 而不是 Selenium 中啟動用戶配置文件,但 cookie 仍然消失了。
由於 cookie 存儲在 Chrome 的 SQLite 文件中,並且它們是加密的,因此您真的不知道(或想深入了解……)為什么它不起作用。 它可能與信息安全有關。
所以我的建議是使用 WebDriver 的功能保存它們並將它們加載到內存中。 見這里。
我使用的一種解決方案是腌制 cookie 並在計算機之間共享它們
#save cookies
import pickle
from selenium import webdriver
options = webdriver.ChromeOptions()
options.add_argument("--start-maximized")
options.add_experimental_option("excludeSwitches", ["enable-automation"])
options.add_experimental_option("detach",True)
options.add_experimental_option('prefs', {'credentials_enable_service': False, 'profile': {'password_manager_enabled': False}})
driver = webdriver.Chrome(options=options,executable_path="./chromedriver")
# do login steps, so cookies can be set
pickle.dump(driver.get_cookies(), open("cookies.pkl", "wb"))
然后你可以在另一邊加載 cookie
#load cookies
import pickle
from selenium import webdriver
driver.get("http://www.example.com")
cookies = pickle.load(open("cookies.pkl","rb"))
for cookie in cookies:
driver.add_cookie(cookie)
和 rsync/scp 計算機之間的 cookies.pkl 文件
我正在回應這個,因為它出現在我的谷歌搜索中。
也許這與 Chrome 加密它的 cookie 的方式有關,因此您需要在兩台機器上使用相同的證書才能使復制粘貼工作。
看一看: https : //github.com/bertrandom/chrome-cookies-secure
使用它您仍然需要知道域,但您不需要實際訪問該網站。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.