如何在EasySpider中通过CapSolver集成解决验证码

Emma Foster
Machine Learning Engineer
04-Feb-2026

EasySpider 是一个功能强大的可视化网络爬虫工具,允许任何人通过无需编写代码的设计和执行浏览器自动化任务。其直观的流程图界面使其对非程序员易于使用,同时为开发人员提供高级功能。
CapSolver 通过提供无缝的验证码解决功能,完善了 EasySpider 的自动化体验。虽然 EasySpider 支持多种验证码识别方案,但集成 CapSolver 的人工智能解决方案可以确保可靠、快速地绕过 reCAPTCHA、Cloudflare Turnstile 和其他验证码挑战。
什么是 EasySpider?
EasySpider 是一个免费、开源的可视化网络爬虫和浏览器自动化工具。与需要编程知识的传统爬虫库不同,EasySpider 让您通过点击网页元素来设计任务。
核心理念
EasySpider 基于三个基本原则运行:
- 可视化优先设计:通过直观的流程图界面创建复杂的自动化工作流
- 无代码访问:无论是否有编程经验,都可以像使用 Excel 一样设计任务
- 完全可扩展性:在需要时执行自定义 JavaScript、Python 代码和 Selenium 语句
EasySpider 的主要功能
- 可视化任务设计器:通过点击操作创建自动化工作流
- 跨平台:支持 Windows、macOS 和 Linux
- 无头模式:在没有可见浏览器窗口的情况下运行任务
- 自定义代码执行:在工作流中执行 JavaScript 和 Python 代码
- Selenium 集成:使用 Selenium 语句直接操作浏览器
- API 调用:调用外部系统和服务
- 命令行执行:通过 CLI 以编程方式运行任务
- 定时任务:自动化重复的数据收集
工作流功能
| 功能 | 描述 |
|---|---|
| 无限循环嵌套 | 处理复杂的分页和多级数据提取 |
| 条件分支 | 根据页面内容创建决策点 |
| 中断语句 | 在流程图中的任何位置退出循环 |
| 正则表达式 | 使用模式匹配提取数据 |
| OCR 识别 | 从图像和截图中提取文本 |
| 代理支持 | 旋转 IP 地址和隧道连接 |
什么是 CapSolver?
CapSolver 是一个领先的验证码解决服务,提供人工智能驱动的解决方案来绕过各种验证码挑战。支持多种验证码类型和闪电般的响应时间,CapSolver 可无缝集成到自动化工作流中。
支持的验证码类型
- reCAPTCHA v2 (基于图像和隐形)
- reCAPTCHA v3 & v3 企业版
- Cloudflare Turnstile
- Cloudflare 5 秒挑战
- AWS WAF 验证码
- 其他广泛使用的验证码和反机器人机制
为什么将 CapSolver 与 EasySpider 集成?
虽然 EasySpider 提供了内置的验证码支持,但集成 CapSolver 有显著优势:
- 更高的成功率:CapSolver 的人工智能解决方案实现一致的高成功率
- 更快的解决速度:优化的基础设施快速交付令牌
- 更广的覆盖范围:支持所有主要验证码类型
- 可靠性:企业级服务,具有出色的正常运行时间
- 可扩展性:处理高容量自动化而不会出现瓶颈
安装
安装 EasySpider
- 从 GitHub 发布页面 下载最新版本
- 选择适合您平台的版本:
EasySpider_windows_x64.zip用于 64 位 WindowsEasySpider_windows_x86.zip用于 32 位 WindowsEasySpider_MacOS.dmg用于 macOSEasySpider_Linux_x64.tar.gz用于 Linux
- 解压存档并运行
EasySpider.exe(Windows)或相应的可执行文件
注意:确保端口 8084 可用于进程间通信。
自定义集成的 Python 依赖项
如果您计划使用 CapSolver 辅助脚本:
bash
pip install requests
为 EasySpider 创建 CapSolver 工具
以下是一个专为 Python 工作流设计的可重用 CapSolver 工具类:
基本 CapSolver 服务
python
import requests
import time
from typing import Optional
from dataclasses import dataclass
CAPSOLVER_API_KEY = 'YOUR_CAPSOLVER_API_KEY'
@dataclass
class TaskResult:
status: str
solution: Optional[dict] = None
error_description: Optional[str] = None
class CapSolverService:
def __init__(self, api_key: str = CAPSOLVER_API_KEY):
self.api_key = api_key
self.base_url = 'https://api.capsolver.com'
def create_task(self, task_data: dict) -> str:
response = requests.post(
f'{self.base_url}/createTask',
json={
'clientKey': self.api_key,
'task': task_data
}
)
data = response.json()
if data.get('errorId', 0) != 0:
raise Exception(f"CapSolver 错误: {data.get('errorDescription')}")
return data['taskId']
def get_task_result(self, task_id: str, max_attempts: int = 60) -> TaskResult:
for _ in range(max_attempts):
time.sleep(2)
response = requests.post(
f'{self.base_url}/getTaskResult',
json={
'clientKey': self.api_key,
'taskId': task_id
}
)
data = response.json()
if data.get('status') == 'ready':
return TaskResult(
status='ready',
solution=data.get('solution')
)
if data.get('status') == 'failed':
raise Exception(f"任务失败: {data.get('errorDescription')}")
raise Exception('等待验证码解决方案超时')
def solve_recaptcha_v2(self, website_url: str, website_key: str) -> str:
task_id = self.create_task({
'type': 'ReCaptchaV2TaskProxyLess',
'websiteURL': website_url,
'websiteKey': website_key
})
result = self.get_task_result(task_id)
return result.solution.get('gRecaptchaResponse', '') if result.solution else ''
def solve_turnstile(
self,
website_url: str,
website_key: str,
action: Optional[str] = None,
cdata: Optional[str] = None
) -> str:
task_data = {
'type': 'AntiTurnstileTaskProxyLess',
'websiteURL': website_url,
'websiteKey': website_key
}
if action or cdata:
metadata = {}
if action:
metadata['action'] = action
if cdata:
metadata['cdata'] = cdata
task_data['metadata'] = metadata
task_id = self.create_task(task_data)
result = self.get_task_result(task_id)
return result.solution.get('token', '') if result.solution else ''
# 全局实例
capsolver = CapSolverService()
集成方法
EasySpider 提供了多种集成 CapSolver 的方式。选择最适合您用例的方法。
方法 1:使用 JavaScript 注入的自定义操作
EasySpider 支持在工作流中执行自定义 JavaScript。这是最直接的集成方法。
步骤 1:在 EasySpider 中创建一个新任务并导航到受验证码保护的页面
步骤 2:添加一个“自定义操作”节点,使用以下 JavaScript:
javascript
// 从 reCAPTCHA 元素中提取 sitekey
var siteKey = document.querySelector('.g-recaptcha').getAttribute('data-sitekey');
var pageUrl = window.location.href;
// 存储以供下一步使用
window.captchaSiteKey = siteKey;
window.captchaPageUrl = pageUrl;
// 用于调试的日志
console.log('Site Key:', siteKey);
console.log('Page URL:', pageUrl);
步骤 3:使用 EasySpider 的外部系统调用功能调用一个 Python 脚本以解决验证码并返回令牌
步骤 4:添加另一个“自定义操作”节点以注入令牌:
javascript
// 令牌将从外部脚本传递
var token = arguments[0]; // 从 EasySpider 传递
// 显示响应文本区域并设置令牌
document.getElementById('g-recaptcha-response').style.display = 'block';
document.getElementById('g-recaptcha-response').value = token;
// 如果有回调函数,执行它
if (typeof ___grecaptcha_cfg !== 'undefined') {
var clients = ___grecaptcha_cfg.clients;
if (clients) {
Object.keys(clients).forEach(function(key) {
var client = clients[key];
if (client.callback) {
client.callback(token);
}
});
}
}
方法 1B:使用 EasySpider 的无代理 Turnstile
这是一个使用 EasySpider 可视化节点的无代理 Turnstile 工作流。它不需要代理。
步骤 1:创建一个新任务并导航到受 Turnstile 保护的页面。
步骤 2:添加三个 自定义操作 节点(代码模式 = JavaScript)以捕获 Turnstile 元数据:
javascript
// 节点标题: TS_SiteKey
return document.querySelector('.cf-turnstile')?.getAttribute('data-sitekey') || '';
javascript
// 节点标题: TS_Action(可选)
return document.querySelector('.cf-turnstile')?.getAttribute('data-action') || '';
javascript
// 节点标题: TS_Cdata(可选)
return document.querySelector('.cf-turnstile')?.getAttribute('data-cdata') || '';
步骤 3:添加一个 执行系统命令 节点以使用 CapSolver 解决 Turnstile:
bash
python captcha_solver.py "{{current_url}}" "Field[\"TS_SiteKey\"]" "turnstile" "Field[\"TS_Action\"]" "Field[\"TS_Cdata\"]"
将此节点命名为 Token,以便以后引用其输出为 Field["Token"]。
步骤 4:添加一个 自定义操作 节点(JavaScript)以注入令牌:
javascript
var token = `Field["Token"]`;
var inputs = document.querySelectorAll('input[name="cf-turnstile-response"], input[name="turnstile-response"]');
inputs.forEach(function(el) {
el.value = token;
el.dispatchEvent(new Event('input', { bubbles: true }));
el.dispatchEvent(new Event('change', { bubbles: true }));
});
步骤 5:点击表单提交按钮(或使用 JS 提交)。
注意:无代理的 Turnstile 在许多网站上有效,但某些部署会将令牌与求解器 IP 进行验证。如果发生这种情况,则需要使用代理求解。
方法 3:修改 EasySpider 的 ExecuteStage
对于高级用户,可以直接扩展 EasySpider 的 Python 执行引擎。easyspider_executestage.py 脚本处理任务执行,并可以修改以包含 CapSolver 集成。
位置:{EasySpider_Directory}/Code/easyspider_executestage.py
将 CapSolver 服务添加到执行上下文中:
python
# 添加到 easyspider_executestage.py 的顶部
import requests
import time
# 添加 CapSolver 类
class CapSolverService:
# ... (实现如上)
pass
# 创建全局实例
capsolver = CapSolverService('YOUR_CAPSOLVER_API_KEY')
# 现在可以在 eval/exec 块中使用 capsolver.solve_recaptcha_v2()
然后在您的 EasySpider 任务中,使用“执行 Python 代码”功能:
python
# 在 EasySpider 的 Python 执行块中
site_key = driver.find_element_by_class_name('g-recaptcha').get_attribute('data-sitekey')
token = capsolver.solve_recaptcha_v2(current_url, site_key)
driver.execute_script(f'''
document.getElementById('g-recaptcha-response').value = `{token}`;
''')
最佳实践
1. 带重试的错误处理
python
import time
from functools import wraps
from typing import Callable, TypeVar, Any
T = TypeVar('T')
def retry(max_retries: int = 3, exponential_backoff: bool = True):
"""带指数退避的重试逻辑装饰器。"""
def decorator(func: Callable[..., T]) -> Callable[..., T]:
@wraps(func)
def wrapper(*args: Any, **kwargs: Any) -> T:
last_exception = None
for attempt in range(max_retries):
try:
return func(*args, **kwargs)
except Exception as e:
last_exception = e
if attempt < max_retries - 1:
delay = (2 ** attempt) if exponential_backoff else 1
print(f'尝试 {attempt + 1} 失败,将在 {delay} 秒后重试...')
time.sleep(delay)
raise last_exception
return wrapper
return decorator
@retry(max_retries=3, exponential_backoff=True)
def solve_with_retry(capsolver, url: str, site_key: str) -> str:
return capsolver.solve_recaptcha_v2(url, site_key)
2. 余额管理
python
def check_balance(api_key: str) -> float:
response = requests.post(
'https://api.capsolver.com/getBalance',
json={'clientKey': api_key}
)
data = response.json()
return data.get('balance', 0)
def main():
balance = check_balance(CAPSOLVER_API_KEY)
if balance < 1:
print('警告:CapSolver 余额不足!请充值。')
else:
print(f'当前余额:${balance:.2f}')
3. EasySpider 命令行执行
从命令行运行 EasySpider 任务:
bash
# 基本执行
python easyspider_executestage.py --id [task_id] --read_type local --headless 1
# 带完整参数
python easyspider_executestage.py \
--ids [0] \
--server_address http://localhost:8074 \
--config_folder "./" \
--headless 1 \
--read_type local
完整工作流:包含 CapSolver 集成的 EasySpider 任务
以下是创建包含 CapSolver 集成的完整 EasySpider 工作流的步骤:
步骤 1:在 EasySpider 中设计您的任务
- 启动 EasySpider 并点击“设计任务”
- 输入目标 URL(例如,
https://www.google.com/recaptcha/api2/demo) - 添加工作流节点:
- 打开页面:导航到 URL
- 自定义操作:执行 JavaScript 以检测验证码
- 系统调用:调用带有 CapSolver 的 Python 脚本
- 自定义操作:注入令牌
- 点击元素:提交表单
- 收集数据:提取结果
步骤 2:创建 CapSolver 辅助脚本
将此保存为captcha_solver.py文件到你的EasySpider目录中:
python
#!/usr/bin/env python3
"""
CapSolver辅助脚本用于EasySpider
用法:python captcha_solver.py <url> <site_key> <captcha_type> [action] [cdata]
"""
import sys
import requests
import time
CAPSOLVER_API_KEY = 'YOUR_CAPSOLVER_API_KEY'
def solve_captcha(url, site_key, captcha_type='recaptcha_v2', action=None, cdata=None):
"""解决CAPTCHA并返回令牌。"""
if captcha_type == 'recaptcha_v2':
task_type = 'ReCaptchaV2TaskProxyLess'
elif captcha_type == 'turnstile':
task_type = 'AntiTurnstileTaskProxyLess'
else:
raise ValueError(f'未知的CAPTCHA类型: {captcha_type}')
# 创建任务
task = {
'type': task_type,
'websiteURL': url,
'websiteKey': site_key
}
if captcha_type == 'turnstile' and (action or cdata):
metadata = {}
if action:
metadata['action'] = action
if cdata:
metadata['cdata'] = cdata
task['metadata'] = metadata
response = requests.post(
'https://api.capsolver.com/createTask',
json={
'clientKey': CAPSOLVER_API_KEY,
'task': task
}
)
data = response.json()
if data.get('errorId', 0) != 0:
raise Exception(f"错误: {data.get('errorDescription')}")
task_id = data['taskId']
# 轮询结果
for _ in range(60):
time.sleep(2)
response = requests.post(
'https://api.capsolver.com/getTaskResult',
json={
'clientKey': CAPSOLVER_API_KEY,
'taskId': task_id
}
)
data = response.json()
if data.get('status') == 'ready':
solution = data.get('solution', {})
return solution.get('gRecaptchaResponse') or solution.get('token')
if data.get('status') == 'failed':
raise Exception(f"失败: {data.get('errorDescription')}")
raise Exception('超时')
if __name__ == '__main__':
if len(sys.argv) < 3:
print('用法: python captcha_solver.py <url> <site_key> [captcha_type] [action] [cdata]')
sys.exit(1)
url = sys.argv[1]
site_key = sys.argv[2]
captcha_type = sys.argv[3] if len(sys.argv) > 3 else 'recaptcha_v2'
action = sys.argv[4] if len(sys.argv) > 4 else None
cdata = sys.argv[5] if len(sys.argv) > 5 else None
try:
token = solve_captcha(url, site_key, captcha_type, action, cdata)
print(token) # 输出令牌供EasySpider捕获
except Exception as e:
print(f'ERROR: {e}', file=sys.stderr)
sys.exit(1)
步骤3:配置EasySpider以使用脚本
在你的EasySpider工作流中,添加一个“执行系统命令”节点:
bash
python captcha_solver.py "{{current_url}}" "{{site_key}}" "recaptcha_v2"
对于Turnstile(无代理):
bash
python captcha_solver.py "{{current_url}}" "{{site_key}}" "turnstile" "{{action}}" "{{cdata}}"
输出(令牌)可以被捕获并在后续的JavaScript注入步骤中使用。
结论
将CapSolver与EasySpider集成创建了一个强大的可视化网页自动化组合。EasySpider直观的流程图界面使任务设计对所有人都易于使用,而CapSolver则处理原本会阻止自动化的验证码挑战。
这种集成的关键优势包括:
- 可视化 + 强大功能:通过图形化界面设计任务,同时处理复杂的验证码
- 多种集成方式:通过JavaScript注入、Python脚本或直接修改实现
- 支持所有验证码类型:reCAPTCHA v2,v3 Cloudflare Turnstile,挑战等
- 生产就绪:包含错误处理、重试和余额管理
- 跨平台:适用于Windows、macOS和Linux
无论你是构建数据提取管道、监控系统还是自动化测试框架,EasySpider + CapSolver组合提供了现代网页自动化的可视化设计体验和验证码解决能力。
准备好开始了吗? 注册CapSolver 并使用优惠码 EASYSPIDER 在首次充值时获得额外6%的奖励!
常见问题
什么是EasySpider?
EasySpider是一款免费、开源的可视化网页抓取和浏览器自动化工具。它允许用户通过图形化流程图界面设计自动化任务,而无需编写代码,同时支持自定义JavaScript、Python代码和Selenium语句以满足高级用例。
CapSolver如何与EasySpider集成?
CapSolver通过多种方法与EasySpider集成:在EasySpider工作流中的自定义JavaScript注入、通过系统命令调用的外部Python脚本,或直接修改EasySpider的Python执行引擎。所有方法都使用CapSolver的API来解决验证码并将令牌注入页面。
EasySpider能自行解决验证码吗?
EasySpider内置了一些验证码识别方案和OCR功能。然而,与CapSolver集成可以提供更高的成功率、更快的解决速度以及更广泛的验证码类型覆盖,适用于生产自动化工作流。
CapSolver能解决哪些类型的验证码?
CapSolver支持多种验证码类型,包括reCAPTCHA v2、reCAPTCHA v3、Cloudflare Turnstile、AWS WAF、GeeTest v3/v4等。
CapSolver的费用是多少?
CapSolver根据解决的验证码类型和数量提供具有竞争力的定价。访问capsolver.com查看当前定价详情。使用代码EASYSPIDER可获得首次充值的5%奖励。
EasySpider可以免费使用吗?
是的,EasySpider完全免费,采用AGPL-3.0许可证开源。该软件允许免费商业使用和修改。网络服务部署必须向用户提供源代码访问权限。
如何找到验证码的site key?
site key通常在页面的HTML源代码中找到:
- reCAPTCHA:
.g-recaptcha元素的data-sitekey属性 - Turnstile:
.cf-turnstile元素的data-sitekey属性
能否从命令行运行EasySpider任务?
是的,EasySpider支持通过easyspider_executestage.py进行命令行执行。这使得与其他系统的集成、计划任务执行和无头自动化成为可能。
EasySpider支持哪些平台?
EasySpider支持Windows(x64/x86)、macOS和Linux。从GitHub发布页面下载相应版本。
能否在EasySpider中使用代理?
是的,EasySpider支持代理IP配置和隧道切换。您可以在任务设置中配置代理,或通过EasySpider的浏览器启动选项进行配置。
合规声明: 本博客提供的信息仅供参考。CapSolver 致力于遵守所有适用的法律和法规。严禁以非法、欺诈或滥用活动使用 CapSolver 网络,任何此类行为将受到调查。我们的验证码解决方案在确保 100% 合规的同时,帮助解决公共数据爬取过程中的验证码难题。我们鼓励负责任地使用我们的服务。如需更多信息,请访问我们的服务条款和隐私政策。
更多

在 Node.js 中进行网页爬虫:使用 Node Unblocker 和 CapSolver
掌握Node.js中的网络爬虫技术,利用Node Unblocker绕过限制,并使用CapSolver解决CAPTCHAs。本指南提供高效且可靠的数据提取进阶策略。

Lucas Mitchell
04-Feb-2026

如何在EasySpider中通过CapSolver集成解决验证码
EasySpider 是一个可视化、无代码的网页抓取和浏览器自动化工具,当与 CapSolver 结合使用时,它可以可靠地解决 reCAPTCHA v2 和 Cloudflare Turnstile 等验证码,从而实现在网站间无缝的自动化数据提取。

Emma Foster
04-Feb-2026

如何在 Relevance AI 中通过 CapSolver 集成解决 reCAPTCHA v2
使用CapSolver构建一个Relevance AI工具来解决reCAPTCHA v2。通过API自动完成表单提交,无需浏览器自动化。

Ethan Collins
03-Feb-2026

即时数据抓取工具:无需代码快速提取网页数据的方法
探索2026年最佳的即时数据抓取工具。学习无需编码即可使用顶级扩展和API快速提取网页数据的方法,实现自动化数据提取。

Sora Fujimoto
28-Jan-2026

使用Python进行新闻文章的网络爬虫(2026年指南)
在2026年掌握使用Python进行新闻文章网络爬取的技能。学习使用CapSolver解决reCAPTCHA v2/v3,构建可扩展的数据管道。

Adélia Cruz
28-Jan-2026

2026年十大无代码爬虫工具
2026年最佳无代码网络爬虫工具精选列表。比较AI驱动的爬虫、可视化点击平台、定价、优缺点及实际应用案例。

Emma Foster
27-Jan-2026


