CAPSOLVER
博客
如何将Helium与CapSolver集成以实现无缝验证码解决

如何将Helium与CapSolver集成以实现无缝的验证码解决

Logo of CapSolver

Ethan Collins

Pattern Recognition Specialist

30-Dec-2025

将 Helium 与 CapSolver 集成

1. 简介

网页自动化需要既强大又易于使用的工具。然而,现代网站部署了复杂的反机器人措施和验证码,这可能会阻止自动化脚本的运行。

HeliumCapSolver 的结合提供了一个优雅的解决方案:

  • Helium:一个轻量级的 Python 库,通过简单易读的 API 使 Selenium 更容易使用
  • CapSolver:一个基于人工智能的验证码解决服务,可处理 Cloudflare Turnstile、reCAPTCHA 等

这些工具共同实现了自动处理验证码的无缝网页自动化。

1.1. 集成目标

本指南将帮助您实现三个核心目标:

  1. 简化浏览器自动化 - 使用 Helium 的直观 API 编写简洁、易读的代码
  2. 自动解决验证码 - 集成 CapSolver 的 API 在无需人工干预的情况下处理验证码挑战
  3. 保持灵活性 - 在需要时访问 Selenium 的全部功能,同时保持代码简单

2. 什么是 Helium?

Helium 是一个 Python 库,使 Selenium 的使用变得简单得多。它提供了一个高级 API,允许您用自然语言编写浏览器自动化。

2.1. 核心功能

  • 简单语法 - 使用 click("Submit") 而不是复杂的 XPath 选择器
  • 自动等待 - 自动等待元素出现
  • 可读性强 - 代码读起来像指令:write("Hello", into="Search")
  • 与 Selenium 兼容 - 在需要时访问底层的 Selenium 驱动
  • 轻量级 - 对 Selenium 的开销最小

2.2. 安装

bash 复制代码
# 安装 Helium
pip install helium

# 安装 requests 库用于 CapSolver API
pip install requests

2.3. 基本用法

python 复制代码
from helium import *

# 启动浏览器并导航
start_chrome("https://wikipedia.org")

# 在搜索框中输入
write("Python programming", into=S("input[name='search']"))

# 点击搜索按钮
click(Button("Search"))

# 检查文本是否存在
if Text("Python").exists():
    print("找到 Python 文章!")

# 关闭浏览器
kill_browser()

3. 什么是 CapSolver?

CapSolver 是一个基于人工智能的自动验证码解决服务,支持多种验证码类型。它提供了一个简单的 API,允许您提交验证码挑战并在几秒钟内收到解决方案。

3.1. 支持的验证码类型

  • Cloudflare Turnstile - 最常见的现代反机器人挑战
  • reCAPTCHA v2 - 基于图像和不可见变体
  • reCAPTCHA v3 - 基于评分的验证
  • AWS WAF - 亚马逊网络服务验证码
  • DataDome - 企业级机器人保护
  • 以及更多...

3.2. 开始使用 CapSolver

  1. capsolver.com 注册
  2. 向账户充值
  3. 从仪表板获取 API 密钥

优惠:注册时使用代码 HELIUM 可获得额外积分!

3.3. API 端点

  • 服务器 A: https://api.capsolver.com
  • 服务器 B: https://api-stable.capsolver.com

4. 集成前的挑战

在将 Helium 与 CapSolver 结合之前,网页自动化面临以下挑战:

挑战 影响
验证码挑战 需要手动解决,中断自动化
复杂的选择器 Selenium 需要冗长的 XPath/CSS 选择器
时间问题 元素未就绪时访问
代码可读性 自动化脚本难以维护

Helium + CapSolver 集成通过简洁易读的代码解决了这些挑战。

5. 集成方法

5.1. API 集成(推荐)

API 集成方法为您提供对验证码解决过程的完全控制,并且适用于任何验证码类型。

5.1.1. 设置要求

bash 复制代码
pip install helium requests

5.1.2. 核心集成模式

python 复制代码
import time
import requests
from helium import *

CAPSOLVER_API_KEY = "YOUR_API_KEY"
CAPSOLVER_API = "https://api.capsolver.com"


def create_task(task_payload: dict) -> str:
    """创建验证码解决任务并返回任务 ID。"""
    response = requests.post(
        f"{CAPSOLVER_API}/createTask",
        json={
            "clientKey": CAPSOLVER_API_KEY,
            "task": task_payload
        }
    )
    result = response.json()
    if result.get("errorId") != 0:
        raise Exception(f"CapSolver 错误: {result.get('errorDescription')}")
    return result["taskId"]


def get_task_result(task_id: str, max_attempts: int = 120) -> dict:
    """轮询任务结果直到解决或超时。"""
    for _ in range(max_attempts):
        response = requests.post(
            f"{CAPSOLVER_API}/getTaskResult",
            json={
                "clientKey": CAPSOLVER_API_KEY,
                "taskId": task_id
            }
        )
        result = response.json()

        if result.get("status") == "ready":
            return result["solution"]
        elif result.get("status") == "failed":
            raise Exception(f"任务失败: {result.get('errorDescription')}")

        time.sleep(1)

    raise TimeoutError("验证码解决超时")


def solve_captcha(task_payload: dict) -> dict:
    """完成验证码解决工作流。"""
    task_id = create_task(task_payload)
    return get_task_result(task_id)

5.2. 浏览器扩展

您也可以使用 CapSolver 浏览器扩展与 Helium 配合使用,实现自动验证码检测和解决。

5.2.1. 安装步骤

  1. capsolver.com/en/extension 下载 CapSolver 扩展
  2. 提取扩展文件
  3. 在扩展的 config.js 文件中配置您的 API 密钥:
javascript 复制代码
// 在扩展文件夹中,编辑: assets/config.js
var defined = {
    apiKey: "YOUR_CAPSOLVER_API_KEY",  // 替换为您的实际 API 密钥
    enabledForBlacklistControl: false,
    blackUrlList: [],
    enabledForRecaptcha: true,
    enabledForRecaptchaV3: true,
    enabledForTurnstile: true,
    // ...其他设置
}
  1. 通过 Helium 加载到 Chrome:
python 复制代码
from helium import *
from selenium.webdriver import ChromeOptions

options = ChromeOptions()
options.add_argument('--load-extension=/path/to/capsolver-extension')

start_chrome(options=options)
# 扩展会自动检测并解决验证码

注意: 扩展必须在配置有效 API 密钥后才能自动解决验证码。

6. 代码示例

6.1. 解决 reCAPTCHA v2

此示例在 Google 的演示页面上解决 reCAPTCHA v2,并自动检测站点密钥:

python 复制代码
import time
import requests
from helium import *
from selenium.webdriver import ChromeOptions

CAPSOLVER_API_KEY = "YOUR_API_KEY"
CAPSOLVER_API = "https://api.capsolver.com"


def solve_recaptcha_v2(site_key: str, page_url: str) -> str:
    """解决 reCAPTCHA v2 并返回令牌。"""
    # 创建任务
    response = requests.post(
        f"{CAPSOLVER_API}/createTask",
        json={
            "clientKey": CAPSOLVER_API_KEY,
            "task": {
                "type": "ReCaptchaV2TaskProxyLess",
                "websiteURL": page_url,
                "websiteKey": site_key,
            }
        }
    )
    result = response.json()

    if result.get("errorId") != 0:
        raise Exception(f"错误: {result.get('errorDescription')}")

    task_id = result["taskId"]
    print(f"任务创建: {task_id}")

    # 轮询结果
    while True:
        result = requests.post(
            f"{CAPSOLVER_API}/getTaskResult",
            json={
                "clientKey": CAPSOLVER_API_KEY,
                "taskId": task_id
            }
        ).json()

        if result.get("status") == "ready":
            return result["solution"]["gRecaptchaResponse"]
        elif result.get("status") == "failed":
            raise Exception(f"失败: {result.get('errorDescription')}")

        print("  等待解决方案...")
        time.sleep(1)


def main():
    target_url = "https://www.google.com/recaptcha/api2/demo"

    # 配置浏览器反检测
    options = ChromeOptions()
    options.add_experimental_option('excludeSwitches', ['enable-automation'])
    options.add_experimental_option('useAutomationExtension', False)
    options.add_argument('--disable-blink-features=AutomationControlled')

    print("启动浏览器...")
    start_chrome(target_url, options=options)
    driver = get_driver()

    try:
        time.sleep(2)

        # 从页面自动检测站点密钥
        recaptcha_element = driver.find_element("css selector", ".g-recaptcha")
        site_key = recaptcha_element.get_attribute("data-sitekey")
        print(f"检测到站点密钥: {site_key}")

        # 解决验证码
        print("\n使用 CapSolver 解决 reCAPTCHA v2...")
        token = solve_recaptcha_v2(site_key, target_url)
        print(f"获取到令牌: {token[:50]}...")

        # 注入令牌
        print("\n注入令牌...")
        driver.execute_script(f'''
            var responseField = document.getElementById('g-recaptcha-response');
            responseField.style.display = 'block';
            responseField.value = '{token}';
        ''')
        print("令牌注入成功!")

        # 使用 Helium 的简单语法提交表单
        print("\n提交表单...")
        click("Submit")

        time.sleep(3)

        # 检查是否成功
        if "Verification Success" in driver.page_source:
            print("\n=== 成功!===")
            print("reCAPTCHA 已解决并提交了表单!")

    finally:
        kill_browser()


if __name__ == "__main__":
    main()

亲自测试一下:

bash 复制代码
python demo_recaptcha_v2.py

6.2. 解决 Cloudflare Turnstile

Cloudflare Turnstile 是最常见的验证码挑战之一。以下是解决方法:

python 复制代码
import time
import requests
from helium import *
from selenium.webdriver import ChromeOptions

CAPSOLVER_API_KEY = "YOUR_API_KEY"
CAPSOLVER_API = "https://api.capsolver.com"


def solve_turnstile(site_key: str, page_url: str) -> str:
    """解决 Cloudflare Turnstile 并返回令牌。"""
    response = requests.post(
        f"{CAPSOLVER_API}/createTask",
        json={
            "clientKey": CAPSOLVER_API_KEY,
            "task": {
                "type": "AntiTurnstileTaskProxyLess",
                "websiteURL": page_url,
                "websiteKey": site_key,
            }
        }
    )
    result = response.json()

    if result.get("errorId") != 0:
        raise Exception(f"错误: {result.get('errorDescription')}")

    task_id = result["taskId"]

    while True:
        result = requests.post(
            f"{CAPSOLVER_API}/getTaskResult",
            json={
                "clientKey": CAPSOLVER_API_KEY,
                "taskId": task_id
            }
        ).json()

        if result.get("status") == "ready":
            return result["solution"]["token"]
        elif result.get("status") == "failed":
            raise Exception(f"失败: {result.get('errorDescription')}")

        time.sleep(1)


def main():
    target_url = "https://your-target-site.com"
    turnstile_site_key = "0x4XXXXXXXXXXXXXXXXX"  # 在页面源代码中查找

    # 配置浏览器
    options = ChromeOptions()
    options.add_argument('--disable-blink-features=AutomationControlled')

    start_chrome(target_url, options=options)
    driver = get_driver()

    try:
        # 等待 Turnstile 加载
        time.sleep(3)

        # 解决验证码
        print("解决 Turnstile...")
        token = solve_turnstile(turnstile_site_key, target_url)
        print(f"获取到令牌: {token[:50]}...")

        # 注入令牌
        driver.execute_script(f'''
            document.querySelector('input[name="cf-turnstile-response"]').value = "{token}";

            // 如果存在回调函数则触发
            const callback = document.querySelector('[data-callback]');
            if (callback) {{
                const callbackName = callback.getAttribute('data-callback');
                if (window[callbackName]) {{
                    window[callbackName]('{token}');
                }}
            }}
        ''')

        # 使用 Helium 提交表单
        if Button("Submit").exists():
            click("Submit")

        print("Turnstile 已绕过!")

    finally:
        kill_browser()


if __name__ == "__main__":
    main()

6.3. 解决 reCAPTCHA v3

reCAPTCHA v3 是基于评分的,不需要用户交互:

python 复制代码
import time
import requests
from helium import *
from selenium.webdriver import ChromeOptions

CAPSOLVER_API_KEY = "YOUR_API_KEY"
CAPSOLVER_API = "https://api.capsolver.com"


def solve_recaptcha_v3(
    site_key: str,
    page_url: str,
    action: str = "verify",
    min_score: float = 0.7
) -> str:
    """使用指定操作和最低分数解决 reCAPTCHA v3。"""
    response = requests.post(
        f"{CAPSOLVER_API}/createTask",
        json={
            "clientKey": CAPSOLVER_API_KEY,
            "task": {
                "type": "ReCaptchaV3TaskProxyLess",
                "websiteURL": page_url,
                "websiteKey": site_key,
                "pageAction": action,
                "minScore": min_score
            }
        }
    )
    result = response.json()

    if result.get("errorId") != 0:
        raise Exception(f"错误: {result.get('errorDescription')}")

    task_id = result["taskId"]

    while True:
        result = requests.post(
            f"{CAPSOLVER_API}/getTaskResult",
            json={
                "clientKey": CAPSOLVER_API_KEY,
                "taskId": task_id
            }
        ).json()

        if result.get("status") == "ready":
            return result["solution"]["gRecaptchaResponse"]
        elif result.get("status") == "failed":
            raise Exception(f"失败: {result.get('errorDescription')}")

        time.sleep(1)


def main():
    target_url = "https://your-target-site.com"
    recaptcha_v3_key = "6LcXXXXXXXXXXXXXXXXXXXXXXXXX"

    # 设置无头浏览器用于 v3
    options = ChromeOptions()
    options.add_argument('--headless')

    start_chrome(target_url, options=options)
    driver = get_driver()

    try:
        # 使用 "login" 操作解决 reCAPTCHA v3
        print("解决 reCAPTCHA v3...")
        token = solve_recaptcha_v3(
            recaptcha_v3_key,
            target_url,
            action="login",
            min_score=0.9
        )

        # 注入令牌
        driver.execute_script(f'''
            var responseField = document.querySelector('[name="g-recaptcha-response"]');
            if (responseField) {{
responseField.value = '{token}';
            }}
            // 如果存在回调函数则调用
            if (typeof onRecaptchaSuccess === 'function') {{
                onRecaptchaSuccess('{token}');
            }}
        ''')

        print("已绕过reCAPTCHA v3!")

    finally:
        kill_browser()


if __name__ == "__main__":
    main()

7. 最佳实践

7.1. 浏览器配置

配置Chrome使其更像普通浏览器:

python 复制代码
from helium import *
from selenium.webdriver import ChromeOptions

options = ChromeOptions()
options.add_experimental_option('excludeSwitches', ['enable-automation'])
options.add_experimental_option('useAutomationExtension', False)
options.add_argument('--disable-blink-features=AutomationControlled')
options.add_argument('--window-size=1920,1080')

start_chrome(options=options)

7.2. 结合Helium与Selenium

使用Helium的简洁语法进行大部分操作,需要时访问Selenium:

python 复制代码
from helium import *

start_chrome("https://target-site.com")

# 使用Helium进行简单交互
write("username", into="Email")
write("password", into="Password")

# 访问Selenium驱动进行复杂操作
driver = get_driver()
driver.execute_script("window.scrollTo(0, document.body.scrollHeight)")

# 返回Helium
click("Login")

7.3. 速率限制

通过添加随机延迟避免触发速率限制:

python 复制代码
import random
import time

def human_delay(min_sec=1.0, max_sec=3.0):
    """随机延迟以模拟人类行为。"""
    time.sleep(random.uniform(min_sec, max_sec))

# 在操作之间使用
click("Next")
human_delay()
write("data", into="Input")

7.4. 错误处理

始终为CAPTCHA解决实现适当的错误处理:

python 复制代码
def solve_with_retry(task_payload: dict, max_retries: int = 3) -> dict:
    """带重试逻辑的CAPTCHA解决方法。"""
    for attempt in range(max_retries):
        try:
            return solve_captcha(task_payload)
        except TimeoutError:
            if attempt < max_retries - 1:
                print(f"超时,重试... ({attempt + 1}/{max_retries})")
                time.sleep(5)
            else:
                raise
        except Exception as e:
            if "balance" in str(e).lower():
                raise  # 不重试余额错误
            if attempt < max_retries - 1:
                time.sleep(2)
            else:
                raise

7.5. 无头模式

使用无头模式进行后台自动化:

python 复制代码
from helium import *
from selenium.webdriver import ChromeOptions

options = ChromeOptions()
options.add_argument('--headless')
options.add_argument('--disable-gpu')

start_chrome("https://target-site.com", options=options)

8. Helium与Selenium:快速对比

操作 Selenium Helium
点击按钮 driver.find_element(By.XPATH, "//button[text()='Submit']").click() click("Submit")
输入文本 driver.find_element(By.NAME, "email").send_keys("[email protected]") write("[email protected]", into="Email")
按下回车 element.send_keys(Keys.ENTER) press(ENTER)
检查文本是否存在 "Welcome" in driver.page_source Text("Welcome").exists()

9. 结论

HeliumCapSolver的集成创建了一个优雅的网页自动化工具包:

  • Helium 为浏览器自动化提供简洁易读的API
  • CapSolver 通过AI驱动的解决方案处理CAPTCHA
  • 两者结合 可实现代码量最小化的无缝自动化

无论您是构建网络爬虫、自动化测试系统还是数据收集管道,这种组合都能提供简洁与强大的功能。

附加提示:CapSolver注册时使用代码 HELIUM 可获得额外积分!

10. 常见问题

10.1. 为什么选择Helium而不是纯Selenium?

Helium使Selenium更易于使用:

  • 更简洁、可读性更强的语法
  • 自动等待元素
  • 代码更简洁
  • 需要时仍可访问完整的Selenium功能
  • 开发时间更短

10.2. 哪些CAPTCHA类型与这种集成效果最好?

CapSolver支持所有主要的CAPTCHA类型。Cloudflare Turnstile和reCAPTCHA v2/v3的成功率最高。这种集成可以与CapSolver支持的任何CAPTCHA无缝配合。

10.3. 我可以使用无头模式吗?

可以!Helium通过ChromeOptions支持无头模式。对于reCAPTCHA v3和基于令牌的CAPTCHA,无头模式可以完美运行。对于v2可见式CAPTCHA,使用有头模式可能效果更好。

10.4. 如何找到CAPTCHA的站点密钥?

在页面源代码中查找:

  • Turnstile: data-sitekey属性或cf-turnstile元素
  • reCAPTCHA: g-recaptcha div上的data-sitekey属性

10.5. 如果CAPTCHA解决失败怎么办?

常见解决方案:

  1. 验证您的API密钥和余额
  2. 确保站点密钥正确
  3. 检查页面URL是否与CAPTCHA出现的页面匹配
  4. 对于v3,尝试调整action参数和最小分数
  5. 实现带延迟的重试逻辑

10.6. 我还能使用Selenium功能吗?

可以!调用get_driver()以访问底层的Selenium WebDriver执行任何Helium未直接覆盖的操作。

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

更多

将Helium与CapSolver集成
如何将Helium与CapSolver集成以实现无缝的验证码解决

使用 Helium 和 CapSolver 自动化浏览器并使用 Python 和 Selenium 解决 Cloudflare Turnstile, reCAPTCHA v2/v3。

reCAPTCHA
Logo of CapSolver

Ethan Collins

30-Dec-2025

如何使用Puppeteer和Capsolver扩展解决reCaptcha v2
如何使用Puppeteer [JavaScript] 通过Capsolver扩展解决reCaptcha v2

学习如何使用 Puppeteer 和 Capsolver 扩展无缝解决 reCaptcha v2,详细指南介绍如何有效设置和自动化验证码解决方案。

reCAPTCHA
Logo of CapSolver

Aloísio Vítor

29-Dec-2025

如何识别各种 reCAPTCHA 类型
如何识别各种 reCAPTCHA 类型

探索 reCAPTCHA 的世界:学习识别其类型,从原始版本到企业版,并理解它们对网络安全性及用户体验的影响。

reCAPTCHA
Logo of CapSolver

Emma Foster

26-Dec-2025

解决reCaptcha v2
使用 CapSolver API 解决 reCaptcha v2

通过此分步指南,使用CapSolver API轻松解决reCaptcha V2,提供Python和GO解决方案。非常适合寻求快速有效验证码解决方法的用户

reCAPTCHA
Logo of CapSolver

Nikolai Smirnov

25-Dec-2025

如何使用 Node.JS 解决 reCaptcha v2
如何使用 Node.JS 解决 reCaptcha v2

学习如何使用Node.js通过CapSolver解决reCAPTCHA v2。包括无代理和基于代理的示例、设置步骤以及最佳实践。

reCAPTCHA
Logo of CapSolver

Anh Tuan

17-Dec-2025

验证码 v2
如何正确输入验证码以及如何识别reCAPTCHA v2的站点密钥

识别ReCAPTCHA v2的站点密钥是处理现代CAPTCHA实现时常见的挑战。本文解释了为什么站点密钥很重要,为什么手动定位通常很困难,以及CAPTCHA识别服务如何简化这一过程。它还介绍了CapSolver的Chrome扩展程序,该程序可自动检测ReCAPTCHA v2参数并返回结构化结果,帮助用户更高效地处理启用CAPTCHA的网站。

reCAPTCHA
Logo of CapSolver

Sora Fujimoto

16-Dec-2025