CAPSOLVER
博客
如何识别解决 Google ReCaptcha v2 所需的额外参数

如何识别和提交 reCAPTCHA 额外参数(v2/v3/Enterprise)| CapSolver 指南

Logo of CapSolver

Ethan Collins

Pattern Recognition Specialist

10-Nov-2025

在处理复杂的反机器人和CAPTCHA挑战时,尤其是Google的reCAPTCHA,仅提供sitekeypageurl通常不足以成功获取有效的g-recaptcha-response。许多网站利用额外参数来增强安全性,要求我们的自动化解决方案准确识别并提交这些隐藏数据。

本文深入探讨了reCAPTCHA中常见的额外参数,指导您如何使用专业的工具如CapSolver来识别它们,并提供完整的API提交示例。


1. 核心概念:理解reCAPTCHA的额外参数

这些参数通常由网站设置,用于区分正常用户和自动化程序。它们的存在取决于具体的网站配置以及所使用的reCAPTCHA版本。

1.1. reCAPTCHA版本差异

reCAPTCHA有几种主要类型,每种有不同的参数要求:

版本名称 核心功能 常见相关参数 使用场景
reCAPTCHA v2 普通版 “我不是机器人”复选框,需要用户交互(例如点击图片)。 sitekey, pageurl 标准网站防护
reCAPTCHA v2 隐形版 无复选框,后台运行并使用风险分析。 isInvisible: true, sitekey, pageurl 改进用户体验,低摩擦防护
reCAPTCHA v2 企业版 付费企业版,具有高级风险分析和自定义功能。 isEnterprise: true, enterprisePayload(s-data),apiDomain 高安全性、大规模应用
reCAPTCHA v3 完全隐形,返回一个分数(0.0 - 1.0)以评估用户风险。 pageAction(动作),sitekey, pageurl 行为分析、评分机制

1.2. 关键额外参数详解

参数名称 值/类型 描述
pageAction 字符串(动作值) 仅用于reCAPTCHA v3。用于标识用户在页面上执行的特定操作(例如loginsubmitpurchase),是v3风险分析的关键输入。
enterprisePayload 字符串(s-data值) 专用于reCAPTCHA企业版。这是一个加密字符串,包含企业版用于更深入风险评估的额外客户端数据。
apiDomain URL字符串 指定从哪个域名加载reCAPTCHA企业版脚本。例如,一些网站可能使用www.recaptcha.net而不是默认的www.google.com仅在网站明确指定时使用。
Anchor 字符串 由CapSolver扩展检测到的额外数据,可能与reCAPTCHA小部件在页面上的特定锚点或上下文有关。
Reload 字符串 由CapSolver扩展检测到的额外数据,可能与reCAPTCHA的重新加载机制或动态加载有关。

重要提示: 你只能在确认参数存在并了解其确切用途的情况下将其包含在提交中。盲目添加参数可能导致验证失败。


2. 如何准确识别reCAPTCHA的额外参数

识别这些隐藏参数的最佳方法是使用专业CAPTCHA解决服务提供的浏览器扩展,例如CapSolver的Captcha Solver Auto Solve扩展。

步骤1:安装CapSolver扩展

  1. 对于Chrome用户:安装Captcha Solver Auto Solve扩展。
  2. 对于Firefox用户:安装Captcha Solver Auto Solve扩展。

步骤2:使用开发者工具进行检测

  1. 前往需要解决reCAPTCHA的网站。
  2. 按下F12或右键点击页面选择“检查”以打开开发者工具
  3. 切换到CapSolver Captcha Detector选项卡。
  4. 保持CapSolver面板打开,并在页面上触发reCAPTCHA(例如点击登录按钮或刷新页面)。
  5. 扩展会自动捕获并解析所有所需参数。

步骤3:获取JSON提交数据

一旦参数成功捕获,CapSolver扩展面板会立即以JSON格式显示所需信息。此JSON可直接用于API请求,确保任务提交完整且准确。

可检测参数列表:

  • 网站URL
  • 网站密钥
  • isInvisible
  • pageAction
  • isEnterprise
  • isSRequired(指示是否需要s-data/enterprisePayload)
  • isReCaptchaV3
  • API域名
  • Anchor
  • Reload

3. API提交示例:包含额外参数

CapSolver的API设计用于通过统一接口提交所有检测到的参数。以下是使用requests库提交reCAPTCHA企业版任务的Python示例,包括额外参数如enterprisePayloadapiDomain

python 复制代码
import requests
import time

# 您的CapSolver API密钥
API_KEY = "YOUR_CAPSOLVER_API_KEY"

# API端点
CREATE_TASK_URL = "https://api.capsolver.com/createTask"
GET_TASK_RESULT_URL = "https://api.capsolver.com/getTaskResult"

# 由CapSolver扩展检测到的参数
site_key = "6Lc_a_xxxxxxxxxxxxxxxxxxxxxxx"
page_url = "https://example.com/login"
enterprise_payload = "从扩展获取的s-data负载"

def solve_recaptcha():
    # 1. 创建任务
    task_payload = {
        "clientKey": API_KEY,
        "task": {
            "type": "ReCaptchaV2EnterpriseTask",
            "websiteURL": page_url,
            "websiteKey": site_key,
            "enterprisePayload": {
                "s": enterprise_payload
            },
            "apiDomain": "www.recaptcha.net"
        }
    }

    try:
        response = requests.post(CREATE_TASK_URL, json=task_payload)
        response.raise_for_status()
        task_data = response.json()

        if task_data.get("errorId") == 0:
            task_id = task_data.get("taskId")
            print(f"任务创建成功。任务ID: {task_id}")

            # 2. 轮询结果
            while True:
                result_payload = {
                    "clientKey": API_KEY,
                    "taskId": task_id
                }
                result_response = requests.post(GET_TASK_RESULT_URL, json=result_payload)
                result_response.raise_for_status()
                result_data = result_response.json()

                if result_data.get("errorId") == 0:
                    status = result_data.get("status")
                    if status == "ready":
                        # 成功!获取令牌。
                        token = result_data["solution"]["gRecaptchaResponse"]
                        print(f"CAPTCHA已解决!令牌: {token[:30]}...")
                        return token
                    elif status == "processing":
                        print("任务仍在处理中,等待...")
                        time.sleep(5)  # 5秒后再次检查
                    else:
                        print(f"任务失败。状态: {status}")
                        return None
                else:
                    print(f"获取结果时出错: {result_data.get('errorDescription')}")
                    return None
        else:
            print(f"创建任务时出错: {task_data.get('errorDescription')}")
            return None

    except requests.exceptions.RequestException as e:
        print(f"API请求期间发生错误: {e}")
        return None

if __name__ == '__main__':
    solve_recaptcha()

常见问题(FAQ)

Q1: 为什么需要提交额外参数?

A: 许多网站使用reCAPTCHA的高级功能,如企业版或v3的行为分析,以增强安全性。这些功能需要从客户端获取额外的上下文数据(如enterprisePayloadpageAction)才能正常运行。如果缺少这些参数,reCAPTCHA服务无法正确评估请求,导致任务失败。

Q2: 如果我不确定某个参数是否存在,是否应该尝试提交?

A: 不建议这样做。 你应仅在使用CapSolver扩展等工具确认参数确实需要且已获取有效值时才提交。提交不必要的或错误的参数可能导致API请求失败或返回无效令牌。

Q3: AnchorReload参数是什么?我需要自己解析它们吗?

A: AnchorReload是CapSolver扩展在特定场景下捕获的辅助数据点。你无需手动解析它们。CapSolver扩展的价值在于它能自动检测并以可直接使用的JSON格式提供这些参数。只需将扩展提供的完整参数集提交给CapSolver API即可。

Q4: reCAPTCHA v3的pageAction和v2的sitekey有什么区别?

A:

  • sitekey(v2/v3): 用于标识网站,是所有reCAPTCHA版本的基本参数。
  • pageAction(v3): 用于标识用户在当前页面执行的特定操作(例如logincheckout)。reCAPTCHA v3通过此操作和用户行为返回风险评分。此参数在v2中不使用。

结论与进一步阅读

掌握reCAPTCHA额外参数的识别和提交对于成功的自动化至关重要。通过使用CapSolver等专业工具和API,您可以自信地应对最复杂的CAPTCHA挑战。

推荐阅读:

领取CapSolver优惠码

不要错过进一步优化您操作的机会!在充值CapSolver账户时使用优惠码 CAPN,每次充值可额外获得5%的奖励,无上限。立即访问CapSolver领取您的优惠!

合规声明: 本博客提供的信息仅供参考。CapSolver 致力于遵守所有适用的法律和法规。严禁以非法、欺诈或滥用活动使用 CapSolver 网络,任何此类行为将受到调查。我们的验证码解决方案在确保 100% 合规的同时,帮助解决公共数据爬取过程中的验证码难题。我们鼓励负责任地使用我们的服务。如需更多信息,请访问我们的服务条款和隐私政策。

更多