关于 browse-config
browse-config 是为 browse 命令行生成 Camoufox 配置的技能,可引导选择预设或自定义选项,并将配置保存到 browse.json 或命名配置文件,同时保留其他字段。
主要功能
- 01隐蔽、快速和 Google-safe 预设
- 02交互式选择自定义选项
- 03保存至 browse.json 或配置文件
- 04合并配置且保留其他字段
- 05提供 Camoufox 运行方式说明
适用场景
- 01设置受保护网站抓取时的浏览器选项
- 02减少抓取时加载的资源
- 03配置用于 Google 搜索的浏览器配置
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ ulpi-io/ skills --skill browse-config安装后在 Claude Code 中输入/browse-config确认已加载。
详细介绍
browse-config:Camoufox 配置生成器
步骤 0:询问用户的需求
使用 AskUserQuestion 确定目标。提供以下预设:
| 预设 | 描述 |
|---|---|
| 隐蔽浏览 | 用于抓取受保护的网站。启用 geoip、humanize 和默认 OS 指纹。 |
| 快速抓取 | 尽量减少占用。屏蔽图片、WebRTC 和 WebGL。启用磁盘缓存。 |
| Google 安全模式 | 搜索 Google 时避免触发“异常流量”拦截。启用 geoip、humanize 和随机 OS。 |
| 自定义 | 逐组交互式配置各个选项。 |
预设默认值
隐蔽浏览:
{
"geoip": true,
"humanize": true
}
快速抓取:
{
"blockImages": true,
"blockWebrtc": true,
"blockWebgl": true,
"enableCache": true
}
Google 安全模式:
{
"geoip": true,
"humanize": true,
"os": ["windows", "macos", "linux"]
}
步骤 1:自定义配置(选择预设时跳过)
如果用户选择了“自定义”,使用 AskUserQuestion 询问各组选项。每次展示一组。
身份
os(字符串或数组)——目标 OS 指纹:“windows”、“macos”、“linux”,或用于随机选择的数组locale(字符串或数组)——浏览器区域设置,例如“en-US”或 ["en-US", "en-GB"]fingerprint(对象)——高级指纹覆盖设置(大多数用户可跳过此项)
隐私
blockWebrtc(布尔值)——屏蔽 WebRTC,防止 IP 泄漏blockWebgl(布尔值)——屏蔽 WebGL 指纹识别blockImages(布尔值)——屏蔽图片加载(也能提升速度)
性能
enableCache(布尔值)——启用浏览器磁盘缓存blockImages(布尔值)——已在“隐私”中介绍,在此说明其提升速度的作用
网络
proxy(字符串或对象)——代理 URL,例如 "http://user:pass@host:port" 或{"server":"...","username":"...","password":"..."}geoip(字符串或布尔值)——设为 true 时根据代理 IP 自动推断,也可以填写国家代码,例如 "US"
行为
humanize(布尔值或数字)——设为 true 时使用默认的类人延迟,也可以设置数字(0.5-2.0)来控制速度
高级(仅在用户提出要求时提供)
addons(字符串[])——要加载的 Firefox 扩展路径excludeAddons(字符串[])——要跳过的内置扩展firefoxUserPrefs(Record)——原始 Firefox about:config 首选项args(字符串[])——额外的浏览器启动参数fonts(字符串[])——自定义字体列表customFontsOnly(布尔值)——仅使用自定义字体screen(对象)——{minWidth, maxWidth, minHeight, maxHeight}window([width, height])——固定窗口尺寸ffVersion(数字)——目标 Firefox 版本headless(布尔值或 "virtual")——无头模式(不建议用于反检测)mainWorldEval(布尔值)——启用主世界 JavaScript evalexecutablePath(字符串)——自定义 camoufox 二进制文件路径env(Record)——浏览器进程的环境变量virtualDisplay(字符串)——虚拟显示配置(仅限 Linux)disableCoop(布尔值)——禁用 Cross-Origin-Opener-Policy 标头debug(布尔值)——启用调试日志
步骤 2:询问保存位置
使用 AskUserQuestion 提供两个选项:
- browse.json ——向项目的
browse.json添加"camoufox"配置段。每当使用--runtime camoufox时都会自动应用。 - 命名配置文件 ——保存到
.browse/camoufox-profiles/<name>.json。使用--camoufox-profile <name>加载。适合按场景配置(例如“google”、“scrape”、“stealth”)。
如果用户选择命名配置文件,询问配置文件名称。
步骤 3:生成并写入文件
如果是 browse.json
先读取现有的 browse.json(如果存在)。将新的 camoufox 键合并进去。写入结果:
{
"camoufox": {
"geoip": true,
"humanize": true
}
}
如果是命名配置文件
如有需要,创建目录 .browse/camoufox-profiles/。仅写入配置对象:
{
"geoip": true,
"humanize": true,
"os": "windows"
}
步骤 4:展示用法
写入文件后,准确告知用户如何使用。
如果是 browse.json:
Run: browse --runtime camoufox goto <url>
The camoufox section is applied automatically.
如果是命名配置文件:
Run: browse --runtime camoufox --camoufox-profile <name> goto <url>
务必说明:“--camoufox-profile 标志仅在启动新服务时生效。如果服务已经在运行,请先使用 browse stop 停止服务。”
所有 CamoufoxConfig 选项
所有键在 JSON 中均使用 camelCase。它们会自动映射为 camoufox-js 内部使用的 snake_case。
| 键 | 类型 | 描述 |
|---|---|---|
os | string or string[] | 目标 OS 指纹 |
blockImages | boolean | 阻止加载图片 |
blockWebrtc | boolean | 阻止 WebRTC |
blockWebgl | boolean | 阻止 WebGL |
disableCoop | boolean | 禁用 COOP 标头 |
geoip | string or boolean | GeoIP 欺骗(true 或国家/地区代码) |
humanize | boolean or number | 类人延迟(true 或速度系数) |
locale | string or string[] | 浏览器区域设置 |
addons | string[] | Firefox 插件路径 |
fonts | string[] | 自定义字体 |
customFontsOnly | boolean | 仅使用自定义字体 |
screen | object | 屏幕尺寸范围({minWidth, maxWidth, minHeight, maxHeight}) |
window | [number, number] | 固定窗口尺寸 |
fingerprint | object | 指纹覆盖项 |
ffVersion | number | Firefox 版本 |
headless | boolean or "virtual" | 无头模式 |
mainWorldEval | boolean | 主世界求值 |
firefoxUserPrefs | Record | Firefox about:config 首选项 |
proxy | string or object | 代理配置 |
enableCache | boolean | 启用磁盘缓存 |
debug | boolean | 调试日志 |
excludeAddons | string[] | 要排除的插件 |
executablePath | string | 自定义浏览器路径 |
args | string[] | 额外的浏览器参数 |
env | Record | 环境变量 |
virtualDisplay | string | 虚拟显示器(Linux) |
护栏
- 生成配置前,始终先使用 AskUserQuestion。不要擅自假定用户偏好。
- 所有生成的 JSON 均使用 camelCase 键(CLI 会处理 snake_case 映射)。
- 切勿覆盖现有 browse.json 中
camoufox键以外的字段。 - 切勿在向用户显示的输出中包含代理凭据。仅将凭据写入文件。
- 除预设默认值外,不要包含用户未要求或确认的选项。
评论
支持 Markdown