Web 字体加载与布局稳定:避免意外位移
了解 Web 字体如何影响布局稳定,选择可靠的加载策略,并在字体加载或失败时保持文字可读。
先用三篇重点文章建立整体理解,再继续浏览完整归档。
了解 Battery Status API 能提供哪些信息、为何支持有限,以及如何在不建立用户画像的情况下使用电池状态。
了解 navigator.deviceMemory 能告诉 Web 应用什么、不能告诉什么,以及如何渐进式调整资源并遵守隐私边界。
这个主题下的更多文章归档。
了解 Web 字体如何影响布局稳定,选择可靠的加载策略,并在字体加载或失败时保持文字可读。
了解安全上下文、权限、精度取舍以及浏览器地理位置的隐私友好回退。
了解 --bot-performance-timing 的基础与高级模式、Performance Timing API 的可观察面,以及代理和反爬交叉校验的边界。
了解 screen、viewport 和 devicePixelRatio 如何支持响应式布局、测试与隐私友好的产品决策。
把方向变化当作响应式布局状态,同时保留可访问性、用户选择与隐私边界。
了解 Web Audio API 的访问边界,以及播放、分析、录音和回退体验的隐私友好设计。
了解 Web Bluetooth 的用户激活、权限、可用性和设备选择如何影响隐私友好的网页体验。
了解 WebGPU 适配器代表什么、何时不可用,以及如何在不收集设备画像的情况下选择图形回退方案。
了解 Chrome 提议中的 Private Verification Tokens(PVT)、隐私浏览场景中的信任信号,以及 BotBrowser 当前为何不启用。
WebAuthn 和 passkey 能力查询只提供有限的功能提示,不能证明硬件、身份、凭据存在或登录成功。了解这些提示的隐私边界与应用方式。
了解 WebCodecs 暴露的媒体处理支持、浏览器与平台差异,以及如何在不过度收集数据的前提下检查兼容性。
了解 WebNN 的用途、浏览器支持和执行选择为何不同,以及如何测试机器学习功能而不把能力检查变成用户画像数据。
从站点数据、权限、存储、网络可见性和保留设置入手,在不破坏正常任务的前提下检查浏览器隐私。
按保护范围、网站兼容性和用户控制权比较浏览器内置的跟踪保护设置,不把任何一项设置视为完整的隐私方案。
了解浏览器 Canvas 如何用于图形、动画、游戏和媒体,以及无障碍替代内容与明确的安全边界。
了解无痕窗口会限制哪些本地浏览记录、网站和网络仍能看到什么,以及何时应改用独立浏览器配置文件。
了解 WebGL 的用途、浏览器支持差异,以及如何规划回退、无障碍、隐私和兼容性。
规划摄像头和麦克风权限、设备标签及虚拟摄像头流程,让媒体功能有用、透明并尊重隐私。
了解如何跨软件渲染、硬件渲染、headless 和 headed 环境验证 Canvas、WebGL 与 WebGPU 的浏览器隐私信号。
什么是浏览器指纹?了解时间、CPU、内存和渲染信号如何影响追踪,以及 performance.now、hardwareConcurrency 和 deviceMemory 的隐私风险。
了解网站如何跨站组合渲染、显示、语言和请求元数据,并在不暴露内部细节的前提下验证隐私边界。
了解 AudioContext 和 OfflineAudioContext 如何创建独特的音频指纹, 以及如何在浏览器引擎级别控制音频输出。
了解 HTML5 Canvas 指纹如何通过独特的渲染模式追踪用户,以及引擎级别的防护技术。
为 BotBrowser 会话选择 profile、real 或 advanced 显示缩放,并在桌面、移动端和 per-context 工作流中保持 DPR 一致。
屏幕分辨率、色深和窗口尺寸如何创建唯一的指纹信号,以及如何控制显示身份。
让外部 URL 行为与所选平台配置保持一致,同时保留标准网页导航。
WebGL 渲染器字符串和渲染输出如何暴露 GPU 身份。学习引擎级技术控制 WebGL 指纹信号。
什么是字体指纹?了解字体可用性、回退行为和文本指标如何暴露平台特征并影响浏览器隐私。
在授权验证中采集本地 V8Log 证据,用 API 过滤保持 trace 可读,并把每次运行与基线对比,为发布和支持决策提供事实依据。
了解权限状态如何成为浏览器身份信号,以及 BotBrowser 如何在保留用户授权和正常访问控制的同时,让页面、Worker 与配置文件保持一致。
让存储配额、JavaScript 堆限制和设备内存与当前配置文件一致,避免工作节点的资源差异影响浏览器隐私。
sec-ch-ua 等 Client Hints 头部在每次 HTTP 请求中暴露浏览器品牌、版本、平台和设备信息。了解这些头部中的不一致性如何产生可追踪信号,以及如何保持一致性。
Canvas measureText() 返回的文本宽度值具有亚像素精度,由于字体渲染引擎的差异,这些值在不同操作系统之间各不相同。了解这些微小的数值差异如何成为可靠的平台指纹信号。
通过 getCapabilities() 和 SDP offer 进行的 WebRTC 编解码器枚举会暴露因操作系统而异的硬件媒体能力。了解编解码器列表如何成为平台指纹,以及如何加以控制。
深入探讨确定性噪声种子如何在会话和 CI/CD 管道中产生一致的 Canvas、WebGL 和 Audio 指纹。
navigator.connection 属性(如 effectiveType、RTT 和 downlink)如何创建网络指纹,以及如何控制它们。
加密媒体扩展和 Widevine DRM 能力信号如何创建指纹向量,以及如何在引擎级别控制 DRM 身份。
MediaCapabilities、canPlayType 和编解码器支持查询如何创建唯一指纹,以及控制媒体格式身份的技术。
SpeechSynthesis API 语音列表如何揭示你的操作系统和平台,以及控制基于语音的指纹信号的技术。
requestAnimationFrame 时序和显示器刷新率如何创建指纹信号, 以及在引擎级别控制帧率的技术。
WebGPU API 如何暴露 GPU 适配器详情用于指纹识别,以及如何在浏览器引擎级别控制 GPU 身份信号。
JavaScript 栈深度和递归限制如何因浏览器和平台不同而创建指纹,以及如何控制栈行为。
CSS 媒体查询(如 color-depth 和 prefers-color-scheme)如何创建指纹信号,以及如何确保一致的 CSS 身份。
如何使用噪声种子控制在不同会话间产生相同的浏览器指纹,实现一致的 Canvas、WebGL 和 Audio 输出。
navigator.platform、hardwareConcurrency 和 deviceMemory 如何暴露你的身份,以及如何确保一致的 navigator 属性。
navigator.hardwareConcurrency 如何暴露你的 CPU 核心数用于指纹追踪,以及在所有上下文中控制核心数报告的技术方案。
关于浏览器指纹识别你需要知道的一切:工作原理、收集哪些信号、隐私风险以及如何保护自己。