CAPSOLVER
博客
reCAPTCHA v2 企业版完整解决方案指南

reCAPTCHA v2 企业版完整解决方案指南

Logo of CapSolver

Ethan Collins

Pattern Recognition Specialist

02-Sep-2024

彻底解决reCAPTCHA v2 Enterprise指南

解决reCAPTCHA v2 Enterprise可能是一项艰巨的任务,特别是考虑到Google为了防止自动化系统绕过它而实施的高级安全措施。但是,采用正确的方法和工具,可以有效地应对这一挑战。本指南将引导您完成解决reCAPTCHA v2 Enterprise的过程,从了解其复杂性到使用可用的服务和技术。

什么是reCAPTCHA v2 Enterprise?

reCAPTCHA v2 Enterprise是传统reCAPTCHA v2的一个更安全的版本。它旨在通过提出对机器来说难以解决但对人类来说很容易解决的挑战来防止自动化机器人访问网站。与标准版本不同,Enterprise版本具有增强的安全功能,使其更难以解决。

为什么reCAPTCHA v2 Enterprise难以解决?

  • 高级风险分析: reCAPTCHA v2 Enterprise使用复杂的算法来分析用户行为和交互模式,使机器人难以模仿人类行为。

  • 挑战复杂性增加: 提出的挑战通常更复杂,需要多次尝试或复杂的技巧才能解决。

  • 服务器端验证: Google执行额外的服务器端检查,可以标记可疑活动,从而增加反复触发reCAPTCHA的可能性。

解决reCAPTCHA v2 Enterprise的方法

1. 人工解决

人工解决涉及人工用户完成CAPTCHA挑战。这种方法对于确保CAPTCHA完成最可靠,但由于需要人工操作,因此对于大规模操作而言不可扩展。

2. 使用CapSolver(reCAPTCHA v2 Enterprise最可靠的解决方案)

CapSolver是解决reCAPTCHA v2 Enterprise挑战的高度可靠的解决方案。要开始使用,务必确保您使用正确的任务类型:ReCaptchaV2EnterpriseTaskReCaptchaV2EnterpriseTaskProxyLess。务必确认您尝试解决的CAPTCHA确实是reCAPTCHA v2 Enterprise,而不是标准的v2。

要确定所需参数,您可以使用CapSolver扩展实用程序。网上存在各种类型的CAPTCHA,包括reCaptcha、Cloudflare等等。了解这些参数是有效解决它们的关键。以下是如何使用CapSolver扩展轻松识别CAPTCHA参数的方法:

  1. 安装:

  2. CapSolver设置:

    • 访问CapSolver

    • 按键盘上的“F12”键打开开发者工具。

    • 导航到CapSolver Captcha Detector选项卡。

  3. 检测:

    • 在不关闭CapSolver面板的情况下,访问您打算触发CAPTCHA的网站。
    • 触发网站上的CAPTCHA。
    • 请记住:在触发CAPTCHA之前不要关闭CapSolver面板。
  4. 识别reCAPTCHA参数:

  • 可识别参数:
    • 网站URL
    • 站点密钥
    • pageAction
    • isInvisible
    • isEnterprise
    • isSRequired
    • isReCaptchaV3
    • Api域名
    • CapSolver JSON:
      • 检测到CAPTCHA参数后,CapSolver将返回一个JSON,详细说明如何将其参数提交到其服务。

如果CAPTCHA确实是reCAPTCHA v2 Enterprise,则isEnterprise参数将显示相应的指示器,确认其类型。

代码示例:

Python示例

python 复制代码
# pip install requests
import requests
import time

# 配置
api_key = "YOUR_API_KEY"  # 替换为您的CapSolver API密钥
site_key = ""  # 替换为目标站点的站点密钥
site_url = ""  # 替换为目标站点的页面URL

def capsolver():
    payload = {
        "clientKey": api_key,
        "task": {
            "type": 'ReCaptchaV2EnterpriseTaskProxyLess',
            "websiteKey": site_key,
            "websiteURL": site_url
        }
    }

    # 创建任务
    response = requests.post("https://api.capsolver.com/createTask", json=payload)
    response_data = response.json()
    task_id = response_data.get("taskId")

    if not task_id:
        print(f"创建任务失败:{response.text}")
        return

    print(f"任务创建成功。任务ID:{task_id}。正在检索结果...")

    # 轮询任务结果
    while True:
        time.sleep(3)  # 请求之间的延迟
        result_payload = {"clientKey": api_key, "taskId": task_id}
        result_response = requests.post("https://api.capsolver.com/getTaskResult", json=result_payload)
        result_data = result_response.json()
        status = result_data.get("status")

        if status == "ready":
            return result_data.get("solution", {}).get('gRecaptchaResponse')
        elif status == "failed" or result_data.get("errorId"):
            print(f"解决失败!响应:{result_response.text}")
            return

token = capsolver()
if token:
    print(f"CAPTCHA解决成功。令牌:{token}")

Golang示例

golang 复制代码
package main

import (
    "bytes"
    "context"
    "encoding/json"
    "errors"
    "fmt"
    "io"
    "net/http"
    "time"
)

// capSolverResponse 代表 CapSolver API 的响应结构
type capSolverResponse struct {
    ErrorId          int32          `json:"errorId"`
    ErrorCode        string         `json:"errorCode"`
    ErrorDescription string         `json:"errorDescription"`
    TaskId           string         `json:"taskId"`
    Status           string         `json:"status"`
    Solution         map[string]any `json:"solution"`
}

// capSolver 处理与 CapSolver API 的通信以解决 CAPTCHA
func capSolver(ctx context.Context, apiKey string, taskData map[string]any) (*capSolverResponse, error) {
    createTaskURL := "https://api.capsolver.com/createTask"
    response, err := request(ctx, createTaskURL, map[string]any{
        "clientKey": apiKey,
        "task":      taskData,
    })

    if err != nil {
        return nil, err
    }
    if response.ErrorId != 0 {
        return nil, errors.New(response.ErrorDescription)
    }

    resultURL := "https://api.capsolver.com/getTaskResult"
    for {
        select {
        case <-ctx.Done():
            return response, errors.New("solve timeout")
        case <-time.After(time.Second):
            result, err := request(ctx, resultURL, map[string]any{
                "clientKey": apiKey,
                "taskId":    response.TaskId,
            })

            if err != nil {
                return nil, err
            }
            if result.ErrorId != 0 {
                return nil, errors.New(result.ErrorDescription)
            }
            if result.Status == "ready" {
                return result, nil
            }
        }
    }
}

// request 处理对 CapSolver API 的 HTTP POST 请求
func request(ctx context.Context, url string, payload interface{}) (*capSolverResponse, error) {
    payloadBytes, err := json.Marshal(payload)
    if err != nil {
        return nil, err
    }

    req, err := http.NewRequestWithContext(ctx, "POST", url, bytes.NewReader(payloadBytes))
    if err != nil {
        return nil, err
    }

    req.Header.Set("Content-Type", "application/json")
    client := &http.Client{}
    resp, err := client.Do(req)
    if err != nil {
        return nil, err
    }
    defer resp.Body.Close()

    responseData, err := io.ReadAll(resp.Body)
    if err != nil {
        return nil, err
    }

    var capResponse capSolverResponse
    if err := json.Unmarshal(responseData, &capResponse); err != nil {
        return nil, err
    }

    return &capResponse, nil
}

func main() {
    apiKey := "YOUR_API_KEY"
    ctx, cancel := context.WithTimeout(context.Background(), 2*time.Minute)
    defer cancel()

    result, err := capSolver(ctx, apiKey, map[string]any{
        "type":       "ReCaptchaV2EnterpriseTaskProxyLess",
        "websiteURL": "", // 替换为目标网站 URL
        "websiteKey": "", // 替换为目标站点密钥
    })

    if err != nil {
        panic(err)
    }

    fmt.Printf("CAPTCHA 解决成功。令牌:%v\n", result.Solution["gRecaptchaResponse"])
}

有关代码和所需参数的详细说明,请参阅官方CapSolver文档:

CapSolver reCAPTCHA v2指南

本资源提供了关于配置和使用CapSolver以有效解决reCAPTCHA v2 Enterprise挑战的全面指导。它包括关于参数要求、任务类型和高级使用技术的深入信息,以确保获得最佳结果。

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

更多