簡體   English   中英

Selenium - 在計算機之間共享瀏覽器會話(cookies、本地存儲)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM