Selenium启动Chrome、Firefox时无法登录Google账号问题求助
解决方案
方案1:修改原生Selenium启动配置,抹去自动化特征
Google会检测Selenium启动的浏览器自带的webdriver等特征标记,添加以下启动参数即可绕过大部分基础检测:
from selenium import webdriver from selenium.webdriver.chrome.options import Options chrome_options = Options() # 禁用自动化控制标记 chrome_options.add_experimental_option("excludeSwitches", ["enable-automation"]) chrome_options.add_experimental_option('useAutomationExtension', False) # 禁用沙箱、GPU等可选参数,根据需要添加 chrome_options.add_argument('--no-sandbox') chrome_options.add_argument('--disable-dev-shm-usage') driver = webdriver.Chrome(options=chrome_options) # 覆盖webdriver属性,进一步抹除特征 driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", { "source": """ Object.defineProperty(navigator, 'webdriver', { get: () => undefined }) """ })
Firefox浏览器也可以通过修改dom.webdriver.enabled配置项关闭特征标记:
from selenium import webdriver from selenium.webdriver.firefox.options import Options firefox_options = Options() firefox_options.set_preference("dom.webdriver.enabled", False) firefox_options.set_preference('useAutomationExtension', False) driver = webdriver.Firefox(options=firefox_options)
方案2:加载本地已登录账号的浏览器配置
直接调用本地正常使用的、已经登录过Google账号的Chrome配置文件,避免新环境触发风控:
- 先在Chrome地址栏输入
chrome://version,找到「个人资料路径」,复制路径内容(去掉末尾的Default文件夹名) - 启动时添加配置路径参数:
chrome_options.add_argument("--user-data-dir=你刚才复制的个人资料路径") chrome_options.add_argument("--profile-directory=Default")
启动后就会直接使用平时常用的Chrome环境,不需要重新登录Google账号。
方案3:使用专门绕过检测的undected-chromedriver
这是专门针对反爬优化的Chromedriver封装,默认已经抹除了所有Selenium相关的特征,适配最新版Chrome,不需要降级浏览器:
- 安装依赖:
pip install undetected-chromedriver - 示例代码:
import undetected_chromedriver as uc driver = uc.Chrome() driver.get("你要访问的Google服务地址")
额外注意事项
- 不要在登录状态下频繁切换IP、短时间多次发起登录请求,会触发Google临时风控,触发后需要等待24-48小时再尝试
- 尽量保持浏览器UA、分辨率等参数和本地正常使用的Chrome一致,降低特征差异
内容的提问来源于stack exchange,提问作者X coder
相关产品推荐
相关产品推荐

