如何用camofox-browser批量提取页面所有链接和图片:完整教程
【免费下载链接】camofox-browserStealth headless browser for AI agents — bypass Cloudflare, bot detection, and anti-scraping. Drop-in Puppeteer/Playwright replacement.项目地址: https://gitcode.com/GitHub_Trending/ca/camofox-browser
camofox-browser 是一款基于 Camoufox 的隐身无头浏览器服务器(stealth headless browser server),通过 REST API 为 AI Agent 和爬虫脚本提供"批量提取页面链接和图片"的能力,可绕过 Cloudflare、机器人检测和反爬机制,是 Puppeteer/Playwright 的即插即用替代品。本教程将带你用 3 条 curl 命令完成整页链接与图片的批量抓取。
为什么需要一款反检测浏览器来提取链接和图片
传统无头浏览器在抓取真实网站时经常被拦截:
- ❌Playwright/Headless Chrome 会被指纹识别:
navigator.hardwareConcurrency、WebGL 渲染器、WebRTC 等特征直接暴露 - ❌Stealth 插件本身就是指纹:打补丁的 JS 层修改会留下痕迹
- ✅camofox-browser 在 C++ 层修补 Firefox:所有指纹在 JavaScript 运行前就被伪造,网站"看不到"任何破绽
除了反检测,它还有几个对批量提取特别友好的设计:
| 特性 | 说明 |
|---|---|
| 🔗 链接批量提取 | /tabs/:id/links支持limit/offset分页,超大页面也能取完 |
| 📸 图片批量提取 | /tabs/:id/images返回所有<img>的 src/alt/宽高,可选内联 base64 数据 |
| 🪶 低内存占用 | 惰性启动 + 空闲自动关闭,空闲时仅约 40MB,树莓派/$5 VPS 也能跑 |
| 🔒 会话隔离 | 每个用户独立的 cookie 和存储,适合多任务批量抓取 |
快速安装:3 步跑起本地服务
1️⃣ 克隆仓库并安装依赖(首次运行会自动下载约 300MB 的 Camoufox 引擎):
git clone https://gitcode.com/GitHub_Trending/ca/camofox-browser cd camofox-browser npm install2️⃣ 启动服务:
npm start # 服务运行在 http://localhost:93773️⃣ 验证服务:访问http://localhost:9377/health看到健康响应即成功。Docker 用户可以直接用make up一条命令完成构建与启动。
💡 自动生成的 OpenAPI 交互文档位于
/docs,规范文件见 openapi.json,所有接口参数都能在线查阅。
三步完成批量提取:创建标签页 → 提链接 → 提图片
整个流程只需要 3 个 API 调用,无需编写任何选择器或解析代码。
第 1 步:创建标签页并加载目标网址
curl -X POST http://localhost:9377/tabs \ -H 'Content-Type: application/json' \ -d '{"userId":"user1","url":"https://example.com"}' # 返回中包含 tabId,后续请求都会用到它userId用于会话隔离,每个用户拥有独立的 cookie 与浏览器上下文。
第 2 步:批量提取页面所有链接
GET /tabs/:id/links会遍历页面中所有<a href>元素,只返回http(s)开头的真实 URL,并附带链接文字(截取前 100 字符):
curl 'http://localhost:9377/tabs/TAB_ID/links?userId=user1&limit=100&offset=0'响应示例:
{ "tabId": "TAB_ID", "total": 237, "links": [ { "url": "https://example.com/blog/post-1", "text": "第一篇博客" }, { "url": "https://example.com/products", "text": "产品" } ] }关键参数(实现见 server.js):
| 参数 | 默认值 | 作用 |
|---|---|---|
limit | 50 | 每页返回的链接数 |
offset | 0 | 分页偏移量,配合 limit 翻页取全 |
页面有 237 个链接?循环offset=0,100,200三次即可全部拿完——这就是"批量"的含义。
第 3 步:批量提取页面所有图片
GET /tabs/:id/images会列出页面所有可见<img>元素的src、alt、宽高,实现位于 lib/images.js:
# 只取 URL 列表(默认最多 8 张,上限 20 张) curl 'http://localhost:9377/tabs/TAB_ID/images?userId=user1&limit=20'响应示例:
{ "tabId": "TAB_ID", "images": [ { "src": "https://cdn.example.com/banner.jpg", "alt": "首页横幅", "width": 1200, "height": 630 }, { "src": "https://cdn.example.com/logo.png", "alt": "Logo", "width": 200, "height": 200 } ] }想要把图片内容也带回来(无需二次下载)?加上includeData=true,接口会在浏览器内用fetch拉取图片并转成 base64 data URL(超过maxBytes上限的大图会标记dataSkipped而不报错,实现见 server.js):
curl 'http://localhost:9377/tabs/TAB_ID/images?userId=user1&limit=10&includeData=true&maxBytes=200000'进阶技巧:让批量提取更稳
🧠 用 accessibility snapshot 代替原始 HTML
如果提取链接只是为了判断"页面还有哪些页面可爬",可以先调GET /tabs/:id/snapshot获取无障碍快照——它比原始 HTML 小约 90%,并为每个元素生成稳定的e1、e2引用 ID,还自带大页面自动截断与offset分页,非常适合喂给 AI Agent 做决策。
🌐 代理 + GeoIP:绕过地域限制
配合住宅代理和自动 locale/时区设置(lib/proxy.js),可以稳定抓取有地区锁或反爬严格的目标站,这正是 camofox-browser 相对普通爬虫的最大优势。
🧹 用完记得关闭标签页
curl -X DELETE 'http://localhost:9377/tabs/TAB_ID?userId=user1'批量任务中为每个目标站点创建独立userId会话,结束后用DELETE /sessions/:userId一次性清理,可避免内存泄漏。
总结
| 需求 | 接口 | 关键参数 |
|---|---|---|
| 批量提取链接 | GET /tabs/:id/links | limit、offset分页 |
| 批量提取图片 | GET /tabs/:id/images | limit(≤20)、includeData、maxBytes |
| 页面结构快照 | GET /tabs/:id/snapshot | offset分页 |
camofox-browser 把"反检测浏览器 + 批量内容提取"封装成了极简的 REST API:三条 curl 命令,就能从受 Cloudflare 保护的页面批量拿到全部链接和图片,且空闲内存仅约 40MB,树莓派也能跑。更多接口细节可查阅 README.md 的 API 清单与 docs/openapi.json 完整规范。
【免费下载链接】camofox-browserStealth headless browser for AI agents — bypass Cloudflare, bot detection, and anti-scraping. Drop-in Puppeteer/Playwright replacement.项目地址: https://gitcode.com/GitHub_Trending/ca/camofox-browser
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考