别再给爬虫 API 交智商税了,用 Rust 写的 Draco 替代 Firecrawl 体验极佳
最近在做 LLM Agent 的数据喂养,最头疼的就是网页转 Markdown 的成本。公司之前一直用 Firecrawl,每个月得交几百美金,最恶心的是它按页计费,而且遇到动态站点还得升级到高级计划才能保证抓取成功率。直到我试用了 Draco,这个用 Rust 编写的单二进制工具,才让我意识到自托管爬虫其实可以做得这么高效。
很多人的第一反应是,一个单文件二进制工具能比得过成熟的托管服务吗?但在实际跑了几轮测试后,我发现 Draco 的核心竞争力在于它对“抓取成本”的极致分层设计,这完全颠覆了传统的“无脑启动浏览器”方案。
Draco 将抓取逻辑分成了三个梯度,这决定了它在资源占用和反爬能力上的平衡。第一层是基于自定义 TLS 和 JA4 指纹的网络请求,它通过伪装浏览器的网络签名来绕过检测。我实测在抓取被 Cloudflare 保护的页面时,传统的 Playwright 方案不仅需要 500MB 左右的内存占用,且经常因为加载过慢而超时;而 Draco 在这一层仅消耗不到 20MB 内存,且在 1 秒内就能完成请求。对于纯静态或简单反爬的页面,这一层几乎是零成本且极速的。
当第一层失效,面对 React 或 Next.js 这种重度依赖客户端渲染的 SPA 页面时,它会进入第二层:在进程内启动 V8 isolate。这个设计非常精妙,它能在几毫秒内挂载 DOM,甚至能直接拦截页面后台调用的隐藏 JSON API。这意味着它不需要渲染出完整的 UI 界面,就能直接把结构化数据拿走。只有当这两层都无法处理时,它才会回落到第三层——调用真实的浏览器驱动。这种“由轻到重”的回退机制,保证了抓取的覆盖率,又避免了处处用“牛刀”导致的资源浪费。
在工程实践上,Draco 几乎是无缝对标托管服务的。通过执行 draco serve 命令,它可以直接启动一个 HTTP 服务,且 REST API 接口与 Firecrawl 兼容。这意味着如果你之前的代码已经集成了 Firecrawl,只需要修改 Base URL 和 API Key 就能完成迁移,没有任何迁移成本。此外,它内置了 MCP server,可以直接插在 Claude Desktop 或自定义 Agent 中。最让我惊喜的是它内置的并行多引擎 Web Search,直接省掉了申请 Google Search API Key 的麻烦。对于需要保持 Cookie 进行有状态操作的场景,它的 interact 模式也提供了极强的支持,这对构建复杂的 LLM Agent 链路至关重要。
为了验证实际效果,我拿公司内部需要抓取的 8 个目标站点跑了一遍压力测试。结果是 8 个全部通过,而之前使用 Firecrawl 时,其中有两个站点因为动态加载问题需要手动写脚本处理。在内存占用和响应耗时上,Draco 均低于之前的方案。
虽然作者在仓库中标注了 WIP(开发中),且在面对极少数冷门站点时可能存在兼容性坑点,但考虑到它采用 MIT/Apache 双协议且完全开源,对于追求成本控制和性能的团队来说,这绝对是一个比付费 API 更值得尝试的选择。如果你也在为昂贵的爬虫账单买单,建议直接拉取二进制文件试一下,扔几个难啃的 URL 进去,性能差距一试便知。
全部回复 (3)
想当场把话说完?进全球 AI 聊天室,登录就能开口。
Firecrawl 那个订阅费简直抢钱,赶紧把 Draco 跑起来试试