Python环境下用Selenium+2captcha破解Geetest后,如何提交验证参数?
提交Geetest验证参数的实现方法(Python)
方法一:用Selenium直接模拟页面提交(推荐)
你已经通过Selenium打开了目标页面,直接在当前会话中操作更贴合网站的验证逻辑,避免会话不一致导致的提交失败。
操作步骤:
- 找到页面中存储Geetest参数的隐藏表单字段(通常是
input标签,name属性分别对应geetest_challenge、geetest_validate、geetest_seccode) - 用Selenium的
execute_script给这些字段赋值(隐藏字段用send_keys可能无效,JS赋值更可靠) - 触发页面的提交动作(点击提交按钮或执行页面原生的提交JS函数)
代码示例:
from selenium import webdriver from selenium.webdriver.common.by import By # 假设已完成验证,拿到三个参数 geetest_challenge = "你的challenge值" geetest_validate = "你的validate值" geetest_seccode = "你的seccode值" # 1. 填充Geetest参数到页面隐藏字段 driver.execute_script(f'document.querySelector("input[name=\'geetest_challenge\']").value = "{geetest_challenge}";') driver.execute_script(f'document.querySelector("input[name=\'geetest_validate\']").value = "{geetest_validate}";') driver.execute_script(f'document.querySelector("input[name=\'geetest_seccode\']").value = "{geetest_seccode}";') # 2. 触发提交(二选一即可) # 方式A:点击页面提交按钮(替换成实际的选择器) submit_btn = driver.find_element(By.CSS_SELECTOR, "button[type='submit']") submit_btn.click() # 方式B:执行页面原生提交函数(如果网站用AJAX提交) # driver.execute_script("submitVerification();") # 替换为页面实际的提交函数名
方法二:用requests库单独提交(需同步会话)
如果不想依赖Selenium提交,可以用requests模拟,但必须同步Selenium的会话Cookie,确保验证状态一致。
操作步骤:
- 从Selenium中提取当前会话的Cookie,转换为requests可识别的格式
- 构造包含三个Geetest参数的请求数据(Form Data或JSON,取决于网站提交格式)
- 发送POST请求到目标提交接口
代码示例:
import requests from selenium import webdriver # 已获取的Geetest参数 geetest_challenge = "你的challenge值" geetest_validate = "你的validate值" geetest_seccode = "你的seccode值" # 1. 同步Selenium的Cookie到requests会话 session = requests.Session() for cookie in driver.get_cookies(): session.cookies.set(cookie['name'], cookie['value']) # 2. 构造请求数据(需匹配网站实际提交格式,可通过F12开发者工具查看) data = { "geetest_challenge": geetest_challenge, "geetest_validate": geetest_validate, "geetest_seccode": geetest_seccode, # 需额外添加页面其他必填字段,比如用户名、密码等 } # 3. 发送提交请求(替换为实际的接口URL) response = session.post("https://目标网站提交接口URL", data=data) # 检查提交结果 print(response.status_code) print(response.text)
关键注意事项:
- 先通过浏览器F12开发者工具,手动完成一次验证提交,查看Network面板的请求详情:确认提交方式(Form/JSON)、请求URL、额外必填参数
- 若用Selenium提交,尽量模拟真实用户流程(先填完其他表单内容,再填充验证参数,最后点击按钮),避免直接修改DOM被检测
- 部分网站会对提交参数做额外校验(如时间戳、签名),需同步带上这些参数才能提交成功
内容的提问来源于stack exchange,提问作者duy dang
相关产品推荐
相关产品推荐

