Skip to content

浏览环境 ​

给每个账号一个互相隔离的「浏览器」:Cookie、登录状态、网络出口、指纹都各用各的。

它要解决的问题 ​

同时运营多个店铺、多个社交账号时,最容易出事的不是密码,而是被平台关联:同一台电脑、同一个出口 IP、同一份 Cookie,平台一眼就能看出这几个号是一个人。

浏览环境把这三样拆开:

隔离项做法
Cookie / 登录状态 / 本地存储每个环境一个独立的数据目录,互相完全看不到
网络出口每个环境可以固定走自己的代理,不受其他设置影响
浏览器指纹UA、语言、时区、CPU 核数、Canvas、音频、WebRTC 按环境各自设置(显卡型号保持真实)

这不是「绝对不会被发现」

这些措施降低的是被自动关联的概率,不能保证任何平台都不会判定关联。真正容易翻车的往往是行为本身:同一个账号换着环境登录、同一份素材反复发。下面的防关联就是针对第二类。

默认环境与自建环境 ​

默认环境自建环境
数据沿用原来的内置浏览器,已有的登录不会丢全新的独立数据目录
网络出口跟随全局代理规则固定出口 / 跟随全局规则 / 直连,三选一
指纹不改,保持本机的真实值;但 UA 和品牌会改成 Chrome 的写法(见对网页隐藏内嵌浏览器特征)按环境配置指纹保护
能否删除不能可以

新建与切换 ​

标签栏最左的环境按钮点开下拉:搜索环境、按分组浏览、新建、临时环境、管理。每个环境显示状态:运行中(有网页开着)、已休眠、未启动。

点一个环境就切过去。切换时当前环境的网页留在后台继续运行,不会重新加载;标签栏会淡淡染上当前环境的标识色,免得登错环境。

新建环境 ​

默认一屏就够:

  1. 名称和颜色
  2. 网络出口:
    • 固定出口:类型下拉选 HTTP 或 SOCKS5,填主机、端口,需要的话再填账号密码。可以直接粘贴整段地址(socks5://用户:密码@主机:端口、主机:端口:用户:密码),会自动拆进各个框。
    • 跟随全局规则:和默认环境用同一套代理规则。
    • 直连:不经过任何代理,网站看到你的真实 IP,只隔离 Cookie 和登录状态。
  3. 指纹:默认已经是一套合理的自动配置,细项在「高级设置」里调

高级设置 ​

项说明
指纹见下方指纹
分组环境多了用来归类,下拉里按分组显示
起始页打开这个环境时默认访问的网址
上游不可用时固定出口连不上时:阻止访问(推荐)或改走直连
账号归属把金库里的账号绑定到这个环境,见防关联
备注随便记

为什么推荐「阻止访问」

固定出口的代理一旦掉线,如果悄悄改走直连,网站就看到了你的真实 IP——这恰恰是用环境想避免的事。宁可打不开,也不暴露。

代理的账号密码只存本机加密库,不以明文落盘,也会随主密钥一起轮换。

管理环境 ​

标签栏环境下拉里点「管理」:列出所有自建环境及其状态、标签数、网络出口、绑定账号数、最近使用时间。

操作说明
切换切到该环境
编辑改名字、出口、指纹等;改出口后正在运行的环境立即按新出口走
休眠关掉它所有网页释放内存,登录状态保留,网址记着,切回来时重新加载。正在使用的环境不能休眠
删除带二次确认:该环境的 Cookie、登录状态、本地存储一并永久删除,账号归属解除,无法恢复。删除当前环境会自动回到默认环境

内存 ​

每个运行中的环境是一套独立的浏览器进程,通常占几百 MB 内存。环境下拉底部会显示「运行中 N 个环境 · 约 X」(不含 Sigil 界面本身,每次打开下拉时统计一次)。

Sigil 不限制同时运行的环境数,也不会自动休眠你的环境——挂着的下载、直播、没提交的表单被悄悄收掉,比多占点内存更糟。内存吃紧时自己把暂时不用的环境休眠即可。

临时环境 ​

替代「无痕」:一个用完即焚的独立环境。

  • 打开:环境下拉里点「临时环境」,或 Ctrl+Shift+N
  • 有自己独立的 Cookie 和数据目录,和其他环境互不可见
  • 关掉最后一个标签,整个环境连同 Cookie、历史、缓存一起销毁;也可以从下拉里点环境旁的 × 整体关闭
  • 临时环境不开启指纹保护(核数、语言、时区等保持本机真实值),网络出口跟随全局代理规则;UA 与品牌同样会 Chrome 化

防关联:账号绑定到环境 ​

最常见的关联方式是同一个账号在不同环境登录。所以可以把金库里的通用密码账号绑定到某个环境,一个账号只属于一个环境。

在另一个环境里碰到这个账号时:

  • 打开它的站点或填充它的密码之前,先弹出提醒:「这个账号属于『美区店铺 A』」,说明在当前环境登录会让两个环境被关联。
  • 你可以选「在『美区店铺 A』中打开」(直接切过去),也可以选「仍在当前环境打开 / 填充」——这是你明知风险后的决定。
  • 即使绕过界面直接调用,填充也会被后端拒绝;只有你在提醒里明确选了「仍在当前环境填充」才放行,并在审计里留下记录:这条填充的详情里带 cross_env: true,事后能查到哪次是明知会关联还坚持填的。

没有绑定的账号不受影响,所有环境都能自由使用。绑定有账号的环境,新标签页上它们的站点排在最前。

出口所在地 ​

地址栏右侧的胶囊会直接显示当前网页从哪儿出去,不用手动检测:

情况胶囊显示
固定出口环境US Los Angeles(国家码 + 城市),新标签页上也显示
直连环境CN Zhanjiang(本机网络的出口)
默认环境「按规则」代理 · US Los Angeles 或 直连 · CN Zhanjiang —— 同一个环境里,不同网站可能一个走代理、一个直连,胶囊跟着当前网页变;新标签页上仍显示代理模式
固定出口连不上、设置为改走直连直连(固定出口不可用)· …,黄色
固定出口没配好出口不可用,红色(网页不会打开)
  • 胶囊里不显示 IP,免得截图时带出去。点开胶囊,在环境面板 / 代理面板的「当前网页的出口」里看详情:地区(国家 · 省州 · 城市)、IP、运营商与 AS 号、走代理还是直连(以及用的哪个上游)、延迟、多久前检测,可以「重新检测」。
  • 去向按当前网页的域名判定,和网页真正连接时用的是同一套规则,所以「按规则」时显示的就是这个网页实际用的出口。
  • 检测会沿这条路访问 Cloudflare(IP、国家、延迟)和 ipinfo.io(省州、城市、运营商),它们只会看到出口 IP,不涉及账号和页面内容。两边看到的 IP 对不上时(轮换出口的代理池),只显示国家,不拿另一个出口的城市充数。
  • 结果按「走哪条路」缓存 10 分钟:同一条路上换网页不会重复检测。改了代理设置或环境出口会自动重新检测。
  • 新建 / 编辑弹窗里也有「检测出口」,还没保存也能测,密码框留空时沿用已保存的密码。
  • 检测不通会给出原因:代理没运行、地址或端口不对、账号密码被拒、超时。

切换前就知道各环境在哪 ​

环境下拉和「环境管理」列表里,每个固定出口 / 直连的环境都标着出口所在地(例如 US Los Angeles),切换之前就能确认这个环境从哪个国家出去:

  • 下拉一打开先显示上次的结果,再在后台补测没测过或已过期的环境。补测只走网络探测,不会为此启动环境的浏览器,休眠的环境照样休眠。
  • 下拉里地点替换了原来的「HTTP · 127.0.0.1:7890」这行,鼠标悬停在上面还能看到出口设置;管理列表的「网络出口」列两样都显示。
  • 按规则分流的环境没有固定出口(取决于打开哪个网站),照旧只显示出口设置。

疑似机房 ​

出口 IP 属于云服务商或机房(AWS、Google Cloud、Vultr、DigitalOcean、阿里云、腾讯云等),会在地点后面标一个黄色的「疑似机房」,详情里多一行「类型」。

很多网站看到机房 IP 就直接判定为代理访问,跟指纹设置无关。需要家庭宽带类型的出口,可以换成住宅代理。这是按 AS 号和运营商名称做的粗判,只作参考:没标不代表一定是住宅 IP,标了也可能是误判。

指纹 ​

自建环境的指纹在新建 / 编辑弹窗的「高级设置 → 指纹」里调,摘要会实时显示在卡片上。

项做什么默认
系统UA 呈现为 Windows 或 macOS 上的 Chrome,去掉 Edge / WebView2 品牌,Client Hints 一并改;大版本号跟本机引擎保持一致Windows
语言浏览器语言与 Accept-Language跟随出口
时区Date 与 Intl 的时区跟随出口
CPU 核数对网页报告的核数,并按核数配套设备内存档位(2 / 4 / 8 GB)本机核数与 8 取小
封堵 WebRTC在浏览器层禁止不经代理的连接,网页无论怎么调用都拿不到你的真实 IP开
指纹加噪给 Canvas、音频指纹加不可见的噪声;显卡型号不改开

跟随出口 ​

语言和时区选「跟随出口」时,打开网页前 Sigil 会先经这个环境的出口探测:

  • 时区按出口 IP 所在城市取(例如出口在洛杉矶就是 America/Los_Angeles),和检测网站根据 IP 算出的时区一致。只按国家取会出问题:美国有 4 个主要时区,按国家一律用纽约时间,出口在洛杉矶时会被判定时区异常。城市级时区取不到时,退回该国的常用时区。
  • 语言按出口国家取常用语言(覆盖 40 多个常见国家 / 地区)。
  • 探测不到出口国家时,语言和时区保持本机,不会瞎猜。
  • 出口变了(比如换了代理)但标签还开着,「当前网页的出口」里会提示「出口地区变了:当前标签的时区 / 语言是按『美国』定的,现在出口在『中国』」。关掉重开标签,新标签就会跟着新出口走。

WebRTC 为什么默认封堵 ​

WebRTC 是浏览器的点对点通信,它会绕过 HTTP 代理走 UDP,把你的真实公网 IP 直接暴露给网页——哪怕你的网页流量明明走着代理。

封堵是在浏览器层做的(写进这个环境的浏览器配置,禁止不经代理的连接),不是在网页里拦截调用:网页里的拦截只挡得住正常调用,检测网站换个调用方式就能拿到真实 IP。我们实测过四种调用方式,封堵后都拿不到任何候选地址。

代价:网页里的视频通话、点对点传输这类功能多半会不可用。需要时在这个环境的指纹设置里关掉「封堵 WebRTC」;改动要等这个环境的网页全部关掉后重新打开才生效。

加噪怎么做的 ​

  • 噪声每个环境各不相同、同一环境内始终一致。两个环境的 Canvas、音频指纹不会撞,网站无法靠它们把环境关联起来;同一环境里重复读取结果相同,不会因为「每次不一样」反而显得可疑。
  • Canvas 只改文字、曲线边缘的像素(和左右上下邻居颜色都不同的那些),纯色区域和直边一个像素都不动。检测网站常用的手法是画一块纯色再读回来比对,纯色被改过就认定在加噪。
  • 只改最低位,肉眼看不出。
  • 改写浏览器函数时不留痕迹:函数名、参数个数、toString() 显示的 [native code] 都和原生的一样,页面和 Worker 里都是。
  • 加噪算法是定型的:同一个环境的 Canvas、音频指纹在 Sigil 升级后保持不变。否则每次升级,网站看到的都是「这个账号突然换了一台设备」。

为什么不改显卡型号 ​

早期版本会按环境从常见型号里挑一块显卡报给网页(如 RTX 3060),结果在 PixelScan 上被判定指纹异常:网页还能通过 WebGPU 读到真实的显卡厂商和架构(比如 Intel 的 gen-12lp),两边对不上。WebGPU 这一层改不干净,所以现在显卡型号保持真实,WebGL 和 WebGPU 自然一致。环境之间仍然靠 Canvas、音频指纹区分。

对网页隐藏内嵌浏览器特征 ​

下面这些对所有环境(默认、临时、自建)都生效,目的是让网页看到的和普通 Chrome 一致,不被识别成「内嵌浏览器」:

项做法
UA 与品牌去掉 Edg/,请求头 sec-ch-ua 和页面里的 navigator.userAgentData 都只报 Chromium / Google Chrome,不再带 Microsoft Edge、Microsoft Edge WebView2。完整版本、平台版本、架构保持真实
WebView2 宿主对象页面读不到 window.chrome.webview,连属性名都查不到;chrome.loadTimes()、chrome.csi() 照常可用
Tauri 全局标记ipc、isTauri、__TAURI_INTERNALS__、__TAURI_EVENT_PLUGIN_INTERNALS__ 根本不被创建(在新建标签时、打开网页之前就把 Tauri 注册的启动脚本移除)
窗口外框高度window.outerHeight 比 innerHeight 高 87,和真实浏览器(带标签栏、地址栏)一致

这解决了一类很具体的问题:有的网站会用 chrome.webview.hostObjects 判断「是不是在自家桌面客户端里」,误判后整页空白,在这里打不开、外部浏览器却能打开。

默认环境和临时环境只做以上这些,不改核数、语言、时区、Canvas 这类真实值;如果这一步因故失败,Sigil 照常打开网页(和自建环境「指纹没生效就不加载」相反,因为默认环境本来就不开启指纹保护)。

登录弹窗与 iframe ​

  • 登录弹窗:网页用 window.open 开的带尺寸弹窗(第三方登录窗之类)和打开它的标签用同一套指纹、同一个出口,window.opener 照常可用,登录结果能正常交回原页面。弹窗会跟着打开它的标签一起关闭(环境休眠、删除时同样),应用锁定时一并隐藏。自建环境的指纹没能用到弹窗上时,弹窗直接关闭,不会用真实指纹打开。
  • 跨站 iframe:嵌在页面里的其他网站(验证码、支付框之类),以及它们自己起的 Worker,看到的值和页面一致。

指纹自检 ​

状态卡片和代理面板里的「开始自检」会让当前网页读一遍它看到的你,约需 5 秒。结果分三块:

  1. 一句话结论:指纹保护正常(绿)/ 有几处需要留意(黄)/ 发现几个问题(红)。
  2. 两类检查,有问题时下面直接写怎么办:
    • 真实 IP:网站能不能经 WebRTC 拿到你的真实 IP。按最坏情况测(先把连接策略改回「全部放行」再收集候选,模拟检测网站的绕过手法),不会误报「已封堵」。 泄露时提示去环境设置里打开「封堵 WebRTC」。
    • 信息是否一致:网站从后台线程(Worker)读到的时区 / 语言 / 核数等和前台是否一致、画布指纹是否稳定、能不能看出这是嵌在软件里的浏览器。 如果当前网页自己改动了浏览器功能(例如百度系页面会改写 Function.prototype.toString),会提示「检测结果可能不准,换个普通网页再测」——Sigil 自己的改写不留这种痕迹。
  3. 网站看到的设备:系统和浏览器版本、语言、时区、CPU 核数和内存、显卡型号。

UA 原文、画布 / 音频特征码、后台线程读数、被改动的函数名收在「技术细节」里,默认折叠。特征码可以用来核对「两个环境确实不同」:不同环境的特征码不一样,网站就认不出是同一台电脑。

默认环境和临时环境不开启指纹保护,结论处会写「这个环境没有开启指纹保护,下面是网站看到的本机信息」,不按异常判定; 直连访问时网站本来就看得到你的 IP,只做灰色说明。只有当前网页走代理、却能经 WebRTC 拿到真实 IP 时才标黄提醒,建议新建一个浏览环境来打开这个网站。

修改后什么时候生效 ​

保存指纹设置后,已经打开的标签仍然是旧指纹:关掉重开,或让环境休眠再唤醒才生效。其中语言还有一层限制:它是浏览器启动参数,同一个环境里只要还有网页开着,新标签沿用已定的值,等环境里的网页全部关掉再打开才按新语言运行。

已知限制 ​

限制说明
仅 Windows 生效指纹保护依赖 WebView2 的调试协议,目前只在 Windows 版生效
弹窗里的第一个网页由 Sigil 重新打开为了先把指纹用上,弹窗的第一次跳转会被拦下、打好指纹后再由 Sigil 打开同一个网址。少数用表单 POST 直接提交进弹窗的页面(个别支付 / 银行验证)会变成普通打开,提交的内容会丢;第一个网页的请求里也不带来源页(Referer)
部分指纹面未处理字体、屏幕尺寸与色深、媒体设备枚举等保持本机真实值
macOS 预设只改到 UA 这一层在 Windows 上选 macOS 预设,UA、Client Hints 是 macOS 的,但显卡(Direct3D11)、字体等仍是 Windows 的,检测网站能看出系统对不上。指纹设置里和本机系统不一致的预设会带警示图标,选中时也会提示;没有特别需要请用 Windows 预设
跨 iframe 读函数原文能看出改写同一页面里直接读,被改写的函数和原生的一模一样;但从另一个 iframe 取它的 toString 来读,函数名会变成空的。专门这样做的反篡改检测能发现
像素级精确的网页可能有偏差修图、取色这类依赖精确像素的网页,加噪可能带来 1 个色阶的误差,这时关掉「指纹加噪」
指纹应用失败不会放行指纹没能生效时,Sigil 选择不加载网页并报错,而不是用真实指纹偷偷打开
做不到「完全无法识别」常见的检测手段都已挡住(见下),但专门做反篡改检测的站点仍可能从我们补丁的细节(跨 iframe 读函数原文、报错堆栈)看出来,这是页面脚本层补丁的通病
和真实 Chrome 仍有的差异语音列表只有 3 条(真实 Chrome 约 22 条,缺 Google 的语音);Notification.permission 是 denied(真实 Chrome 是 default);完整版本的补丁号由内置引擎决定,可能和你本机 Chrome 差几位。这几项要伪造数据才能抹平,伪造得不像反而更可疑,所以没做
默认环境的 WebRTC 不封堵默认环境保持真实,会暴露公网 IP;需要封堵请用自建环境
机房 IP 会被认出是代理检测网站按 IP 归属判断(如 PixelScan 显示「hosting」),这是出口 IP 的性质,软件改不了;需要更像真人请用住宅代理

实测过的检测站点 ​

2026-10 实测(默认环境走全局代理,自建环境「美区店铺 A」固定出口在洛杉矶):

站点默认环境自建环境
bot.sannysoft.com全部通过:WebDriver 不存在、chrome 对象存在、UA 不含 Edge,Fingerprint Scanner 各项均为 ok—
CreepJS0% headless、0% stealth;另有 25% like headless,原因未深究—
BrowserScan 机器人检测Normal:Webdriver、User-Agent、CDP、Navigator 全部通过—
PixelScan浏览器、指纹、机器人三项通过;时区判定异常(默认环境不改时区,本机是北京时间而出口在美国,属预期);「检测到代理」浏览器(Chrome 154 on Windows)、地区(United States / Los Angeles)、指纹(通过)、机器人四项通过,WebRTC 不暴露真实 IP;只剩「检测到代理」(机房 IP)
Cloudflare(nowsecure.nl)正常打开,没有被拦在挑战页前—
自建测试页:带尺寸的登录弹窗弹窗为 Chrome UA、不带 WebView2 品牌,与主页面一致弹窗与主页面的 UA、品牌、时区、语言、核数、内存全部一致,无宿主标记,window.opener 回传正常
自建测试页:跨站 iframe 与其中的 Worker—iframe(另一个站点)和它起的 Worker 的 UA、品牌、时区、语言、核数、内存都与页面一致,无宿主标记
Cloudflare Turnstile 官方演示页显示成功。但它用的是 Cloudflare 的测试密钥,恒定放行,不能当作真实检测的证据—

没有测过的

DataDome 没有官方公开的测试页,没有对它做过测试;真实的电商 / 票务类站点的防护强度各不相同,以上结果不能保证它们放行。

相关章节 ​

若依科技工作室 · 承接后台管理 / 桌面软件 / 全栈 / 小程序定制开发 · 技术服务咨询