如何使用 Selenium Python 保存 Whatsapp Web 的会话?

6

我原本以为在验证后,cookies数组会自动添加某些内容,但事实并非如此。

driver = webdriver.Chrome(chromedriver)
whatsapp_url = "https://web.whatsapp.com"
driver.get(whatsapp_url)
print(driver.get_cookies())
time.sleep(30) # We are doing the manual QR code verification here
print(driver.get_cookies())

driver.get_cookies()在执行前后都是空的


你可以使用pickle。 - Prany
我知道这个(https://dev59.com/hmUp5IYBdhLWcg3wx5pu#15058521),但是除了二维码之外,我的所有实验都没有成功。你能给出保存WhatsApp二维码的完整工作代码吗? - ishandutta2007
1
您可以使用以下代码将整个会话保存下来: chrome_options.add_argument("user-data-dir=" + os.path.dirname(sys.argv[0])) browser = webdriver.Chrome(chrome_options=chrome_options) - Prany
1
请在答案中提供完整的工作代码,从1-2行注释很难理解。 - ishandutta2007
5个回答

15

试试这个:

options = webdriver.ChromeOptions();
options.add_argument('--user-data-dir=./User_Data')
driver = webdriver.Chrome(chrome_options=options)
driver.get('https://web.whatsapp.com/')

您需要首次登录。如果您需要存储会话,它将始终起作用。无需导入/导出Cookie。


我尝试了这种方法。然而,它并没有起作用。登录仍然需要扫描二维码。 - anon

4

我不能评论Abhi Bhalgami的回答,但是根据另一篇帖子,我需要做一些修改:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

chromepath = r'E:\chromedriver\chromedriver.exe'
options = webdriver.ChromeOptions() 
options.add_argument("user-data-dir=C:\\Users\\user\\AppData\\Local\\Google\\Chrome\\User Data")
driver = webdriver.Chrome(executable_path=chromepath, chrome_options=options)

从Chrome浏览器本地存储中提取并保存WhatsApp会话,然后在另一台设备上使用


2
这对我来说很有效!
import os
from selenium import webdriver

dir_path = os.getcwd()
profile = os.path.join(dir_path, "profile", "wpp")
options = webdriver.ChromeOptions()
options.add_argument(
    r"user-data-dir={}".format(profile))

browser = webdriver.Chrome("./chromedriver.exe", chrome_options=options)

browser.get("https://web.whatsapp.com")

0

我不确定,但是您可以使用pickle保存当前的cookies,例如:

import pickle
from selenium import webdriver

driver = webdriver.Chrome()
driver.get("http://www.google.com")
pickle.dump( driver.get_cookies() , open("cookies.pkl","wb"))

然后使用以下代码将它们添加回去:

import pickle
from selenium import webdriver

driver = webdriver.Chrome()
driver.get("http://www.google.com")
cookies = pickle.load(open("cookies.pkl", "rb"))
for cookie in cookies:
    driver.add_cookie(cookie)

0

Web Whatsapp 将会话存储在 IndexedDB 中,并将这些值同步到本地存储。

以下是可供尝试的工作代码:tithiwa/session.py,使用此 JavaScript 代码


先生,这还能用吗?我已经尝试了几次,但都没有成功。您能否展示正确的方法? - Mr Noob

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接