反检测浏览器自动化工具

Camoufox MCP是一款专为AI代理设计的反检测浏览器自动化工具,支持指纹随机化、会话管理和网络拦截等功能。

  • by baixianger
  • TypeScript
  • 本地部署
  • 7 星标
  • 更新于
在 GitHub 查看 baixianger/camoufox-mcp

使用说明

🦊 迷彩MCP

AI代理的反检测浏览器自动化

用于浏览器自动化的MCP服务器 迷彩 -反检测Firefox浏览器。

安装

npx camoufox-mcp

Claude桌面配置

增添 claude_desktop_config.json:

基础:

{
  "mcpServers": {
    "camoufox": {
      "command": "npx",
      "args": ["camoufox-mcp"]
    }
  }
}

使用代理(通过env变量):

{
  "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
  }
}

为什么选择迷彩MCP?

功能 迷彩MCP Chrome DevTools MCP
反检测
机器人检测旁路 ✅ 内置 ❌ 检测到
指纹随机化 ✅ ❌
WebRTC泄漏保护 ✅ ❌
画布指纹欺骗 ✅ ❌
自动化
人性化光标移动 ✅ 现实路径 ❌ 瞬间跳跃
像人类一样延迟点击 ✅ ❌
具有GeoIP自动配置的代理 ✅ 时区/地区 ❌ 手册
JavaScript评估
主流世界评估(__NUXT__, __NEXT_DATA__) ✅ ✅
隔离eval(异步/等待) ✅ ✅
会话管理
孤立的浏览器会话 ✅ 多个上下文 ❌ 单一上下文
预认证会话 ✅ Cookie/本地存储注入 ❌
会话状态导出 ✅ 保存为JSON ❌
特性
Cookie弹出自动关闭 ✅ 50+选择器 ❌
用户操作记录 ✅ ❌
网络拦截 ✅ ✅
控制台捕获 ✅ ✅
性能跟踪 ❌ ✅
浏览器
引擎 火狐(Gecko) Chrome(Chromium)
自动安装 ✅ ~150MB ✅

工具

会话管理

会话提供独立的浏览器上下文——每个会话都有自己的Cookie、本地存储和缓存。使用会话同时运行多个经过身份验证的配置文件。

工具 说明
create_session 创建一个新的隔离会话,可选地从JSON文件预加载cookie/localStorage
list_sessions 列出所有会话及其页数和元数据
save_session 将会话的Cookie和localStorage导出到JSON文件
close_session 关闭会话及其所有页面
list_context_files 列出在设置中注册的可用上下文文件

页面管理

工具 说明
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(异步OK)
get_framework_state 提取Next.js/Nuxt.js状态

上下文注入

工具 说明
inject_context 将Cookie+本地存储从JSON文件注入会话

监控

工具 说明
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

使用示例

使用预加载的身份验证创建会话:

  1. create_session 随着 contextPath: "github-cookies.json" --返回a sessionId
  2. new_page 随着 url: "https://github.com" 和那个 sessionId --打开已登录的GitHub

同时运行两个帐户:

  1. create_session 随着 contextPath: "account1.json" --会话A
  2. create_session 随着 contextPath: "account2.json" --会议B
  3. new_page 在会话A中--以帐户1登录
  4. new_page 在会话B中--以帐户2登录

保存会话状态以备后用:

  1. 在会话中手动登录
  2. save_session 随着 outputPath: "my-session.json" --导出Cookie+本地存储
  3. 下一次, create_session 随着 contextPath: "my-session.json" --已恢复

上下文文件格式

上下文文件使用 剧作家的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。会话已创建 懒洋洋地按要求 --在代理调用之前,不会使用内存 create_session:

{
  "contextPaths": [
    "/path/to/github-cookies.json",
    "/path/to/linkedin-cookies.json"
  ]
}

然后,代理人可以致电 list_context_files 看看有什么可用的,以及 create_session 与所需 contextPath 在需要时加载它。

设置

创建 ~/.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" } }

使用身份验证(使用env变量):

{
  "proxy": {
    "enabled": true,
    "server": "${PROXY_SERVER}",
    "username": "${PROXY_USER}",
    "password": "${PROXY_PASS}",
    "geoip": true
  }
}

geoip: true 根据代理IP位置自动调整浏览器时区/区域设置。

查看更多

许可证

麻省理工学院