返回知识中心
平台

在 macOS 和 Linux 上运行 Windows 浏览器配置文件

如何在 macOS 或 Linux 上运行时呈现一致的 Windows 浏览器配置文件,并验证主机、网络和应用边界。

BotBrowser Team

文档中心

想直接看维护中的产品文档?

这篇文章对应的主题已经有文档中心页面。需要规范流程、当前参数和长期参考时,优先看 docs。

在 macOS 或 Linux 主机上加载 Windows 配置文件,会让会话呈现浏览器可见的 Windows 平台值,例如 navigator.platform、Client Hints 和 User-Agent 系列。BotBrowser 不会把宿主变成 Windows,所以字体、渲染、显卡、显示缩放和网络行为仍需在每台主机上实测。

要点摘要

用 --bot-profile 启动,把 --bot-timezone、--bot-locale 和 --bot-languages 设置为与代理一致,并使用 defaultViewport: null 让配置文件控制视口。然后在同一会话中检查平台字符串、User-Agent 系列、Sec-CH-UA-Platform、字体和屏幕指标。

本文目录

简介

Windows 是常见的桌面目标,但市场估计会因日期、地区和测量方法而变化。在 Linux 或 macOS 上,Windows 配置文件适用于应用测试明确覆盖 Windows 浏览器行为的场景。

从真实 Windows 安装捕获的 BotBrowser 配置文件包含文档化的浏览器可见平台值。在 macOS 或 Linux 上加载时,这些值是需要在实际会话中测量的输入;主机、显示、图形、网络和应用仍可能影响观测结果。

隐私影响:为什么在非 Windows 主机上使用 Windows 配置文件

测试论据很直接:选择与应用必须支持的文档化平台行为相符的配置文件。不要为了让流量看起来普通或推断访客而选择配置文件。经过授权并记录主机、网络和应用边界时,Linux 主机可以运行 Windows 配置文件测试。

对于隐私研究人员,从非 Windows 主机呈现 Windows 身份的能力使受控实验成为可能。你可以研究网站如何为 Windows 用户调整行为,测试平台特定的内容交付,以及分析使用平台信号的追踪系统,所有这些都不需要维护 Windows 机器。

对于本地化或兼容性测试,将配置文件与明确选择的代理、时区和区域设置结合,并分别验证每项输入。这些设置描述测试场景,不代表区域身份或普遍兼容性。

技术背景

Windows 特定浏览器信号

真实的 Windows 浏览器会话通过众多信号暴露其平台:

Navigator 和 User-Agent:navigator.platform 返回 "Win32"(即使在 64 位系统上,出于兼容性考虑)。User-Agent 字符串包含 "Windows NT 10.0" 表示 Windows 10/11。navigator.userAgentData.platform 返回 "Windows",平台版本通过 getHighEntropyValues() 可用。

Client Hints:Sec-CH-UA-Platform HTTP 头在每个请求中报告 "Windows"。Sec-CH-UA-Platform-Version 提供特定的 Windows 版本(如 Windows 11 为 "15.0.0",Windows 10 为 "10.0.0")。

字体环境:Windows 附带数百种字体,包括 Segoe UI(系统字体)、Calibri、Cambria、Consolas、Arial、Times New Roman、Verdana、Tahoma 等。通过 CSS 或 Canvas 的字体枚举揭示这个特定集合。

渲染特征:文本结果可能受浏览器版本、主机图形、字体和显示配置影响。Canvas 观测应在每个支持的主机上测量,不能视为确定的平台标识。有关文本测量如何把这些字体和渲染差异变成亚像素信号,请参阅文本测量指纹识别:亚像素追踪技术,其中介绍了 measureText() 暴露的内容以及配置文件的适用限制。

屏幕指标:常见的 Windows 屏幕分辨率(1920x1080、1366x768、2560x1440)和 devicePixelRatio 值(通常 1.0 或 1.25)与 macOS(Retina 显示器常见 DPR 为 2.0)和 Linux(变化很大)不同。

窗口外壳:浏览器窗口装饰(标题栏高度、滚动条宽度、窗口边框)的尺寸在操作系统间不同。outerWidth - innerWidth 和 outerHeight - innerHeight 计算揭示这些尺寸。

为什么简单伪装失败

将 User-Agent 字符串更改为报告 Windows 不会改变字体环境、渲染输出、屏幕指标、窗口外壳尺寸或 Client Hints。一个声称是 Windows 但以 FreeType 特征渲染文本并报告 Linux 字体的浏览器呈现了矛盾的信号。通过跨信号分析很容易识别这些不一致。

常见方法及其局限性

User-Agent 覆盖

Playwright 和 Puppeteer 等框架允许设置自定义 User-Agent 字符串。这改变了 HTTP 头和 navigator.userAgent,但其他所有信号保持不变。navigator.platform、字体列表、渲染输出和 Client Hints 都继续反映实际主机操作系统。

Linux 上的 Windows 虚拟机

在 Linux 服务器上的虚拟机中运行 Windows 提供真正的 Windows 信号,但资源成本高。每个 VM 需要 4-8 GB RAM、专用 CPU 核心和 Windows 许可证。在规模化时,这种方法与基于配置文件的模拟相比成本过高。

Wine 或兼容层

通过 Wine 在 Linux 上运行 Windows Chrome 产生混合信号环境。一些信号反映 Windows,其他反映底层 Linux 系统。结果是比原生运行任一平台更糟糕的不一致集。

DevTools Protocol 覆盖

Chrome DevTools Protocol 允许覆盖 User-Agent 和一些平台属性。然而,这些覆盖在浏览器初始化之后应用,不影响渲染管线、字体系统或初始导航上的早期 HTTP 头(如 Client Hints)。

BotBrowser 的方法

从 Windows 系统捕获的 BotBrowser 配置文件在单个包中包含文档化的 Windows 浏览器值。加载 Windows 配置文件会在浏览器启动时应用这些值,但不会把主机变成 Windows。

Windows 配置文件控制什么

当你在 Linux 服务器上加载 Windows 11 Chrome 配置文件时:

  • navigator.platform 返回 "Win32"
  • navigator.userAgent 包含 "Windows NT 10.0; Win64; x64"
  • Sec-CH-UA-Platform 头报告 "Windows"
  • Sec-CH-UA-Platform-Version 报告捕获的 Windows 版本
  • 字体可用性可以在实际会话中与捕获的配置文件记录比较,并受主机、浏览器版本、权限和渲染路径影响
  • 字体结果应在考虑主机和版本的情况下与配置文件记录比较
  • Canvas 结果必须测量,不能假定与源渲染器相同
  • 除非文档另有说明,WebGL 取决于主机图形路径
  • 屏幕指标反映会话的 viewport 和 display 策略
  • 窗口尺寸应在选定的框架和主机上检查

无需额外配置

在其他主机加载配置文件并不会自动建立跨平台等价性。--bot-profile 只是启动输入之一;随后应在每个主机上验证会话、display、框架、网络和应用条件。有关在上线前对比主机、配置文件和运行成本的部署级方法,请参阅部署前如何评估跨平台浏览器一致性,其中介绍了主机与目标矩阵以及带版本的基线。

与 Edge 或 Brave 配对

Windows 用户通常使用 Microsoft Edge 或 Google Chrome。BotBrowser 只能在配置文件与功能授权覆盖的受控授权上下文中提供文档化的品牌、区域设置和时区值;请在会话中验证所选值。对于受支持的 Edge 测试:

chrome --bot-profile="profiles/win11-edge.enc" \
       --bot-browser-brand=edge

文档化的品牌值可能变化,包括 User-Agent 品牌、Client Hints 令牌和功能;应在实际会话中验证,不作普遍保证。有关 User-Agent、Client Hints 和 navigator.userAgentData 为何必须一致地指向同一品牌,请参阅浏览器品牌切换:Chrome、Edge、Brave、Opera,其中介绍了在启动时设置品牌以及如何在各处检查。

配置和使用

Linux 上的基本 Windows 配置文件

# 在 Linux 服务器上
DISPLAY=:88 chrome \
  --bot-profile="profiles/win11-chrome-130.enc" \
  --user-data-dir="$(mktemp -d)"

带美国身份的 Windows 配置文件

DISPLAY=:88 chrome \
  --bot-profile="profiles/win11-chrome-130.enc" \
  --proxy-server=socks5://user:pass@us-proxy:1080 \
  --bot-timezone=America/New_York \
  --bot-locale=en-US \
  --bot-languages=en-US,en

Puppeteer 示例

const puppeteer = require('puppeteer-core');

(async () => {
  const browser = await puppeteer.launch({
    executablePath: 'path/to/botbrowser/chrome',
    args: [
      '--bot-profile=profiles/win11-chrome-130.enc',
      '--bot-timezone=America/Chicago',
      '--bot-locale=en-US',
      '--bot-languages=en-US,en',
    ],
    headless: true,
    defaultViewport: null,
  });

  console.log('使用这些启动选项打开经过授权的测试页面。');
  await browser.close();
})();

Linux 上的 Edge 配 EU 代理

DISPLAY=:88 chrome \
  --bot-profile="profiles/win11-edge.enc" \
  --bot-browser-brand=edge \
  --proxy-server=socks5://user:pass@de-proxy:1080 \
  --bot-timezone=Europe/Berlin \
  --bot-locale=de-DE \
  --bot-languages=de-DE,de,en

验证

通过检查多个信号类别验证 Windows 配置文件正确应用:

const verification = {
  platform: 'Win32',
  userAgent: '...Windows NT 10.0; Win64; x64...',
  uaPlatform: 'Windows',
  platformVersion: '15.0.0',
};
console.log('将这些预期值与同一授权会话进行比较。');
Windows 浏览器配置文件将 macOS 和 Linux 主机连接到一致的浏览器身份

运行清单

将执行主机与浏览器配置文件分开记录。每次验证记录操作系统、浏览器版本、配置文件标识、区域设置、时区、代理、viewport 和日期。

把配置文件视为受控浏览器上下文的输入。使用新的数据目录、合成数据和确定性关闭。配置文件提供浏览器可见值,而 cookies、存储、权限、网络和应用数据仍遵循上下文与服务生命周期。

比较平台值前先检查网络路径。确认 DNS、代理认证、TLS、区域和服务响应。Sec-CH-UA-Platform 匹配并不证明 IP、信誉或上游服务属于 Windows。

单独检查区域设置和时区。验证语言列表、格式、时区偏移及应用自己的区域选择器,并把有意差异记录为测试案例。

保持 viewport 与 display 策略稳定。Linux 配置部署所需的 display 服务,macOS 注意 Retina 缩放。将 CSS 尺寸和 device-pixel ratio 与配置文件值分开比较。

使用短清单验证平台字符串、User-Agent 家族、服务器请求的 Client Hints、相关字体、屏幕指标和可见区域设置。一次会话只能得出一次会话的证据。

明确生命周期与清理。每个授权账户使用独立上下文,worker 不共享可变存储,并保留首个错误。关闭上下文不等于删除服务器记录。

固定矩阵覆盖的版本,升级后重复清单。比较 macOS 与 Linux 时记录 GPU、路径、display 和网络差异。BotBrowser 适合重复验证浏览器可见值,但不是 Windows 虚拟机,也不替代代理、字体、图形硬件或应用验证。

为每项观测指定负责人:配置文件、平台、网络或应用。浏览器可见值不能证明配置文件无法控制的事实。

比较前记录预期差异。Linux worker 可能使用虚拟 display,macOS 笔记本可能使用 Retina 缩放。记录 viewport 可接受范围,并单独比较平台值。

不再需要配置文件时遵循保留政策。只删除获授权的本地工件,按应用流程撤销测试凭据,并保留最小结果记录。配置文件不是 Windows 许可证,也不是源机器备份。

最佳实践

  • 选择当前 Windows 配置文件。 使用支持矩阵覆盖的配置文件和浏览器组合;旧配置文件可能不适用于当前 Chrome 版本。
  • 为测试场景选择代理和区域设置。 记录预期地区与时区,并将网络响应与配置文件值分开验证。
  • 仅在需要时使用项目 display。 新的 headless 运行不需要 DISPLAY;使用 Xvfb 的 headed 或 legacy headless=old 运行应使用项目 display DISPLAY=:88。
  • 使用 defaultViewport: null,在 Playwright 和 Puppeteer 中让配置文件控制视口尺寸。
  • 与区域设置和时区结合。 没有匹配区域设置的 Windows 配置文件是不完整的。设置 --bot-timezone、--bot-locale 和 --bot-languages 以匹配代理位置。
  • 考虑 Edge 以覆盖兼容性。 当测试明确包含 Edge 时使用 --bot-browser-brand=edge,并在会话中验证品牌和功能。

常见问题

验证说明

不会。BotBrowser 在浏览器配置文件范围内应用文档化值。这些值不会暴露 Linux,但主机、网络和应用行为仍需单独验证。

在更改配置文件设置前,与主机和应用负责人一起审查这些证据。

我可以专门运行当前 Windows 配置文件吗?

可以。当前 Windows 配置文件在 Client Hints 中报告适当的平台版本。版本区别主要在 Sec-CH-UA-Platform-Version 值中,该值从源系统捕获。

我需要在 Linux 服务器上安装 Windows 字体吗?

在实际会话中将字体可用性与配置文件记录比较。主机字体、浏览器版本、权限和渲染路径都可能影响结果,配置文件不保证与主机条件无关的固定字体集。

屏幕分辨率如何与 Windows 配置文件协同工作?

配置文件可以提供预期屏幕指标,但 viewport、显示缩放、框架设置和主机硬件必须在实际会话中测量。不要推断主机屏幕被隐藏或某个分辨率一定可用。

我可以在不同主机操作系统上使用相同的配置文件吗?

相同的 .enc 配置文件可以在 Linux、macOS 和 Windows 主机上加载,但观测结果必须按主机和浏览器版本分别验证。配置文件提供浏览器可见输入,不决定所有主机条件。

Windows 特定 API 如 WMI 或 DirectX 呢?

Web 浏览器通过标准 Web API 暴露有限的平台 API 集。BotBrowser 为支持的浏览器可见信号提供文档化配置值,WMI 等系统级 API 无法从 Web 内容访问,主机相关行为仍在配置文件范围之外。

在 Linux 上运行 Windows 配置文件有性能差异吗?

没有。配置文件控制浏览器报告什么信号。实际计算仍然在主机硬件上以原生速度运行。

总结

BotBrowser 支持在受控上下文中配置浏览器可见的平台值,用于经过授权的跨平台测试。配置文件不会提供 Windows 操作系统,也不保证所有主机结果相同;网络、区域、字体、图形和应用仍由团队验证,记录 Win32 与 screen.width 等实际观测。

实际边界很明确:配置文件提供浏览器可见的初始值,团队仍负责代理、DNS、权限、viewport、框架生命周期和应用断言。记录主机与配置文件标识,并在每次升级后重复同一清单。

请参阅 BotBrowser 身份文档 了解配置文件字段与主机边界。

相关主题请参阅跨平台浏览器配置文件、Android 模拟和浏览器品牌切换。平台行为还可参考 MDN User-Agent Client Hints。

相对参考文档新增的内容

参考页说明跨主机使用配置文件。本节增加场景:将配置文件报告的平台和区域与请求 Client Hints 对比,并记录哪些值仍取决于主机。这样可以核对 Linux 或 macOS 部署,而不宣称它就是 Windows 机器。

{ "reported": "Win32", "request": "Sec-CH-UA-Platform", "hostDependent": ["screen.width", "devicePixelRatio"] }

来源

实用结论

把主机和配置文件分开命名,并在每次结果中记录宿主操作系统、浏览器构建、配置文件、语言环境、时区和代理。Linux 虚拟显示或 macOS Retina 缩放这类差异属于部署事实;把每个不一致归给配置文件、平台或网络的负责方,并在升级后重跑清单。

#Windows#Macos#Linux#跨平台#配置文件

本文属于指南: Web 平台能力面:一致性复核地图

让 BotBrowser 从研究走向生产

先用这些指南理解模型,再进入跨平台验证、隔离上下文和面向规模化的浏览器部署。