Skip to content
HEYD66Public

About

千面 Facet|Windows 开源多实例浏览器,支持独立会话、环境配置、代理管理、浏览器扩展和实时宫格。

Resources

Stars

52 stars

Watchers

0 watching

Forks

Repository files navigation

千面 Facet

面向 Windows 的开源多实例浏览器。 在一个工作台中管理独立浏览会话、环境配置、代理节点与浏览器扩展,通过实时宫格集中查看多个网页。

下载最新版 · 版本记录 · 反馈问题

AI 或自动化工具接手本项目时,请先阅读根目录 AGENTS.md,再阅读 docs/AI-CONTROL-HANDOFF.md。

如果千面对你有帮助,欢迎点一下 Star,帮助更多人发现这个项目。

功能

功能 说明
独立浏览会话 各实例拥有独立的 Cookie、网站存储和登录状态,关闭后保留,重新启动可继续使用
实例管理 创建、重命名、启动、停止及批量操作;顶部标签支持滚动查看
批量创建 自定义数量和名称前缀,批量选择可用代理节点 / 出口 IP,为每个实例一键生成独立随机环境;支持进度、取消和逐项结果
实时宫格 多个网页同时实时加载,支持放大查看;另提供省资源模式,由用户选择
环境配置 配置语言、区域、时区和浏览环境参数,支持一键随机生成配置草稿,再确认保存
代理管理 导入订阅、Clash/Mihomo 配置及常见单节点格式,支持测速、查询出口 IP 和切换节点
浏览器扩展 导入解压扩展,按实例管理启用状态;提供扩展更新检查与弹窗支持
收藏与音量 网页书签、快捷入口、节点与 IP 收藏,以及实例音量和静音控制
外观主题 多套日间与夜间配色,默认「日光 / 黑金」,主题选择跨重启保存
软件更新 每次启动自动检查一次 GitHub 新版本,同一版本只主动提醒一次;下载及安装由用户确认
日志与诊断 系统日志、实例运行日志、运行输出和网络诊断,便于定位问题

当前支持 Windows x64,不设固定的实例数量上限。实际可同时运行的数量取决于硬件和网页负载;实时模式的资源需求随运行实例数量和网页内容增加。

下载安装

  1. 打开 最新版发布页。
  2. 下载 Facet-Setup-<版本>-x64.exe,运行安装向导。
  3. 安装后启动「千面 Facet」,点击「启动当前实例」开始使用。

安装包自带 Electron、Mihomo 和进程保护组件,无需安装 Node.js。新安装默认使用 D:\Facet,无可访问 D 盘时使用 C:\Facet。选择盘符或父文件夹后会自动补上 Facet 子目录,安装时创建文件夹;升级保留原安装路径。支持创建桌面与开始菜单快捷方式。

安装包目前未签名,Windows 可能显示发布者或安全提示。请从本仓库 Releases 下载;每个版本附带 .sha256 校验文件。

Get-FileHash "下载的安装包绝对路径" -Algorithm SHA256

快速使用

  • 新建实例:点击顶部 +,填写名称,选择本机直连或代理节点,按需设置环境。
  • 批量创建:进入「实例管理 → 批量创建」,调整数量、名称前缀和网络方式。代理模式可批量选择节点,按顺序循环分配或每个节点只用一次;点击「一键随机环境」预览各实例的独立草稿,再确认创建。可用状态来自最近检测记录,不保证不同节点具有不同出口 IP;中途停止保留已创建实例。
  • 配置环境:进入「环境配置」,编辑或一键随机后确认保存。保存会停止目标实例,随后手动启动。
  • 添加代理:进入「代理管理」导入订阅或节点,测速并查询出口 IP,再分配给实例。
  • 查看宫格:进入「宫格总览」,选择实时模式或省资源模式;放大后可返回宫格。
  • 导入扩展:进入「扩展中心」,选择包含 manifest.json 的解压扩展目录,确认权限后导入,再按实例启用。
  • 应用设置:分别选择日间和夜间配色,通过顶部按钮切换;同页可开启本机外部控制、设置节点 DNS 与出站网络。
  • 隐私检测入口:浏览页面的快捷网站栏右侧点击「检测」,展开 ipip.la、IPLeak、BrowserLeaks DNS、DNSLeakTest 和 IPPure;点击在当前实例内打开,使用该实例的网络与会话。菜单叠在实时网页上,不增加工具栏高度;停止或代理故障的实例需先启动才能跳转。
  • 自动化与 AI 接手:需要让 Playwright、外部脚本或其他 AI 控制千面时,先阅读 docs/AI-CONTROL-HANDOFF.md 和 docs/CONTROL-API.md。
  • 实例备忘录:实例管理的实例名称右侧可直接点击「备注」,侧栏和更多菜单也保留入口。可编辑多行备注,最多 10000 个字符;保存不停止实例,列表显示摘要并支持搜索备注。
  • 导出与导入:实例更多菜单可单独导出,实例管理勾选多个实例后点击「导出所选」批量导出;只短暂停止所选实例及其后台任务,生成并校验 .facetbackup 后恢复原运行实例;整个应用和其他实例保持运行。出口国家使用已有记录,不额外联网检测。可选「导出成功并校验后删除原实例」,默认关闭;只有备份生成且读取校验通过后才删除所选实例及其浏览数据,其他实例保留。取消保存、导出失败或备份校验失败均保留原实例;删除失败会说明保留或待清理状态。在另一台设备点击「导入实例」,选择文件后查看原出口国家、重新选择代理或明确选择直连。先导入并保存实例数据,再按需同步新出口的时区和语言;同步失败不会取消导入,保留原设置并显示提醒,可在环境配置中再次同步。导入创建新实例、保留备注与指纹配置,名称重复自动添加后缀,默认保持停止。

导出说明默认折叠;实例列表只显示备注按钮,正文点击后查看。无法可靠访问缓存的过长数据目录会明确拒绝操作,原数据保留。

默认每个实例导出一个 .facetbackup 文件,文件名包含实例名、日期时间(毫秒)和随机防重后缀;也可选择合并导出。导入支持多文件选择,兼容原有合并备份,每个实例可单独选择代理。分文件导出时所有文件完成校验并保存后才执行删除;失败保留全部原实例。

实例备份包含 Cookie、网站持久存储、IndexedDB、缓存存储和网站文件;不导出插件程序、启用绑定或原代理凭据。备份没有密码保护,包含登录资料,请妥善保存,仅导入可信文件。两端需使用相同操作系统和 Electron 版本。导出完成或失败后恢复所选实例原运行状态,浏览器保存的密码数据库、网页未提交内容和内存状态不在备份范围;网站可能因设备、IP 变化或登录凭据过期要求重新验证。首次启动前的导入会话 Cookie 在本机通过系统加密暂存;首次成功启动后移除该任务,后续按网站本身的会话有效期处理。

关闭实例标签会停止该实例并保留登录资料。删除实例会清除该实例的配置与浏览存储,需要单独确认。退出应用会正常停止其运行实例;再次打开应用时,会依次启动在实例管理中开启“随应用启动”的实例;开关按实例独立保存,默认关闭。

代理节点和订阅由用户提供。代理配置失败时会显示错误,不会自动切换为本机直连。全局节点库更新后,已分配给实例的节点副本需重新分配才能更新。

节点 DNS 与 Clash TUN 并存

在「应用设置 → 节点 DNS 与出站网络」配置四种 DNS 模式和出站路由;非默认配置时提供「重置为默认」。默认使用系统 DNS 和系统路由;显示面板不会自动修改已有配置。实例启动、连通性、出口 IP、时区查询和下载测速共用这套设置:

  • 节点域名解析:默认使用系统 DNS,保持原有启动行为。安全解析仅用于公网节点域名,查询沿系统网络;内网节点和 IP 节点不做额外解析。可选四种模式:

    • 系统 DNS(默认):用系统解析节点域名。
    • 自动兼容:系统解析正常时沿用系统 DNS;返回常见 Fake-IP(198.18.0.0/15,含 IPv4 映射 IPv6)、解析失败或绑定网卡时使用安全 DoH。DoH 失败时回退系统 DNS,继续尝试启动,仍需验证连通性;系统仍返回 Fake-IP 时可能失败。
    • 安全 DNS:公网节点域名优先使用 DoH;失败时回退系统 DNS,继续尝试启动,仍需验证连通性。
    • 严格模式:公网节点域名只用 DoH;失败或只返回内网 / 保留地址时直接报错、不启动代理,不回退系统 DNS。

    这里的模式只决定千面如何解析节点服务器的域名,不改变网页内容访问网站时的 DNS 路径;网页 DNS 泄露检测的结果不能用来判断这里的设置是否生效。回退时运行日志的「节点连接」一行会注明已回退系统 DNS。

  • 节点出站路由:默认跟随系统路由及节点原配置。宿主 Clash TUN 接管节点连接时,可选择「绕过宿主 TUN」,自动选择已连接、有默认路由的物理网卡;也可手动指定网卡。选不到网卡时明确报错,不悄悄改用其他路由。需要公司 VPN、上游代理或节点已有网卡配置时,保留跟随系统模式。

  • 生效时间:保存不会重启当前实例;下次实例启动或检测使用新设置。每次重新启动或检测重新解析,解析结果只写入该次内核的临时配置,不改节点库里的域名、TLS/SNI 或原协议参数。本机 IP 直连、订阅更新及系统网络配置保持原行为。

此功能不提供运行中自动切换网卡或定时刷新节点解析;网络变化或节点地址变动后请手动重新启动目标实例。公网检测仍可能因检测服务或节点链路超时而失败,不保证所有节点、多网卡或 VPN 环境均兼容。

浏览器 DNS 预解析防护

默认关闭网页的 DNS 预取提示(HTML、响应头及动态插入的 dns-prefetch),避免这类提示绕过实例代理调用本机解析。实例词典下载延后到网络模式配置完成后;代理实例通过自己的代理下载,明确选择直连的实例仍使用直连。导入辅助窗口不会提前释放词典下载;启动失败时保留延后状态。词典语言有独立恢复记录,异常退出后可恢复,确认原语言已写回浏览器偏好文件后才清理记录。

这项防护不需要新增开关,不禁止普通直连解析,也不修改系统 DNS、Clash 或现有节点 DNS 模式。QUIC 禁用和 WebRTC 非代理 UDP 防护继续生效。应用自身的更新等直连服务仍可解析域名。

npm.cmd run test:browser-network 使用隔离 Electron 配置和本机可控上游,对比修复前后的真实解析日志,并验证实际 Mihomo、HTTPS、WebSocket、弹窗、直连、代理故障及跨进程语言恢复。检测网站报告的 DNS 可能来自节点、中转或本机路径,单凭 DNS 所属地区无法定位来源,也不能证明无泄露;上述回归不代表已验证所有节点协议和第三方扩展。

软件更新

Windows 安装版在主界面加载完成后立即异步检查一次更新,运行期间不定时轮询。发现更高的稳定版本时弹出「查看更新 / 稍后」窗口;同一版本的提醒记录保存在本机,重启后不重复弹窗。若正在编辑其他弹窗,会等它关闭后再提醒。关闭提醒后仍可通过顶部「有更新」或「应用信息 → 软件更新」查看新版。

更新不会自动下载、停止实例或安装。点击「下载新版」,下载校验完成后选择「退出并更新」,确认后正常停止实例、退出并安装,保留实例配置、登录资料与扩展。

  • 0.2.1 / 0.2.2 可通过「应用信息 → 软件更新」手动检查更新。
  • 更早版本请手动安装当前最新版。
  • 使用默认数据目录时,更新后会重新打开应用,实例需手动启动。
  • 使用 --user-data-dir=绝对路径 时,更新后请通过原入口启动,以保持同一数据目录。
  • 无法访问 GitHub 时,自动检查不弹出错误提示,可在应用信息中查看状态并手动重试。

更新源是本项目的公开 GitHub Releases,不要求用户提供 GitHub Token。更新清单使用 SHA512 校验下载文件;草稿与预发布版本不作为正式更新。

数据与隐私

全新安装的实例资料和配置保存在本机:%APPDATA%\Facet。已有安装会自动沿用原数据目录,升级不移动资料,卸载默认保留资料。

位置 内容
instances.json 实例名称、最近网址、环境与网络配置
Partitions/ 实例与控制界面的持久浏览存储
proxy-library.json、proxy-sources/ 代理库和来源配置,可能包含订阅令牌、节点密码
workspace-tools.json 收藏与工作区工具配置
app-settings.json 退出确认偏好及已提醒的更新版本
node-network.json 节点 DNS 与出站网络选择;保存已有设置时保留 .bak 备份
global-events.json、runtime-output.json 系统日志与运行输出

不要分享整个数据目录。 代理凭据在本机配置中可能以明文保存;导出资料和日志前请检查敏感信息。安装包不包含开发者账号、代理节点或个人扩展资料。

自动更新检查会访问 GitHub;订阅、测速、IP 查询及网页访问会联系各自的服务。千面不提供代理服务,也不上传本机实例配置与登录资料。

环境配置说明

环境设置用于区分实例的浏览参数,可能影响网站兼容性。部分高级覆盖会改变网页读取的图形、音频或布局结果,遇到异常可关闭相应选项并重启实例。

WebRTC 使用限制非代理 UDP 的策略,可能影响网页语音、视频会议或 P2P 功能。代理、环境覆盖和 WebRTC 设置都不保证匿名、防检测或完全无泄漏。千面不提供自动注册、系统代理或 TUN 功能。

源码开发

技术栈:Electron + JavaScript + WebContentsView + Mihomo。控制界面和实例网页进程隔离;远程网页不具备 Node.js 或管理 IPC 权限。

需要 Windows x64 和 Node.js 22.12+:

npm.cmd ci
npm.cmd run setup:core
npm.cmd start

只使用本机直连时可跳过 setup:core。该脚本从官方固定版本获取 Mihomo,并校验来源和文件哈希。也可直接双击项目内的 start.cmd:首次启动或依赖缺失时自动执行 npm.cmd ci,按锁定版本安装;依赖完整时直接启动,安装失败则保留错误信息。该入口仍需先安装 Node.js,首次安装依赖需要网络;开发运行不执行安装版在线更新。

目录 用途
src/main/ 实例生命周期、会话、代理、环境、扩展、IPC 和更新
src/renderer/ 控制界面、宫格、主题、表单及交互
resources/ 图标、Mihomo 发行资源和进程保护组件
scripts/ 启动、检查、构建与发布脚本
tests/ 单元、界面及真实 Electron / 安装包验证
docs/ 专项设计和验证资料

验证与构建

npm.cmd run check
npm.cmd run test:updates
npm.cmd run test:packaging
npm.cmd run test:core
npm.cmd run build:process-host
npm.cmd run build:installer

安装包和校验文件生成在 release/。真实安装版测试使用独立数据目录,可运行:

npm.cmd run test:installed -- "安装目录\Facet.exe"
node tests/theme-installed.cjs "安装目录\Facet.exe"
node tests/github-update-installed.cjs "安装目录\Facet.exe"

Electron 验证使用本机页面和临时数据;具体测试是否使用模拟 IPC,以测试文件的说明为准。测试结果不能替代真实节点和所有网页的兼容性验证。

发布新版

递增版本,同步 lockfile,完成验证及构建后提交、推送代码,再上传 Release:

npm.cmd version patch --no-git-tag-version
npm.cmd run check
npm.cmd run test:updates
npm.cmd run build:installer
# 提交并推送代码后,传入本次更新说明文件
npm.cmd run release:publish -- notes.md

发布脚本校验版本、安装包与清单,在草稿中上传安装包、.blockmap、latest.yml 和 .sha256,确认文件完整后公开发布。仅提交代码不会产生客户端可下载的更新。

开源许可

千面项目代码采用 MIT License。随包分发的 Mihomo 遵循其 GPL-3.0 许可,并附带原许可证、对应版本源码归档和来源校验信息;其他依赖遵循各自许可证。

本项目按现状提供,用于学习研究和合法用途。请遵守所在地法律法规及所访问网站的服务条款,自行评估代理来源、扩展权限和账号使用风险。

About

千面 Facet|Windows 开源多实例浏览器,支持独立会话、环境配置、代理管理、浏览器扩展和实时宫格。

Resources

Stars

52 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages