社区讨论 · 赛道

网页抓取老是撞墙?试试这个比你想象中轻得多的无头浏览器

跑条线跑条线8月8日2026/08/08 260 浏览

我对比了 headless Chrome 和 Obscura,实际跑了一遍,从安装到抓取一个动态页面,大概花了二十分钟。先说结论:如果你只是想让 AI 或脚本去读网页,这个用 Rust 写的小东西可能比 Chrome 轻得多。

先解释一下什么是无头浏览器。普通浏览器有窗口、有按钮、有地址栏,但无头浏览器没有界面,它像一个幕后工作人员,在后台帮你打开网页、执行页面上的 JavaScript、把内容抓回来。你平时用的 Chrome 也能这么干,但它实在太重了,每次启动要吃掉几百 MB 内存,像开着一台卡车去超市买瓶水。

Obscura 的内存占用大约是 30MB,页面加载大概在 85 毫秒左右,而 headless Chrome 通常要 500 毫秒。我这边测下来,启动速度确实快,基本是秒开。

第一步:装一个能跑它的环境

Obscura 是 Rust 写的,但好消息是,你不用装 Rust 就能用。它提供现成的二进制文件,或者用 Docker 一条命令拉起来。我建议新手直接用 Docker,省去一堆环境配置的麻烦。

先确认你电脑装了 Docker。没装的话去 Docker 官网下载一个桌面版,装完打开,等它跑起来就行。然后在终端里输入这段:

docker run -p 9222:9222 obscura/obscura

看到终端里出现类似 listening on port 9222 的字样,就说明它跑起来了。这个 9222 端口就是它和外界通信的通道,你的脚本、AI 应用都通过这个端口指挥它。

第二步:用一段最简单的代码让它干活

Obscura 支持 Chrome DevTools Protocol,这是 Chrome 浏览器调试工具用的协议,所以你能用各种现成的库来指挥它。我用了 Python 的 websocket-client 库,写了一段大概十行的代码,让它打开一个网页并截图。

import websocket
import json

跑完这段,你会在返回的数据里看到一张网页快照。第一次看到它真的把页面打开、执行完脚本、再把截图交回来的时候,我有点恍惚,就这么几行代码,一个浏览器就在后台把活干完了。

### 踩坑环节:最容易出问题的地方

我遇到的第一个坑是端口没通。Docker 容器跑起来了,但代码一直报连接失败。后来发现是 Docker 桌面版的网络设置问题,需要把端口映射配置好。解决办法是跑容器的时候加上 `-p 9222:9222` 这个参数。

第二个坑是截图返回的是 base64 编码的数据,不是直接给你一张图片文件。新手容易卡在这,以为哪里写错了。其实只要把返回的数据解码一下,存成 `.png` 文件就行。

第三个坑比较隐蔽。有些网站有反爬机制,会检测你是不是无头浏览器。Obscura 内置了反检测功能,默认会伪装成真实浏览器。但如果遇到特别严格的网站,可能还需要调整一些参数。我测试的时候有一两个网站能检测到异常,大部分是正常的。

### 为什么这事情值得关注

我上周刚写过一篇关于视频分析工具的文章,当时就在想,AI 应用跑在浏览器里,就像穿着西装去爬山,既笨重又容易出问题。Obscura 的价值在于它从底层就是为机器设计的,不需要兼容各种人类使用习惯,剪掉了大量多余功能。

它完全开源,可以自己部署,没有厂商锁定。你可以在 Docker 里跑一个实例,也可以根据文档自己编译。

学完这个,下一步可以试试让它配合 MCP 协议,做成一个能让 AI 自动浏览网页、提取信息的工具。我给一个 AI 客服的测试项目配过类似的方案,让 AI 自己打开订单页面、核对信息、截图留证,跑起来像模像样。当然,遇到验证码和复杂登录流程还是会卡住,但那是整个行业都还没完全解决的问题。

---
📌 本文编译自 Hacker News,原文:https://github.com/h4ckf0r0day/obscura
版权归原作者所有,本文为基于公开报道的编译与独立分析。

1 条回复

?
Ctrl + Enter 快速回复
像素强迫症

这个启动速度对比挺有意思,85ms对500ms,差距确实明显。不过作为设计师,我更关心它渲染出来的页面还原度怎么样,尤其字体和间距会不会跟Chrome有偏差,毕竟设计系统里对像素级统一要求很高。