返回首页
24小时热榜
抓取现代网站已经成为一项巨大的挑战。你基本上有两个选择:要么支付高昂的API费用,比如Firecrawl或Browserbase,要么运行一组无头Chrome实例,每个页面消耗1GB的内存,仍然会被Cloudflare阻止。
我开发了Draco来解决这个问题。它是一个快速的单一二进制文件的网页抓取工具,使用Rust编写。你只需指定一个URL,它就会输出完美干净的Markdown或结构化的JSON,供大型语言模型(LLMs)使用。
它的秘密在于,它并不是为每个请求都启动一个浏览器。它使用了一个分层升级引擎:
**第一层(隐秘抓取)**:Draco使用自定义的TLS/JA4指纹,完美模拟真实浏览器在数据包级别的网络签名。事实证明,许多反机器人墙会在你的握手看起来正确时让你顺利通过。在我对Cloudflare和Target等网站的基准测试中,Playwright消耗了约500MB的内存并超时,而Draco在不到一秒的时间内仅使用了20MB的内存就绕过了它们。
**第二层(V8隔离)**:如果它遇到需要渲染的React/Next.js单页应用,Draco会在个位数毫秒内启动一个进程内的V8引擎。它会对DOM进行水合,并拦截页面调用的隐藏JSON API——为你提供原始数据,而无需图形浏览器的开销。
**第三层(真实浏览器)**:如果遇到绝对的障碍,它会无缝地回退到检测并驱动你机器上的真实浏览器。
我还内置了所有工具,使其成为托管服务的完整替代品:
**守护进程模式**:运行`draco serve`,你将获得一个持久的HTTP服务器,带有与Firecrawl兼容的REST API。你可以立即更换API密钥并自托管。
**内置MCP服务器**:它原生暴露一个模型上下文协议服务器,可以直接插入Claude Desktop或你的AI代理。
**网页搜索**:内置并行多引擎网页搜索(绕过需要Google搜索API密钥的限制)。
**交互模式**:像开发者工具控制台一样状态驱动页面,在导航之间持久化Cookies(主要用于LLMs)。
它是完全开源的(MIT/Apache-2.0)。我只是想把这个分享给那些厌倦了与无头Chromium作斗争或支付逐页抓取费用的人。下载二进制文件,试试一个困难的URL。
请注意,它仍在开发中,因此可能会出现一些不常见网站的意外故障,但在大多数情况下,它相当强大,可以处理cf保护的网站和重度单页应用,而其他工具在处理时部分或完全失败,并且消耗更多时间或资源。(在example.com、hackernews、cloudflare、glassdoor、bluff.com、target.com、stake.com和thrill.com上进行了测试)
```
┏━━━━━━┳━━━━━━━━━━━━━━━━┳━━━━━━━┳━━━━━━┳━━━━━━━━━━┳━━━━━━━━━┓
┃ 排名 ┃ 工具 ┃ 分数 ┃ 通过 ┃ 平均时间 ┃ 平均内存 ┃
┡━━━━━━╇━━━━━━━━━━━━━━━━╇━━━━━━━╇━━━━━━╇━━━━━━━━━━╇━━━━━━━━━┩
│ #1 │ Draco │ 769.7 │ 8/8 │ 3.45 │ 216.50 │
│ #2 │ Obscura │ 384.5 │ 4/8 │ 2.68 │ 87.59 │
│ #3 │ BrowserOxide │ 373.4 │ 4/8 │ 6.42 │ 105.95 │
│ #4 │ Playwright │ 342.2 │ 4/8 │ 1.71 │ 535.07 │
│ #5 │ Bouncy │ 196.6 │ 2/8 │ 0.59 │ 19.38 │
└──────┴────────────────┴───────┴──────┴──────────┴─────────┘
```
仓库地址: [https://github.com/0xchasercat/draco/](https://github.com/0xchasercat/draco/)
前几天我在我的Framework设备上查看iio设备,发现Framework 12的铰链角度传感器相当准确!于是我为Linux上的Framework 12制作了一个LidAngleSensor的版本(<a href="https://github.com/samhenrigold/LidAngleSensor" rel="nofollow">https://github.com/samhenrigold/LidAngleSensor</a>),这样你就可以让你的铰链发出生锈的声音。
作者在此。大约660条笔记发布于一个包含8,360条(300万字)的私密Obsidian库中。大约在2011年开始使用OneNote,2021年迁移到Obsidian [1],并通过Python脚本将所有内容导入 [2]。
笔记随着时间的推移不断积累,这也是我写作的来源。关于语义层的笔记始于2022年,后来发展成四篇博客系列,最终成为我书中的一章。物化视图、一个大表、dbt和OLAP是几年前分别写的独立笔记。我后来才注意到它们之间的相同模式,这又成为了另一章。
发布:在笔记中添加#publish,运行`make deploy`。使用Quartz + Hugo,将内容同步到我自己的服务器 [3]。代码 [4]。在图谱上进行语义搜索 [5]。
[1] <a href="https://www.ssp.sh/blog/how-to-take-notes-in-2021/" rel="nofollow">https://www.ssp.sh/blog/how-to-take-notes-in-2021/</a>
[2] <a href="https://www.ssp.sh/blog/how-to-take-notes-in-2021/#how-did-i-export-my-10-of-onenote-to-markdown" rel="nofollow">https://www.ssp.sh/blog/how-to-take-notes-in-2021/#how-did-i...</a>
[3] <a href="https://www.ssp.sh/brain/public-second-brain-with-quartz/" rel="nofollow">https://www.ssp.sh/brain/public-second-brain-with-quartz/</a>
[4] <a href="https://github.com/sspaeti/second-brain-public" rel="nofollow">https://github.com/sspaeti/second-brain-public</a>
[5] <a href="https://explore.ssp.sh" rel="nofollow">https://explore.ssp.sh</a>