指纹覆盖

按实例配置浏览器身份、硬件提示、语言时区、屏幕、设备列表、GPU 数据和指纹噪声。

能力:fingerprintOverrideEP: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四段非负数字版本,主版本必须大于零
platformwindowsmacoslinux;macOS 构建忽略该项
platform_version三段非负数字版本
architecturex86arm;macOS 构建忽略该项
hardware_concurrency1–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整数 widthheightavailable_widthavailable_height,各为 1–16384;可用尺寸不超过总尺寸
webrtc_ip_policydefaultdefault_public_and_private_interfacesdefault_public_interface_onlydisable_non_proxied_udp

报告屏幕尺寸不是调整真实桌面的命令。WebRTC 策略不是出口代理,应单独配置系统代理覆盖。语言配置影响浏览器暴露的语言数据,不会翻译你的网页应用。

地理位置

使用 {"disabled": true} 提供拒绝定位结果。需要覆盖位置时,提供 -90 到 90 的 latitude、-180 到 180 的 longitude 和非负 accuracy。可选字段为 altitude、非负 altitude_accuracy、0–360 的 heading、非负 speed

这改变位置结果,不改变物理设备或网络地址。不要假设位置覆盖会绕过普通站点权限检查。

设备、字体与语音列表

media_device_counts 接受 audio_inputaudio_outputvideo_input。非负整数上限为 32,缺失或负数保持该类型不变。只有在对应设备权限授予前才调整数量,不会创建可工作的麦克风或摄像头。

font_allowlist 是非空字体族字符串数组,不区分大小写。空数组不启用过滤。它过滤系统字体解析,不安装字体,也不移除所有网页字体。应使用目标环境实际存在的字体名。

speech_voices 是至少具有字符串 namelang 的语音对象数组。可选 voice_uri 默认为 name,可选布尔值 local_service 默认为 true。第一个可用项成为默认语音,至少需要一个可用项。例如:[{"name":"Example voice","lang":"en-US","voice_uri":"example-voice","local_service":true}]。将这些示例值替换为参考环境实际可用的语音,改名称不会安装语音引擎。

GPU 配置

gpu_profile 是带采集部分的对象,不是字符串配置 ID。支持的布局包括:

部分内容
webgl1webgl2以可识别 WebGL 参数名为键的 paramsfloat_paramsext_paramsstrings 字典
webgl2.internalformat_samples0x8058 等大写十六进制格式名为键的非负整数采样数数组;原生采样列表为空时仍返回空列表
webgpu.limits以 WebGPU 限制名为键的数值
webgpu.info以可识别字段名为键的适配器信息

数值使用 JSON 数字,不是数字字符串。范围值使用两个数字的数组,MAX_VIEWPORT_DIMS 使用两个整数的数组,身份值使用字符串。支持以下 WebGL 键:

分组
范围ALIASED_POINT_SIZE_RANGEALIASED_LINE_WIDTH_RANGEMAX_VIEWPORT_DIMS
纹理与渲染限制MAX_TEXTURE_SIZEMAX_CUBE_MAP_TEXTURE_SIZEMAX_RENDERBUFFER_SIZEMAX_COMBINED_TEXTURE_IMAGE_UNITSMAX_TEXTURE_IMAGE_UNITSMAX_VERTEX_TEXTURE_IMAGE_UNITSMAX_VERTEX_ATTRIBSMAX_3D_TEXTURE_SIZEMAX_ARRAY_TEXTURE_LAYERSMAX_COLOR_ATTACHMENTSMAX_DRAW_BUFFERSMAX_SAMPLES
着色器限制MAX_FRAGMENT_UNIFORM_VECTORSMAX_VERTEX_UNIFORM_VECTORSMAX_VARYING_VECTORSMAX_FRAGMENT_INPUT_COMPONENTSMAX_FRAGMENT_UNIFORM_BLOCKSMAX_FRAGMENT_UNIFORM_COMPONENTSMAX_UNIFORM_BUFFER_BINDINGSMAX_VARYING_COMPONENTSMAX_VERTEX_OUTPUT_COMPONENTSMAX_VERTEX_UNIFORM_BLOCKSMAX_VERTEX_UNIFORM_COMPONENTSMAX_COMBINED_UNIFORM_BLOCKSMAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTSMAX_COMBINED_VERTEX_UNIFORM_COMPONENTSMAX_UNIFORM_BLOCK_SIZE
其他限制MAX_ELEMENTS_INDICESMAX_ELEMENTS_VERTICESMAX_PROGRAM_TEXEL_OFFSETMIN_PROGRAM_TEXEL_OFFSETMAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTSMAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBSMAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTSUNIFORM_BUFFER_OFFSET_ALIGNMENTMAX_SERVER_WAIT_TIMEOUTMAX_ELEMENT_INDEX
扩展限制MAX_TEXTURE_MAX_ANISOTROPY_EXTMAX_TEXTURE_LOD_BIASMIN_FRAGMENT_INTERPOLATION_OFFSET_OESMAX_FRAGMENT_INTERPOLATION_OFFSET_OESMAX_DUAL_SOURCE_DRAW_BUFFERS_EXTMAX_VIEWS_OVRMAX_CLIP_DISTANCES_ANGLEMAX_CULL_DISTANCES_ANGLEMAX_COMBINED_CLIP_AND_CULL_DISTANCES_ANGLEFRAGMENT_INTERPOLATION_OFFSET_BITS_OESMAX_PIXEL_LOCAL_STORAGE_PLANES_ANGLEMAX_COMBINED_DRAW_BUFFERS_AND_PIXEL_LOCAL_STORAGE_PLANES_ANGLE
身份字符串UNMASKED_VENDOR_WEBGLUNMASKED_RENDERER_WEBGL

普通数值限制放在 params,浮点范围或限制放在 float_params,扩展限制放在 ext_params,身份字符串放在 strings。同一部分重复填写相同键时,优先级由低到高为 paramsfloat_paramsext_paramsstrings。同一个键同时出现在 webgl1webgl2 时,支持覆盖的查询以 webgl2 的值为准,不会保留两套互相冲突的独立身份。MAX_COLOR_ATTACHMENTSMAX_DRAW_BUFFERS 在 WebGL 2 中可覆盖;WebGL 1 的 WEBGL_draw_buffers 查询保留原值。扩展查询仍要求对应扩展可用且已启用。

webgpu.limits 使用 0 到 4294967295 的整数 JSON 数字;只有 maxUniformBufferBindingSizemaxStorageBufferBindingSizemaxBufferSize 接受更大的整数。这三项也应保持在 JavaScript 安全整数范围内(不超过 9007199254740991),更大的值无法安全保留。使用与参考设备一致的值:

分组
纹理maxTextureDimension1DmaxTextureDimension2DmaxTextureDimension3DmaxTextureArrayLayers
绑定maxBindGroupsmaxBindGroupsPlusVertexBuffersmaxBindingsPerBindGroupmaxDynamicUniformBuffersPerPipelineLayoutmaxDynamicStorageBuffersPerPipelineLayoutmaxSampledTexturesPerShaderStagemaxSamplersPerShaderStagemaxStorageBuffersPerShaderStagemaxStorageTexturesPerShaderStagemaxUniformBuffersPerShaderStagemaxUniformBufferBindingSizemaxStorageBufferBindingSizeminUniformBufferOffsetAlignmentminStorageBufferOffsetAlignment
顶点与渲染maxVertexBuffersmaxBufferSizemaxVertexAttributesmaxVertexBufferArrayStridemaxInterStageShaderVariablesmaxColorAttachmentsmaxColorAttachmentBytesPerSamplemaxStorageBuffersInFragmentStagemaxStorageTexturesInFragmentStagemaxStorageBuffersInVertexStagemaxStorageTexturesInVertexStagemaxImmediateSize
计算maxComputeWorkgroupStorageSizemaxComputeInvocationsPerWorkgroupmaxComputeWorkgroupSizeXmaxComputeWorkgroupSizeYmaxComputeWorkgroupSizeZmaxComputeWorkgroupsPerDimension

webgpu.info 支持:

字段类型或选项
vendorarchitecturedevicedescriptiondriver字符串
subgroupMinSizesubgroupMaxSized3dShaderModelvkDriverVersion0 到 4294967295 的整数
isFallbackAdapter布尔值
backendnull(字符串)、WebGPUD3D11D3D12metalvulkanopenGLopenGLES
typediscrete GPUintegrated GPUCPU;优先于 isFallbackAdapter
powerPreferencelow-powerhigh-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.hardwareConcurrencynavigator.deviceMemorydevicePixelRatioscreen.widthnavigator.languagesIntl.DateTimeFormat().resolvedOptions().timeZone。分别检查 GPU、设备和语音表面,并在完全重启进程前后比较。只读取这些标准网页属性不需要 unrestrictedApi

此能力不保证唯一性、匿名性或被任何站点检测系统接受。应验证应用实际依赖的表面,而不是把有效 EP 当成指纹一致性的证明。