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

Posted

技术标签:

【中文标题】如何使用 Selenium Python 保存 Whatsapp web 的会话?【英文标题】:How to save the session of Whatsapp web with Selenium Python? 【发布时间】:2018-11-20 09:02:11 【问题描述】:

我的期望是验证后会自动将某些内容添加到 cookie 数组中,但事实并非如此。

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()前后也是空的

【问题讨论】:

你可以用泡菜 我知道 (***.com/a/15058521/865220) 仅针对 QR 码,我的任何实验都不起作用。你能给出保存whatsapp二维码的完整工作代码吗? 你可以保存整个会话 chrome_options.add_argument("user-data-dir=" + os.path.dirname(sys.argv[0])) browser = webdriver.Chrome(chrome_options=chrome_options ) 请回答完整的工作代码,从评论中的 1-2 行很难理解。 【参考方案1】:

试试这个:

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

您需要第一次登录。 当您必须存储会话时,它将始终有效。无需导入/导出 cookie。

【讨论】:

我试过这个方法。但是,它不起作用。还是需要二维码才能登录【参考方案2】:

我无法评论 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)

extract and save whatsapp session from chrome browser local storage and then use it on another device

【讨论】:

【参考方案3】:

https://pt.***.com/questions/241604/salva-o-estado-ou-os-cookies-do-navegador-utilizando-o-selenium

这对我来说很好用!我

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")

【讨论】:

【参考方案4】:

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

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)

【讨论】:

【参考方案5】:

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

这是您可以尝试的工作代码:tithiwa/session.py 使用此 javascript code

【讨论】:

以上是关于如何使用 Selenium Python 保存 Whatsapp web 的会话?的主要内容,如果未能解决你的问题,请参考以下文章

如何在python中保存selenium和opencv的部分截图

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

用python+selenium抓取微博24小时热门话题的前15个并保存到txt中

如何在 Selenium (Python) 中将打开的页面保存为 pdf

如何在 selenium webdriver(python)中禁用 chrome 的“保存密码”弹出窗口

如何使用 selenium 提取类值并保存在 csv 中?