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

Selenium Python技术咨询:绕过登录页及Google reCAPTCHA问题答疑

问题1:通过Session/Selenium绕过登录页面 & 访问现有浏览器历史记录

绕过登录页面的方法

核心逻辑是复用已登录状态的Cookie,步骤如下:

  1. 手动登录目标网站,通过浏览器开发者工具的Application面板导出当前Cookie。
  2. 启动Selenium浏览器后,先访问网站的任意同源页面(必须与Cookie域名一致,否则无法添加)。
  3. 遍历导出的Cookie,用driver.add_cookie(cookie_dict)方法将Cookie注入到Selenium实例中。
  4. 刷新页面或直接访问需登录权限的页面,即可跳过登录流程。

示例代码:

from selenium import webdriver

driver = webdriver.Chrome()
# 先访问网站首页,确保域名匹配
driver.get("https://example.com")

# 替换为你导出的已登录Cookie
logged_in_cookies = [
    {"name": "session_id", "value": "your_session_value", "domain": ".example.com"},
    # 补充其他Cookie键值对
]

for cookie in logged_in_cookies:
    driver.add_cookie(cookie)

# 刷新后进入登录状态
driver.refresh()

若用requests.Session配合Selenium,可先通过Session维持登录状态,再将Session的Cookie同步到Selenium中,逻辑与上述一致。

访问现有浏览器历史记录

Selenium没有直接获取完整历史记录列表的API,但可通过两种方式操作/获取有限信息:

  • 导航控制:使用driver.back()(后退)、driver.forward()(前进)、driver.refresh()(刷新)来操作历史导航。
  • JavaScript获取:借助浏览器的window.history对象获取部分信息,但受同源策略和安全限制,无法获取所有历史URL,仅能获取记录条数:
history_length = driver.execute_script("return window.history.length")
print(f"历史记录条数: {history_length}")

出于安全考虑,浏览器会限制获取具体历史URL,仅当前页面的同源历史可能被访问,大部分场景下无法拿到完整列表。


问题2:遇到Google reCAPTCHA时,Session配合WebDriver能否绕过登录页面?

分两种场景判断:

  1. 已持有有效登录Cookie:若Session保存了未过期、未被标记异常的登录Cookie,将其同步到WebDriver后,可直接绕过登录页面,且若自动化行为未触发网站反爬规则,大概率不会触发reCAPTCHA。
  2. 登录流程需验证reCAPTCHA:若登录本身要求完成reCAPTCHA验证,Session+WebDriver无法绕过——因为没有已登录的Cookie,且自动化工具会被网站识别为非人类行为,触发验证机制。此时需手动完成验证,或使用第三方打码服务(但可能违反网站服务条款)。

注意:Google reCAPTCHA核心是区分人类与自动化程序,即使注入登录Cookie,若网站检测到浏览器由Selenium控制(如特征指纹),仍可能触发reCAPTCHA,仅靠Cookie无法规避。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 05:55:14