CAPSOLVER
博客
无限验证码破解,使用最佳验证码破解工具

用最佳验证码破解器解决无限验证码

Logo of CapSolver

Emma Foster

Machine Learning Engineer

20-Jan-2026

简介

CAPTCHA(全自动公共图灵测试,用于区分计算机和人类)是一种安全机制,旨在区分人类用户和自动化机器人。它通常会提出图像识别、文本扭曲或交互式谜题等挑战,这些对人类来说很容易,但对机器人来说却很困难。虽然CAPTCHA可以保护网站免受自动化滥用,但它可能成为合法自动化和网络爬虫活动的重大障碍。

在本文中,我们将探讨如何使用Playwright和CapSolver扩展程序来解决CAPTCHA。此外,我们还将研究如何使用CapSolver API通过Python和Go来解决reCAPTCHA。

什么是CAPTCHA?

CAPTCHA是网站用来防止自动化访问并确保用户为人类的安全机制。常见的类型包括:

  • 图像识别:用户需要选择与特定描述匹配的图片。
  • 文本扭曲:用户输入屏幕上显示的扭曲文本。
  • 交互式挑战:用户完成拖动滑块或解决谜题等任务。

CapSolver:您的CAPTCHA挑战解决方案

CapSolver是一个强大的工具,可自动解决各种类型的CAPTCHA,包括CAPTCHA和reCAPTCHA。它提供浏览器扩展和API,可无缝集成到您的网页自动化工作流中。

领取您的CapSolver优惠码

立即提升您的自动化预算!
在充值CapSolver账户时使用优惠码 CAPN,每次充值可获得额外 5% 的奖励 —— 无限制。
立即在您的 CapSolver仪表板 中领取

安装Playwright和所需组件

首先,您需要安装Playwright。您可以通过npm进行安装:

bash 复制代码
npm install playwright

配置CapSolver扩展程序

  1. 此处下载Capsolver扩展程序。
  2. 将其解压到项目根目录下的 ./CapSolver.Browser.Extension 文件夹中。
  3. 调整 ./assets/config.json 中的配置设置。确保 enabledForcaptcha 设置为 true,并将 captchaMode 设置为 token 以实现自动求解。

示例配置更改:

json 复制代码
{
  "enabledForcaptcha": true,
  "captchaMode": "token"
}

使用CapSolver扩展程序设置Playwright解决CAPTCHA

以下是一个使用Playwright通过CapSolver扩展程序解决CAPTCHA的示例脚本:

javascript 复制代码
const { chromium } = require('playwright');
const path = require('path');

(async () => {
  const extensionPath = path.join(__dirname, 'CapSolver.Browser.Extension');

  const browser = await chromium.launchPersistentContext('', {
    headless: false,
    args: [
      `--disable-extensions-except=${extensionPath}`,
      `--load-extension=${extensionPath}`
    ]
  });

  const page = await browser.newPage();
  await page.goto('https://site.example');

  // 定位CAPTCHA复选框或框架并相应地进行交互
  await page.waitForSelector('selector-for-captcha', { state: 'visible' });
  await page.click('selector-for-captcha');

  // 根据您的需求添加其他步骤
  // ...

  await browser.close();
})();

使用CapSolver API解决reCAPTCHA

对于reCAPTCHA,您可以使用CapSolver API。以下是Python和Go的示例。

Python示例

python 复制代码
import requests
import time

api_key = "YOUR_API_KEY"
site_key = "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-"
site_url = "https://www.google.com/recaptcha/api2/demo"

def capsolver():
    payload = {
        "clientKey": api_key,
        "task": {
            "type": 'ReCaptchaV2TaskProxyLess',
            "websiteKey": site_key,
            "websiteURL": site_url
        }
    }
    res = requests.post("https://api.capsolver.com/createTask", json=payload)
    resp = res.json()
    task_id = resp.get("taskId")
    if not task_id:
        print("创建任务失败:", res.text)
        return
    print(f"获取到taskId: {task_id} / 获取结果...")

    while True:
        time.sleep(3)
        payload = {"clientKey": api_key, "taskId": task_id}
        res = requests.post("https://api.capsolver.com/getTaskResult", json=payload)
        resp = res.json()
        status = resp.get("status")
        if status == "ready":
            return resp.get("solution", {}).get('gRecaptchaResponse')
        if status == "failed" or resp.get("errorId"):
            print("求解失败!response:", res.text)
            return

token = capsolver()
print(token)

Go示例

go 复制代码
package main

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

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"`
}

func capSolver(ctx context.Context, apiKey string, taskData map[string]any) (*capSolverResponse, error) {
	uri := "https://api.capsolver.com/createTask"
	res, err := request(ctx, uri, map[string]any{
		"clientKey": apiKey,
		"task":      taskData,
	})
	if err != nil {
		return nil, err
	}
	if res.ErrorId == 1 {
		return nil, errors.New(res.ErrorDescription)
	}

	uri = "https://api.capsolver.com/getTaskResult"
	for {
		select {
		case <-ctx.Done():
			return res, errors.New("solve timeout")
		case <-time.After(time.Second):
			break
		}
		res, err = request(ctx, uri, map[string]any{
			"clientKey": apiKey,
			"taskId":    res.TaskId,
		})
		if err != nil {
			return nil, err
		}
		if res.ErrorId == 1 {
			return nil, errors.New(res.ErrorDescription)
		}
		if res.Status == "ready" {
			return res, err
		}
	}
}

func request(ctx context.Context, uri string, payload interface{}) (*capSolverResponse, error) {
	payloadBytes, err := json.Marshal(payload)
	if err != nil {
		return nil, err
	}
	req, err := http.NewRequestWithContext(ctx, "POST", uri, 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
	}
	capResponse := &capSolverResponse{}
	err = json.Unmarshal(responseData, capResponse)
	if err != nil {
		return nil, err
	}
	return capResponse, nil
}

func main() {
	apikey := "YOUR_API_KEY"
	ctx, cancel := context.WithTimeout(context.Background(), time.Second*120)
	defer cancel()

	res, err := capSolver(ctx, apikey, map[string]any{
		"type":       "ReCaptchaV2TaskProxyLess",
		"websiteURL": "https://www.google.com/recaptcha/api2/demo",
		"websiteKey": "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-",
	})
	if err != nil {
		panic(err)
	}
	fmt.Println(res.Solution["gRecaptchaResponse"])
}

结论

使用Playwright和CapSolver等工具,您可以自动化解决CAPTCHA,使网络爬虫和自动化任务更加高效。无论您处理的是CAPTCHA还是reCAPTCHA,这里列出的方法都能提供稳健的解决方案来克服这些挑战。

常见问题(FAQ)

1. 使用CapSolver编程解决CAPTCHA是否合法?

解决CAPTCHA的合法性取决于网站的服务条款、适用的地方法律以及自动化使用的具体方式。CapSolver本身是一个中立工具,旨在用于合法的使用场景,例如测试、QA自动化、无障碍访问和授权的数据收集。在部署任何CAPTCHA求解解决方案之前,您应确保已获得目标网站的许可,并确保您的使用符合相关法规。

2. CapSolver支持哪些类型的CAPTCHA?

CapSolver支持广泛的现代CAPTCHA系统,包括但不限于:

支持通过浏览器扩展(用于Playwright、Puppeteer等)和基于API的解决方案实现后端自动化。

3. 何时应该使用Playwright扩展程序而不是CapSolver API?

当以下情况发生时,请使用CapSolver浏览器扩展程序

  • 您正在使用Playwright自动化真实浏览器交互
  • CAPTCHA是复杂用户流程的一部分
  • 您希望最小化集成工作量

当以下情况发生时,请使用CapSolver API

  • 您需要在服务器端解决reCAPTCHA令牌
  • 您需要与语言无关的集成(Python、Go、Java等)
  • 您正在运行大规模或无头自动化

在许多生产环境中,团队会根据具体情况结合使用这两种方法。

4. CapSolver解决reCAPTCHA的可靠性与速度如何?

CapSolver经过优化,具有高成功率和低延迟。在大多数情况下,reCAPTCHA v2挑战可在几秒钟内解决,具体取决于网络状况和任务复杂性。对于大规模自动化,CapSolver还支持并发和稳定的吞吐量,使其适用于企业级爬虫和测试工作流程。

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

更多