关于 camoufox-mcp
camoufox-mcp 是用于自动化 Camoufox 防检测 Firefox 浏览器的 MCP 服务。它为 AI Agent 提供浏览器交互、隔离会话、页面检查以及网络和控制台监控工具。
主要功能
- 01页面导航与元素交互
- 02管理隔离会话和已保存的身份验证状态
- 03获取页面快照、截图和文本
- 04执行 JavaScript 并提取框架状态
- 05监控和拦截网络请求
适用场景
- 01使用 Camoufox 自动执行浏览操作
- 02同时运行多个已验证身份的浏览器配置
- 03检查页面并捕获网络活动
MCP 相关
此 MCP 服务向 MCP 客户端提供 Camoufox 浏览器自动化工具,包括会话、页面、交互、检查和监控操作。它可通过 stdio 启动。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
42收录的工具列表 · 更新于 2 周前
此工具无需参数。
详细介绍
安装
npx camoufox-mcp
Claude Desktop 配置
添加到 claude_desktop_config.json:
基础配置:
{
"mcpServers": {
"camoufox": {
"command": "npx",
"args": ["camoufox-mcp"]
}
}
}
使用代理(通过环境变量):
{
"mcpServers": {
"camoufox": {
"command": "npx",
"args": ["camoufox-mcp"],
"env": {
"PROXY_SERVER": "http://1.2.3.4:8080",
"PROXY_USER": "username",
"PROXY_PASS": "password"
}
}
}
}
然后在 ~/.config/camoufox-mcp/settings.json 中添加:
{
"proxy": {
"enabled": true,
"server": "${PROXY_SERVER}",
"username": "${PROXY_USER}",
"password": "${PROXY_PASS}",
"geoip": true
}
}
为什么选择 Camoufox MCP?
| 功能 | Camoufox MCP | Chrome DevTools MCP |
|---|---|---|
| 反检测 | ||
| 绕过机器人检测 | ✅ 内置 | ❌ 会被检测 |
| 指纹随机化 | ✅ | ❌ |
| WebRTC 泄漏防护 | ✅ | ❌ |
| Canvas 指纹伪装 | ✅ | ❌ |
| 自动化 | ||
| 拟人化光标移动 | ✅ 逼真路径 | ❌ 瞬间跳转 |
| 模拟真人延迟点击 | ✅ | ❌ |
| 代理 GeoIP 自动配置 | ✅ 时区/区域设置 | ❌ 手动配置 |
| JavaScript 求值 | ||
MainWorld 求值(__NUXT__、__NEXT_DATA__) | ✅ | ✅ |
| 隔离环境求值(支持 async/await) | ✅ | ✅ |
| 会话管理 | ||
| 隔离的浏览器会话 | ✅ 多个上下文 | ❌ 单个上下文 |
| 预先认证的会话 | ✅ Cookie/localStorage 注入 | ❌ |
| 导出会话状态 | ✅ 保存为 JSON | ❌ |
| 功能 | ||
| 自动关闭 Cookie 弹窗 | ✅ 50+ 个选择器 | ❌ |
| 用户操作录制 | ✅ | ❌ |
| 网络拦截 | ✅ | ✅ |
| 控制台捕获 | ✅ | ✅ |
| 性能跟踪 | ❌ | ✅ |
| 浏览器 | ||
| 引擎 | Firefox(Gecko) | Chrome(Chromium) |
| 自动安装 | ✅ 约 150MB | ✅ |
工具
会话管理
会话提供相互隔离的浏览器上下文——每个会话都有自己的 Cookie、localStorage 和缓存。使用会话可同时运行多个已认证的用户配置。
| 工具 | 描述 |
|---|---|
create_session | 创建新的隔离会话,可选择从 JSON 文件预加载 Cookie/localStorage |
list_sessions | 列出所有会话及其页面数量和元数据 |
save_session | 将会话的 Cookie 和 localStorage 导出到 JSON 文件 |
close_session | 关闭会话及其所有页面 |
list_context_files | 列出 settings 中注册的可用上下文文件 |
页面管理
| 工具 | 描述 |
|---|---|
new_page | 创建新页面,可选择在指定会话中创建 |
list_pages | 列出所有已打开的页面及其会话 ID |
select_page | 将页面设为当前活动页面 |
close_page | 关闭页面 |
导航与交互
| 工具 | 描述 |
|---|---|
navigate_page | 导航至 URL、返回、前进或重新加载 |
click | 根据 UID 点击元素 |
hover | 将鼠标悬停在元素上 |
fill | 填写表单字段 |
fill_form | 一次填写多个表单字段 |
press_key | 按下按键或组合键 |
drag | 将一个元素拖动到另一个元素上 |
检查
| 工具 | 描述 |
|---|---|
take_snapshot | 获取包含交互元素 UID 的文本快照 |
take_screenshot | 截取页面或元素的屏幕截图 |
get_page_text | 提取文本内容 |
evaluate_mainworld | 在页面上下文中运行 JS(仅同步) |
evaluate_isolated | 在隔离上下文中运行 JS(支持异步) |
get_framework_state | 提取 Next.js/Nuxt.js 状态 |
上下文注入
| 工具 | 描述 |
|---|---|
inject_context | 将 JSON 文件中的 Cookie 和 localStorage 注入会话 |
监控
| 工具 | 描述 |
|---|---|
start_network_capture / stop_network_capture | 捕获网络请求 |
get_network_logs / clear_network_logs | 查看/清除捕获的请求 |
intercept_network / remove_intercept | 拦截或修改请求 |
start_console_capture / stop_console_capture | 捕获控制台消息 |
get_console_logs / clear_console_logs | 查看/清除控制台消息 |
start_recording / stop_recording / get_recording_status | 记录用户交互 |
实用工具
| 工具 | 描述 |
|---|---|
dismiss_popups | 自动关闭 Cookie 同意弹窗 |
wait_for | 等待文本或选择器 |
wait_for_navigation | 等待导航完成 |
reload_settings | 从配置文件重新加载设置 |
get_config_paths | 显示配置文件路径 |
init_user_config | 初始化用户配置目录 |
会话
会话支持并行运行多个已认证的配置文件。每个会话都是一个独立的浏览器上下文,拥有自己的 Cookie 和 localStorage。
Browser (single Camoufox instance)
├── Session "github" (cookies from github.json)
│ ├── Page: github.com
│ └── Page: github.com/repo
├── Session "linkedin" (cookies from linkedin.json)
│ └── Page: linkedin.com/feed
└── Session "default" (no pre-loaded state)
└── Page: example.com
使用示例
创建一个预先加载身份验证信息的会话:
- 使用
contextPath: "github-cookies.json"调用create_session—— 返回一个sessionId - 使用
url: "https://github.com"和sessionId调用new_page—— 打开已登录的 GitHub
同时运行两个账户:
- 使用
contextPath: "account1.json"调用create_session—— 会话 A - 使用
contextPath: "account2.json"调用create_session—— 会话 B - 在会话 A 中调用
new_page—— 以账户 1 的身份登录 - 在会话 B 中调用
new_page—— 以账户 2 的身份登录
保存会话状态以供稍后使用:
- 在会话中手动登录
- 使用
outputPath: "my-session.json"调用save_session—— 导出 Cookie + localStorage - 下次使用时,使用
contextPath: "my-session.json"调用create_session—— 恢复会话
上下文文件格式
上下文文件使用 Playwright 的 storageState 格式:
{
"cookies": [
{
"name": "session_id",
"value": "abc123",
"domain": ".example.com",
"path": "/",
"expires": 1735689600,
"httpOnly": true,
"secure": true,
"sameSite": "Lax"
}
],
"origins": [
{
"origin": "https://example.com",
"localStorage": [
{ "name": "token", "value": "xyz789" }
]
}
]
}
在设置中注册上下文文件
将上下文文件路径添加到 settings.json,使其可通过 list_context_files 发现。会话会按需延迟创建——在 Agent 调用 create_session 之前不会占用内存:
{
"contextPaths": [
"/path/to/github-cookies.json",
"/path/to/linkedin-cookies.json"
]
}
之后,Agent 可以调用 list_context_files 查看可用文件,并在需要时使用所需的 contextPath 调用 create_session 加载文件。
设置
创建 ~/.config/camoufox-mcp/settings.json:
{
"browser": {
"headless": false,
"viewport": [1280, 1080],
"timeout": 30000,
"humanize": 0.5
},
"proxy": {
"enabled": true,
"server": "http://proxy.example.com:8080",
"username": "user",
"password": "pass",
"geoip": true
},
"contextPaths": []
}
代理示例
HTTP/HTTPS 代理:
{ "proxy": { "enabled": true, "server": "http://1.2.3.4:8080" } }
SOCKS5 代理:
{ "proxy": { "enabled": true, "server": "socks5://1.2.3.4:1080" } }
使用环境变量进行身份验证:
{
"proxy": {
"enabled": true,
"server": "${PROXY_SERVER}",
"username": "${PROXY_USER}",
"password": "${PROXY_PASS}",
"geoip": true
}
}
geoip: true会根据代理 IP 的位置自动调整浏览器时区/区域设置。
了解更多
- Camoufox - 具有反检测功能的 Firefox 浏览器
- camoufox-js - JavaScript/TypeScript 绑定
许可证
MIT
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。