你做 Roblox 自动化已经半年了。账号管理脚本跑得好好的,突然某天凌晨三点,日志里开始刷
captcha_required。你以为是 IP 被风控了,换了代理、清了 Cookie、甚至换了设备指纹——还是绕不过去。
这就是 FunCaptcha,Arkose Labs 出品的那套旋转图片验证。它不是 reCAPTCHA 那种点一下”我不是机器人”就能过的类型。它会让你在一堆 3D 渲染的动物图片里挑出”面对左边的狮子”,而且每次失败后难度还会升级。
市面上的解法不是没有。2Captcha 按次收费,CapSolver 有 API 但贵,nopecha 扩展好用但只在浏览器里跑。而且商业化方案普遍对 Roblox 这种垂直场景的优化不够,你花的钱里有相当一部分是在为通用验证码类型的支持买单。如果你要的是直接嵌入脚本、不需要人类介入的自动化方案,选择其实很少。FUNCAPTCHAV3 就是冲着这个缺口来的。一个 Flask 服务,部署到 Render 上之后,你的脚本只需要发 HTTP 请求就能拿到 FunCaptcha 的 token。
说白了这篇文章想回答一个问题:这个 1 Star、13 次 commit 的项目,是真的能干活,还是又一个半成品 README。先看看它到底做了什么。
一个 Flask 服务干了三件事
FUNCAPTCHAV3 不是那种”先拆成微服务再画一张漂亮的架构图”的项目。它就是一个 app.py,里面塞进了三套核心能力。
第一是 Blob 提取。FunCaptcha 的 token 获取流程里,第一步是从 Arkose Labs 的接口拿到一个加密的 blob 数据。这个步骤需要处理 Arkose 的 JavaScript 加密逻辑,项目用 arkose.js 文件来搞定这部分。arkose.js 是整个服务的命脉,缺了它连启动都成问题。README 用了半页篇幅强调这个文件必须放到仓库根目录,不是可选项。

整个 Flask 应用的结构用一张架构图来看会更清楚:Blob 提取、验证码破解、解密三个模块平铺在同一个 Flask 应用内,各自独立但数据流向有先后。arkose.js 是图中没有画出来但贯穿全局的隐形依赖。
第二是验证码破解本身。它支持三种 FunCaptcha 变体:普通模式、Suppressed 模式、PoW(Proof of Work)模式。Suppressed 是 FunCaptcha 的一种特殊状态,当 Arkose 判定你的请求来自高信任度环境时,验证码会被压缩成零交互——你不需要旋转图片,直接拿到一个有效 token。PoW 模式则需要客户端完成一段计算量证明。三种模式共用一个统一的 /unified/solve 端点,服务端自动判断该走哪条路径。
第三是 v3.0 新增的解密模块。Roblox 客户端在通信中使用了 TGuess 和 BDA 两种加密格式,以前这需要单独的脚本处理。v3.0 把它们直接集成进了同一个 Flask 应用,/decrypt/tguess 和 /decrypt/bda 两个端点分别处理。统计端点也增加了 decrypted 计数器,所有操作的数据都打在一个 /stats 页面上。
这三件事放在一起看,FUNCAPTCHAV3 的定位就不是一个通用的验证码破解 API。它是专门为 Roblox 自动化场景裁出来的——从 Arkose 拿 blob,解 FunCaptcha,再到解密 Roblox 协议数据,一条链路走到底。
功能讲完了,但东西好不好用不能光看 README。
跑起来什么感觉
安装过程不复杂,但有一个前置条件很容易踩坑。Node.js 是隐式依赖,arkose.js 通过 PyExecJS 执行,系统里必须装好 Node。本地跑起来的命令就两行:
git clone https://github.com/clent267/FUNCAPTCHAV3.git
cd FUNCAPTCHAV3 && pip install -r requirements.txt
启动后访问 http://localhost:8080/health,返回的 JSON 里会显示服务状态、版本号、以及 arkose.js 是否加载成功。如果 arkose_loaded 是 false,说明文件路径不对或者 Node 环境有问题,后面的所有操作都会挂。一个完整的一体化调用长这样:
import requests, time
resp = requests.post('http://localhost:8080/unified/solve', json={
'preset': 'roblox_login'
})
task_id = resp.json()['task_id']
while True:
status = requests.get(f'http://localhost:8080/solve/status/{task_id}')
if status.json()['status'] == 'completed':
print(status.json()['token'])
break
time.sleep(0.5)
异步任务模式的设计思路很清晰:创建任务后拿到 task_id,轮询状态直到完成。没有 WebSocket,没有回调 URL,就是最简单的轮询。对于一个单人维护的项目来说,这个选择是务实的。

从调用链的角度看,整个过程涉及三方交互:你的脚本、Flask 服务端、Arkose Labs 的远程 API。arkose.js 在服务端本地运行,负责处理 blob 的加密和解密,是整个链路里唯一不经过网络的关键环节。
不过有几个点需要心理准备。项目依赖了 curl-cffi 来做 TLS 指纹伪装,这个库在 Windows 上的安装偶尔会因为缺少 Visual C++ 编译工具而失败。Render 部署是项目主推的方案,README 里有完整的部署指南和检查清单,但如果你的网络环境访问 Render 不稳定,就需要自己折腾 VPS。还有一个隐性问题:项目没有做速率限制,如果多个客户端同时猛调用,服务端没有排队机制,可能会丢任务。
体验说完了,但更重要的问题是:你属于它的目标用户吗?
什么时候用,什么时候别用
适用场景其实不复杂,三张表就能概括:
| 场景 | 典型用户 | 优势 | 局限 |
|---|---|---|---|
| Roblox 批量账号管理 | 游戏工作室 / 脚本开发者 | 一站式从 blob 到 token,集成解密 | 仅支持 Roblox 的 FunCaptcha 变体 |
| 自动化测试 | QA / 安全研究员 | 自托管,零 API 调用费 | 需要自己维护服务可用性 |
| 个人脚本集成 | 独立开发者 | Python HTTP 调用,接入成本低 | 无官方 SDK,错误处理靠自己 |
反过来看,不适用的情况同样值得说清楚:
-
你需要破解的是 reCAPTCHA 或 hCaptcha。这个项目只做 FunCaptcha,而且只做 Roblox 场景下的 FunCaptcha。Arkose Labs 的验证码在其他网站上的变体不一定兼容。如果你面对的是通用验证码场景,商业替代方案如 2Captcha 或 CapSolver 覆盖的验证码类型远多于这个项目。 -
你需要 SLA 保障和商业支持。1 Star 的项目没有响应 SLA,凌晨三点挂了没人给你修。 -
你的调用量很大但不想自己托管。商业化方案如 2Captcha、CapSolver 虽然花钱,但省去了运维。FUNCAPTCHAV3 的价值恰恰在于”自己跑不需要按次付费”,代价是你要自己管服务器。
做一个不太客气的对比:funcaptcha-challenger(MagicalMadoka,127 Stars)是一个更成熟的 Python 库,但它是纯库而非服务,需要你自己封装 HTTP 接口。FUNCAPTCHAV3 的优势是开箱即用的 Flask 服务加上 v3.0 的解密集成,劣势是项目太新、验证不足。

跟商业化方案放在一起比,FUNCAPTCHAV3 的定位就清楚了:它不是在跟 2Captcha 抢客户,而是给那些愿意自己运维、不想按次付费的开发者一个开源选项。风险也在这张图上一目了然。
场景聊完了,但一个项目能不能长久,得看它背后的人和社区。
社区几乎不存在,但这不一定是坏事
数据层面没什么好遮掩的:
| 指标 | 数据 | 说明 |
|---|---|---|
| Stars | 1 | 截至 2026 年 7 月,项目创建仅 3 周 |
| 提交次数 | 13 | 集中在创建当天,后续无新提交 |
| 核心维护者 | 1(clent267) | Bus Factor = 1,这是最大的风险 |
| Open Issues | 0 | 要么没问题,要么没人用 |
| 协议 | 未指定 | README 中许可证为占位符 [Your License Here] |
13 次提交全部集中在 2026 年 6 月 20 日创建当天,之后没有新的 commit。这可以有两种解读:项目已经完成并且稳定运行不需要改动,或者作者发完代码就再也没回来过。在没有更多证据之前,我倾向于后者。
作者 clent267 之前维护过一个同名的 funcaptcha 库(fork 自 noahcoolboy 的 Node.js FunCaptcha 交互库),说明他不是第一次碰这个领域。但那个库的提交历史同样稀疏,主要集中在 2023 年 9 到 10 月。
关于社区声音,目前没找到针对这个项目的 HackerNews、Reddit 或 Issue 讨论。它在 GitHub 上的存在感基本为零。对于一个面向特定小众场景的工具来说,这不意外,但确实意味着你在使用过程中遇到的所有问题都得靠自己排查。
数据和社区都摆在这了。剩下的问题是:我到底怎么看待它。
我的真实看法
翻完整个仓库之后,我的判断跟最初的印象没有差太多,但收窄了一点。
先说积极的。这个项目的工程决策是合理的。单体 Flask 应用、异步任务轮询、Render 一键部署、统一的 API 端点设计——这些选择对于一个单人维护的小工具来说是对的。没有过度工程化,没有为了显得专业而拆微服务。/unified/solve 把提取和解决合并成一个调用,这种”帮用户减一步”的意识在小项目里不多见。v3.0 把解密模块集成进来也是正确的方向,省掉了以前需要单独跑两个脚本的麻烦。
但风险同样真实。Bus Factor 等于 1,意味着如果作者不维护了,这个项目就等于死了。没有 License 是一个容易被忽视但实际影响很大的问题:你不能确定在商业场景里使用它是否合法。arkose.js 的来源和更新机制也不透明——如果 Arkose Labs 改了加密逻辑,这个文件需要谁来更新、怎么更新,完全没有说明。
我对这个项目的判断是:它是一个能用的工具,但不是一个值得依赖的基础设施。如果你自己有能力读懂 Flask 代码和 Arkose 的加密逻辑,用它来省掉从头写一个 solver 的时间是划算的。如果你期望的是一个”装上就能稳定跑半年”的服务,它目前的状态还达不到。
真正让我犹豫的是方向问题。Roblox FunCaptcha 破解是一个猫鼠游戏——Arkose 会更新算法,破解工具必须跟进。一个在创建当天提交完所有代码、三周没有更新、单人维护的项目,能否跟上这个节奏?我没有答案,但从历史模式来看,乐观不起来。
好了,分析到此为止。下面是你可以带走的东西。
资源地址
-
GitHub 仓库:https://github.com/clent267/FUNCAPTCHAV3 -
相关项目:funcaptcha-challenger(https://github.com/MagicalMadoka/funcaptcha-challenger)
所以,到底要不要用?下面是行动建议。
先用 Docker 跑起来,别急着上生产
如果你在做 Roblox 自动化,被 FunCaptcha 卡住了,FUNCAPTCHAV3 值得花一个下午跑起来试试。从本地 Docker 或 Render 免费层开始,用它解决眼前的验证码问题。它的价值是帮你省掉从头实现 Arkose 交互的几百行代码。
如果你需要一个生产级的验证码破解方案,建议等它的 License 明确了、commit 历史有持续活动了再做决定。关注两个信号:作者是否在 Issue 区回应问题,Arkose 更新后 arkose.js 是否跟进。
一个 1 Star 的项目不一定是坏的。但一个没有 License 的三周新人项目,赌上生产环境的风险太大了。

