指纹覆盖
按实例配置浏览器身份、硬件提示、语言时区、屏幕、设备列表、GPU 数据和指纹噪声。
能力:fingerprintOverride。EP:internal.fingerprint_override。这是启动配置,没有 chrovia.fingerprint JS 域。修改设置后应完全退出并重启实例。
从一致的配置开始
以下面向 Windows 的示例保留 GPU 和语音原值,不编造完整设备配置:
{
"internal": {
"fingerprint_override": {
"noise_seed": "123456789",
"browser_version": "151.0.0.0",
"platform": "windows",
"platform_version": "10.0.0",
"architecture": "x86",
"hardware_concurrency": 8,
"device_memory": 8.0,
"device_pixel_ratio": 1.0,
"timezone": "America/Los_Angeles",
"accept_languages": "en-US,en",
"webrtc_ip_policy": "disable_non_proxied_udp",
"screen": {
"width": 1920,
"height": 1080,
"available_width": 1920,
"available_height": 1040
},
"media_device_counts": {
"audio_input": 1,
"audio_output": 1,
"video_input": 0
},
"geolocation": { "disabled": true }
}
}
}合并到实例 EP,按需签名后启动。按目标身份调整值。修改报告的浏览器版本不会安装另一个 Chromium 内核,也不会改变真实功能支持。
身份与硬件字段
| 字段 | 接受格式与归一化 |
|---|---|
browser_version | 四段非负数字版本,主版本必须大于零 |
platform | windows、macos、linux;macOS 构建忽略该项 |
platform_version | 三段非负数字版本 |
architecture | x86 或 arm;macOS 构建忽略该项 |
hardware_concurrency | 1–256 的整数 |
device_memory | 正数,归到最近的 0.25、0.5、1、2、4、8、16、32 |
device_pixel_ratio | 不超过 8 的正数,归到最近的 1、1.25、1.5、1.75、2、2.5、3、3.5、4 |
缺失或被拒绝的值通常保留对应原生行为。硬件提示不会分配真实 CPU 或内存,平台覆盖不是操作系统虚拟化。保持 UA/client hints、GPU、语言和屏幕与目标环境一致。
语言、屏幕与网络隐私
| 字段 | 格式 |
|---|---|
timezone | 有效 ICU/IANA 时区 ID,例如 Europe/Berlin |
accept_languages | 逗号分隔的 BCP 47 标签,不是数组;无效标签被跳过 |
screen | 整数 width、height、available_width、available_height,各为 1–16384;可用尺寸不超过总尺寸 |
webrtc_ip_policy | default、default_public_and_private_interfaces、default_public_interface_only、disable_non_proxied_udp |
报告屏幕尺寸不是调整真实桌面的命令。WebRTC 策略不是出口代理,应单独配置系统代理覆盖。语言配置影响浏览器暴露的语言数据,不会翻译你的网页应用。
地理位置
使用 {"disabled": true} 提供拒绝定位结果。需要覆盖位置时,提供 -90 到 90 的 latitude、-180 到 180 的 longitude 和非负 accuracy。可选字段为 altitude、非负 altitude_accuracy、0–360 的 heading、非负 speed。
这改变位置结果,不改变物理设备或网络地址。不要假设位置覆盖会绕过普通站点权限检查。
设备、字体与语音列表
media_device_counts 接受 audio_input、audio_output、video_input。非负整数上限为 32,缺失或负数保持该类型不变。只有在对应设备权限授予前才调整数量,不会创建可工作的麦克风或摄像头。
font_allowlist 是非空字体族字符串数组,不区分大小写。空数组不启用过滤。它过滤系统字体解析,不安装字体,也不移除所有网页字体。应使用目标环境实际存在的字体名。
speech_voices 是至少具有字符串 name 和 lang 的语音对象数组。可选 voice_uri 默认为 name,可选布尔值 local_service 默认为 true。第一个可用项成为默认语音,至少需要一个可用项。例如:[{"name":"Example voice","lang":"en-US","voice_uri":"example-voice","local_service":true}]。将这些示例值替换为参考环境实际可用的语音,改名称不会安装语音引擎。
GPU 配置
gpu_profile 是带采集部分的对象,不是字符串配置 ID。支持的布局包括:
| 部分 | 内容 |
|---|---|
webgl1、webgl2 | 以可识别 WebGL 参数名为键的 params、float_params、ext_params、strings 字典 |
webgl2.internalformat_samples | 以 0x8058 等大写十六进制格式名为键的非负整数采样数数组;原生采样列表为空时仍返回空列表 |
webgpu.limits | 以 WebGPU 限制名为键的数值 |
webgpu.info | 以可识别字段名为键的适配器信息 |
数值使用 JSON 数字,不是数字字符串。范围值使用两个数字的数组,MAX_VIEWPORT_DIMS 使用两个整数的数组,身份值使用字符串。支持以下 WebGL 键:
| 分组 | 键 |
|---|---|
| 范围 | ALIASED_POINT_SIZE_RANGE、ALIASED_LINE_WIDTH_RANGE、MAX_VIEWPORT_DIMS |
| 纹理与渲染限制 | MAX_TEXTURE_SIZE、MAX_CUBE_MAP_TEXTURE_SIZE、MAX_RENDERBUFFER_SIZE、MAX_COMBINED_TEXTURE_IMAGE_UNITS、MAX_TEXTURE_IMAGE_UNITS、MAX_VERTEX_TEXTURE_IMAGE_UNITS、MAX_VERTEX_ATTRIBS、MAX_3D_TEXTURE_SIZE、MAX_ARRAY_TEXTURE_LAYERS、MAX_COLOR_ATTACHMENTS、MAX_DRAW_BUFFERS、MAX_SAMPLES |
| 着色器限制 | MAX_FRAGMENT_UNIFORM_VECTORS、MAX_VERTEX_UNIFORM_VECTORS、MAX_VARYING_VECTORS、MAX_FRAGMENT_INPUT_COMPONENTS、MAX_FRAGMENT_UNIFORM_BLOCKS、MAX_FRAGMENT_UNIFORM_COMPONENTS、MAX_UNIFORM_BUFFER_BINDINGS、MAX_VARYING_COMPONENTS、MAX_VERTEX_OUTPUT_COMPONENTS、MAX_VERTEX_UNIFORM_BLOCKS、MAX_VERTEX_UNIFORM_COMPONENTS、MAX_COMBINED_UNIFORM_BLOCKS、MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS、MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS、MAX_UNIFORM_BLOCK_SIZE |
| 其他限制 | MAX_ELEMENTS_INDICES、MAX_ELEMENTS_VERTICES、MAX_PROGRAM_TEXEL_OFFSET、MIN_PROGRAM_TEXEL_OFFSET、MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS、MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS、MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS、UNIFORM_BUFFER_OFFSET_ALIGNMENT、MAX_SERVER_WAIT_TIMEOUT、MAX_ELEMENT_INDEX |
| 扩展限制 | MAX_TEXTURE_MAX_ANISOTROPY_EXT、MAX_TEXTURE_LOD_BIAS、MIN_FRAGMENT_INTERPOLATION_OFFSET_OES、MAX_FRAGMENT_INTERPOLATION_OFFSET_OES、MAX_DUAL_SOURCE_DRAW_BUFFERS_EXT、MAX_VIEWS_OVR、MAX_CLIP_DISTANCES_ANGLE、MAX_CULL_DISTANCES_ANGLE、MAX_COMBINED_CLIP_AND_CULL_DISTANCES_ANGLE、FRAGMENT_INTERPOLATION_OFFSET_BITS_OES、MAX_PIXEL_LOCAL_STORAGE_PLANES_ANGLE、MAX_COMBINED_DRAW_BUFFERS_AND_PIXEL_LOCAL_STORAGE_PLANES_ANGLE |
| 身份字符串 | UNMASKED_VENDOR_WEBGL、UNMASKED_RENDERER_WEBGL |
普通数值限制放在 params,浮点范围或限制放在 float_params,扩展限制放在 ext_params,身份字符串放在 strings。同一部分重复填写相同键时,优先级由低到高为 params、float_params、ext_params、strings。同一个键同时出现在 webgl1 和 webgl2 时,支持覆盖的查询以 webgl2 的值为准,不会保留两套互相冲突的独立身份。MAX_COLOR_ATTACHMENTS 和 MAX_DRAW_BUFFERS 在 WebGL 2 中可覆盖;WebGL 1 的 WEBGL_draw_buffers 查询保留原值。扩展查询仍要求对应扩展可用且已启用。
webgpu.limits 使用 0 到 4294967295 的整数 JSON 数字;只有 maxUniformBufferBindingSize、maxStorageBufferBindingSize、maxBufferSize 接受更大的整数。这三项也应保持在 JavaScript 安全整数范围内(不超过 9007199254740991),更大的值无法安全保留。使用与参考设备一致的值:
| 分组 | 键 |
|---|---|
| 纹理 | maxTextureDimension1D、maxTextureDimension2D、maxTextureDimension3D、maxTextureArrayLayers |
| 绑定 | maxBindGroups、maxBindGroupsPlusVertexBuffers、maxBindingsPerBindGroup、maxDynamicUniformBuffersPerPipelineLayout、maxDynamicStorageBuffersPerPipelineLayout、maxSampledTexturesPerShaderStage、maxSamplersPerShaderStage、maxStorageBuffersPerShaderStage、maxStorageTexturesPerShaderStage、maxUniformBuffersPerShaderStage、maxUniformBufferBindingSize、maxStorageBufferBindingSize、minUniformBufferOffsetAlignment、minStorageBufferOffsetAlignment |
| 顶点与渲染 | maxVertexBuffers、maxBufferSize、maxVertexAttributes、maxVertexBufferArrayStride、maxInterStageShaderVariables、maxColorAttachments、maxColorAttachmentBytesPerSample、maxStorageBuffersInFragmentStage、maxStorageTexturesInFragmentStage、maxStorageBuffersInVertexStage、maxStorageTexturesInVertexStage、maxImmediateSize |
| 计算 | maxComputeWorkgroupStorageSize、maxComputeInvocationsPerWorkgroup、maxComputeWorkgroupSizeX、maxComputeWorkgroupSizeY、maxComputeWorkgroupSizeZ、maxComputeWorkgroupsPerDimension |
webgpu.info 支持:
| 字段 | 类型或选项 |
|---|---|
vendor、architecture、device、description、driver | 字符串 |
subgroupMinSize、subgroupMaxSize、d3dShaderModel、vkDriverVersion | 0 到 4294967295 的整数 |
isFallbackAdapter | 布尔值 |
backend | null(字符串)、WebGPU、D3D11、D3D12、metal、vulkan、openGL、openGLES |
type | discrete GPU、integrated GPU、CPU;优先于 isFallbackAdapter |
powerPreference | low-power 或 high-performance |
部分适配器信息只有在浏览器开放相应开发者功能时才可见。设置值不会让不可用的 WebGPU API 或属性出现。
要准备一份不编造数值的小型配置,可在未应用覆盖的目标参考浏览器中,打开可信页面执行:
const gl = document.createElement('canvas').getContext('webgl2');
if (!gl) throw new Error('WebGL 2 is unavailable');
const gpuProfile = {
webgl2: {
params: {
MAX_TEXTURE_SIZE: gl.getParameter(gl.MAX_TEXTURE_SIZE),
MAX_VIEWPORT_DIMS: Array.from(gl.getParameter(gl.MAX_VIEWPORT_DIMS)),
},
float_params: {
ALIASED_LINE_WIDTH_RANGE: Array.from(gl.getParameter(gl.ALIASED_LINE_WIDTH_RANGE)),
},
internalformat_samples: {
'0x8058': Array.from(gl.getInternalformatParameter(gl.RENDERBUFFER, gl.RGBA8, gl.SAMPLES)),
},
},
};
console.log(JSON.stringify(gpuProfile, null, 2));将输出对象放在 internal.fingerprint_override.gpu_profile,不要把它当成整个 EP 文件。示例只采集少量字段;按需要从同一参考环境补充受支持字段。按需获取更新的已签名偏好,完全重启,然后在目标实例重复查询。
未知字段名不会提供覆盖。应遵守文档中的类型和范围,不要依赖错误值安全回退;采样数组中的非整数项可能变成零。使用一致的配置,不要把任意厂商字符串与无关限制混合。报告某项上限不会增加 GPU 资源,也不保证驱动支持相应工作负载。
噪声与验证
noise_seed 接受 "0" 到 "18446744073709551615" 的十进制字符串,或 0 到 2147483647 的 JSON 整数。建议使用十进制字符串,避免大数损失 JavaScript 精度。省略或使用 "0" 会关闭由种子控制的噪声保护,使用正数种子启用。它影响受支持的渲染、音频和几何指纹结果。持久身份保持种子稳定,不同身份使用不同种子。
在受控页面检查 navigator.hardwareConcurrency、navigator.deviceMemory、devicePixelRatio、screen.width、navigator.languages、Intl.DateTimeFormat().resolvedOptions().timeZone。分别检查 GPU、设备和语音表面,并在完全重启进程前后比较。只读取这些标准网页属性不需要 unrestrictedApi。
此能力不保证唯一性、匿名性或被任何站点检测系统接受。应验证应用实际依赖的表面,而不是把有效 EP 当成指纹一致性的证明。