使用Selenium WebDriver无法通过Google账号登录LinkedIn的问题求助
问题分析与解决方案
核心问题根源
你遇到的登录失败,核心原因是Google账号的认证机制变化:自2022年5月起,Google已移除低安全性应用权限选项,仅允许开启双因素认证(2FA)的账号生成「应用密码」,用于非官方客户端(如Selenium)的登录验证。你关闭2FA的操作,反而违反了Google当前的认证规则,这也是你和同事(开启2FA可正常登录)的核心差异。
分步解决方案
1. 修正Google账号配置
- 重新开启Google账号的双因素认证(2FA);
- 前往Google账号管理页,生成专门用于Selenium的应用密码(注意:应用密码仅在开启2FA后可见);
- 后续登录LinkedIn的Google账号时,使用这个应用密码替代原账号密码。
2. 优化Selenium Edge配置
错误点修正:不要混用Chrome与Edge的用户数据目录
你之前指定的--user-data-dir是Chrome的用户数据路径,Edge有独立的用户数据目录,混用会导致加载失败。正确配置如下:
edge_options = EdgeOptions() edge_options.add_experimental_option('detach', True) # 指定Edge的用户数据目录(替换为你的实际路径) edge_options.add_argument("--user-data-dir=C:/Users/Mig/AppData/Local/Microsoft/Edge/User Data") edge_options.add_argument("--profile-directory=Default") # 或你常用的Profile名称
- 启用上述参数前,必须关闭所有Edge浏览器实例,否则会因资源占用无法加载用户数据;
- 移除
--disable-web-security和--allow-running-insecure-content参数,这类低安全配置会触发Google/LinkedIn的安全拦截,反而阻碍登录。
3. 规范登录流程
- 不要直接跳转到LinkedIn的连接页面,先导航到LinkedIn登录页,完成Google账号登录(使用生成的应用密码)后,再访问目标页面;
- 添加页面加载等待,避免因网络波动导致的元素未加载问题:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.by import By def main(): edge_options = EdgeOptions() edge_options.add_experimental_option('detach', True) edge_options.add_argument("--user-data-dir=C:/Users/Mig/AppData/Local/Microsoft/Edge/User Data") edge_options.add_argument("--profile-directory=Default") service = EdgeService(executable_path=EdgeChromiumDriverManager().install()) driver = webdriver.Edge(service=service, options=edge_options) # 先进入LinkedIn登录页 driver.get("https://www.linkedin.com/") # 等待登录按钮加载完成 WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.LINK_TEXT, "Sign in"))) # 手动完成Google登录后,再导航到连接页面 driver.get("https://www.linkedin.com/mynetwork/invite-connect/connections/") links_to_connections = collect_links_to_connections(driver=driver)
4. 错误日志解读(非致命错误可忽略)
你提供的日志中,以下错误属于浏览器系统级非致命问题,与登录失败无关:
Cloud management controller initialization aborted:云管理控制器未启用,不影响功能;Bluetooth: bluetooth_adapter_winrt.cc:1058 Getting Default Adapter failed:蓝牙适配器未找到,不影响网页操作;gpu_disk_cache.cc(216)] Failed to create blob cache entry:GPU缓存创建失败,不影响页面加载;SmartScreenDnsResolver::OnComplete Error:DNS超时,可通过检查网络连接或增加等待时间解决。
内容的提问来源于stack exchange,提问作者Mig Rivera Cueva
相关产品推荐
相关产品推荐

