如何通过C# Selenium ChromeDriver保存WhatsApp登录会话免扫二维码?
解决C# Selenium ChromeDriver保存WhatsApp登录会话免扫码问题
核心原理
WhatsApp Web的登录状态存储在Chrome用户配置文件的Cookie和本地存储中,只要Selenium加载已完成登录的Chrome配置文件,就能直接复用会话,无需重复扫码。
操作步骤
1. 手动配置并保存登录状态
- 关闭所有正在运行的Chrome浏览器进程(打开任务管理器,结束所有
chrome.exe进程) - 通过命令行启动指定Profile的Chrome:
chrome.exe --user-data-dir="C:\Users\Myname\AppData\Local\Google\Chrome\User Data" --profile-directory="Profile 3" - 在这个Chrome窗口中打开
https://web.whatsapp.com/,完成扫码登录,确认登录成功后关闭窗口
2. 调整Selenium代码
确保路径格式正确(用@符号避免转义错误),同时保证ChromeDriver与Chrome版本完全匹配:
ChromeOptions options = new ChromeOptions(); // 使用@符号简化路径转义,避免语法错误 options.AddArguments(@"--user-data-dir=C:\Users\Myname\AppData\Local\Google\Chrome\User Data"); options.AddArguments(@"--profile-directory=Profile 3"); // 可选:禁用干扰性提示和扩展,提升稳定性 options.AddArguments("--disable-infobars"); options.AddArguments("--disable-extensions"); IWebDriver driver = new ChromeDriver(options); driver.Navigate().GoToUrl("https://web.whatsapp.com/"); // 此时应直接进入已登录状态,无需扫码
常见问题排查
- 仍需扫码:检查Profile路径是否正确,确认手动登录后该Profile的WhatsApp会话已保存(手动打开该Profile的Chrome,看是否自动登录WhatsApp)
- 版本不兼容:ChromeDriver版本必须与Chrome浏览器版本完全一致(比如Chrome是118.x,ChromeDriver也要用118.x版本)
- Profile冲突:运行程序前确保没有其他Chrome实例在使用同一个Profile,否则会导致配置文件无法加载
- 权限问题:避免用管理员权限运行程序,确保程序对用户数据目录有读写权限
内容的提问来源于stack exchange,提问作者Waseem
相关产品推荐
相关产品推荐

