Selenium Python技术咨询:绕过登录页及Google reCAPTCHA问题答疑
问题1:通过Session/Selenium绕过登录页面 & 访问现有浏览器历史记录
绕过登录页面的方法
核心逻辑是复用已登录状态的Cookie,步骤如下:
- 手动登录目标网站,通过浏览器开发者工具的Application面板导出当前Cookie。
- 启动Selenium浏览器后,先访问网站的任意同源页面(必须与Cookie域名一致,否则无法添加)。
- 遍历导出的Cookie,用
driver.add_cookie(cookie_dict)方法将Cookie注入到Selenium实例中。 - 刷新页面或直接访问需登录权限的页面,即可跳过登录流程。
示例代码:
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能否绕过登录页面?
分两种场景判断:
- 已持有有效登录Cookie:若Session保存了未过期、未被标记异常的登录Cookie,将其同步到WebDriver后,可直接绕过登录页面,且若自动化行为未触发网站反爬规则,大概率不会触发reCAPTCHA。
- 登录流程需验证reCAPTCHA:若登录本身要求完成reCAPTCHA验证,Session+WebDriver无法绕过——因为没有已登录的Cookie,且自动化工具会被网站识别为非人类行为,触发验证机制。此时需手动完成验证,或使用第三方打码服务(但可能违反网站服务条款)。
注意:Google reCAPTCHA核心是区分人类与自动化程序,即使注入登录Cookie,若网站检测到浏览器由Selenium控制(如特征指纹),仍可能触发reCAPTCHA,仅靠Cookie无法规避。
内容的提问来源于stack exchange,提问作者Raja Muhamed
相关产品推荐
相关产品推荐

