You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法通过Selenium/undetected-chromedriver登录Gmail并复用Cookie至Requests的问题

解决Gmail登录与Cookie复用问题

问题1:常规Selenium登录被拦截("could not sign you in")

Google的反爬机制会检测标准Selenium驱动的特征(如navigator.webdriver标识),直接使用Chrome()实例几乎必然被拦截,必须使用undetected-chromedriver规避检测,但当前用法存在优化空间。

问题2:undetected-chromedriver卡顿/无响应

你的版本组合(Chrome 127 + undetected-chromedriver 3.5.5)存在兼容性风险——3.5.5版本发布于2024年5月,而Chrome 127是2024年7月版本,建议先升级到最新稳定版:

pip install --upgrade undetected-chromedriver

同时优化初始化配置,减少检测特征并提升稳定性:

from undetected_chromedriver import Chrome, ChromeOptions

options = ChromeOptions()
# 禁用不必要组件,降低被识别概率
options.add_argument("--disable-extensions")
options.add_argument("--disable-plugins")
options.add_argument("--disable-blink-features=AutomationControlled")
# 设置正常窗口尺寸,避免无头模式异常
options.add_argument("--window-size=1920,1080")
# 可选:启用新版无头模式(需配合窗口尺寸)
# options.add_argument("--headless=new")

driver = Chrome(options=options)
driver.set_page_load_timeout(30)

登录逻辑也可优化,避免重复等待:

from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait

form_values = [
    ('input[type=email]', 'your-email@gmail.com'),
    ('input[type=password]', 'your-password')
]

driver.get('https://mail.google.com')
# 等待登录按钮可点击后触发
WebDriverWait(driver, 30).until(
    EC.element_to_be_clickable(('xpath', '//a[contains(@href, "accounts.google")]'))
).click()

for css_selector, value in form_values:
    # 等待输入框可交互后输入内容
    field = WebDriverWait(driver, 30).until(
        EC.element_to_be_clickable(('css selector', css_selector))
    )
    field.clear()
    field.send_keys(value)
    # 等待Next按钮可点击后提交
    WebDriverWait(driver, 30).until(
        EC.element_to_be_clickable(('xpath', '//span[text()="Next"]'))
    ).click()
    # 等待页面跳转完成
    sleep(2)

注意:若账号启用2FA,需手动处理验证码(自动化2FA易触发风控,不建议)。

问题3:Cookie复用后仍显示"账户暂时不可用"

仅复制Cookie不足以通过Google验证,请求环境需与浏览器完全一致:

  1. 同步User-Agent及请求头:从浏览器获取User-Agent,在requests中匹配:
user_agent = driver.execute_script("return navigator.userAgent")
session = requests.Session()
session.headers.update({
    'User-Agent': user_agent,
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
    'Accept-Language': 'en-US,en;q=0.5',
    'Referer': 'https://mail.google.com/'
})
  1. 完善Cookie导入:确保所有Cookie属性(如secure、httponly)正确同步:
for cookie in driver.get_cookies():
    session.cookies.set(
        name=cookie['name'],
        value=cookie['value'],
        domain=cookie['domain'],
        path=cookie['path'],
        secure=cookie.get('secure', False),
        httponly=cookie.get('httponly', False),
        expires=cookie.get('expires')
    )
  1. 规避风控限制:即使上述步骤正确,Google仍可能因异常行为(频繁自动化登录、异地IP)触发临时封禁,建议:
    • 使用日常登录的固定IP
    • 降低自动化操作频率
    • 手动登录完成安全验证后再尝试自动化

内容的提问来源于stack exchange,提问作者a82fd72deb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 20:03:22