jumpy-lion 1.0.0-beta.4 → 1.0.0-beta.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser-plugin.d.ts.map +1 -1
- package/dist/browser-plugin.js +15 -5
- package/dist/browser-plugin.js.map +1 -1
- package/dist/browser-process/anti-detect-config.d.ts +47 -7
- package/dist/browser-process/anti-detect-config.d.ts.map +1 -1
- package/dist/browser-process/anti-detect-config.js +79 -48
- package/dist/browser-process/anti-detect-config.js.map +1 -1
- package/dist/browser-process/apple-silicon-devices.d.ts +96 -0
- package/dist/browser-process/apple-silicon-devices.d.ts.map +1 -0
- package/dist/browser-process/apple-silicon-devices.js +185 -0
- package/dist/browser-process/apple-silicon-devices.js.map +1 -0
- package/dist/browser-process/browser.d.ts.map +1 -1
- package/dist/browser-process/browser.js +121 -17
- package/dist/browser-process/browser.js.map +1 -1
- package/dist/browser-process/gpu-family-profiles.d.ts +3 -0
- package/dist/browser-process/gpu-family-profiles.d.ts.map +1 -1
- package/dist/browser-process/gpu-family-profiles.js +170 -88
- package/dist/browser-process/gpu-family-profiles.js.map +1 -1
- package/dist/browser-process/integrity-headers.d.ts +158 -0
- package/dist/browser-process/integrity-headers.d.ts.map +1 -0
- package/dist/browser-process/integrity-headers.js +228 -0
- package/dist/browser-process/integrity-headers.js.map +1 -0
- package/dist/browser-profiles/chrome/create.d.ts +2 -1
- package/dist/browser-profiles/chrome/create.d.ts.map +1 -1
- package/dist/browser-profiles/chrome/create.js +2 -2
- package/dist/browser-profiles/chrome/create.js.map +1 -1
- package/dist/browser-profiles/chrome/default.d.ts +7 -0
- package/dist/browser-profiles/chrome/default.d.ts.map +1 -1
- package/dist/browser-profiles/chrome/default.js +16 -0
- package/dist/browser-profiles/chrome/default.js.map +1 -1
- package/dist/browser-profiles/chrome/populate-profile.d.ts +2 -0
- package/dist/browser-profiles/chrome/populate-profile.d.ts.map +1 -1
- package/dist/browser-profiles/chrome/populate-profile.js +2 -2
- package/dist/browser-profiles/chrome/populate-profile.js.map +1 -1
- package/dist/fingerprinting/hardware-realism.d.ts +46 -0
- package/dist/fingerprinting/hardware-realism.d.ts.map +1 -1
- package/dist/fingerprinting/hardware-realism.js +104 -1
- package/dist/fingerprinting/hardware-realism.js.map +1 -1
- package/dist/fingerprinting/locale-resolver.d.ts +21 -0
- package/dist/fingerprinting/locale-resolver.d.ts.map +1 -1
- package/dist/fingerprinting/locale-resolver.js +43 -6
- package/dist/fingerprinting/locale-resolver.js.map +1 -1
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +16 -0
- package/dist/index.js.map +1 -1
- package/dist/launch-stealth-browser.d.ts +143 -0
- package/dist/launch-stealth-browser.d.ts.map +1 -0
- package/dist/launch-stealth-browser.js +133 -0
- package/dist/launch-stealth-browser.js.map +1 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +2 -1
|
@@ -8,9 +8,168 @@
|
|
|
8
8
|
* Family ids must stay identical to the C++ `BaselineData::ForFamily(GpuFamily)`
|
|
9
9
|
* ids (third_party/blink/renderer/platform/graphics/emulated/baseline_data.cc).
|
|
10
10
|
*/
|
|
11
|
+
// Apple Silicon GL_* tokens the emulated GLES2 interface reports in GL_EXTENSIONS.
|
|
12
|
+
// Every WebGL name in APPLE_WEBGL1_EXTENSIONS and APPLE_WEBGL2_EXTENSIONS needs its
|
|
13
|
+
// backing token here, because Blink's Supported() checks for each extension read
|
|
14
|
+
// this string. A WebGL name on the allowlist without its backing token is silently
|
|
15
|
+
// dropped by getSupportedExtensions() while the capability is still advertised, which
|
|
16
|
+
// is the enumeration contradiction a sensor can probe. The legacy ES2 tokens
|
|
17
|
+
// (GL_EXT_blend_minmax, GL_OES_vertex_array_object, GL_OES_standard_derivatives,
|
|
18
|
+
// GL_EXT_sRGB, GL_CHROMIUM_depth_texture and similar) were missing before, which
|
|
19
|
+
// is why WebGL1 listed only 23 names instead of 39. Which token backs which
|
|
20
|
+
// extension follows Blink's Supported() checks and is unverified against a built
|
|
21
|
+
// binary in this repo.
|
|
22
|
+
export const APPLE_GL_EXTENSIONS = [
|
|
23
|
+
'GL_ANGLE_clip_cull_distance',
|
|
24
|
+
'GL_ANGLE_compressed_texture_etc',
|
|
25
|
+
'GL_ANGLE_instanced_arrays',
|
|
26
|
+
'GL_ANGLE_multi_draw',
|
|
27
|
+
'GL_ANGLE_polygon_mode',
|
|
28
|
+
'GL_ANGLE_provoking_vertex',
|
|
29
|
+
'GL_ANGLE_stencil_texturing',
|
|
30
|
+
'GL_ANGLE_texture_compression_dxt1',
|
|
31
|
+
'GL_ANGLE_texture_compression_dxt3',
|
|
32
|
+
'GL_ANGLE_texture_compression_dxt5',
|
|
33
|
+
'GL_ANGLE_translated_shader_source',
|
|
34
|
+
'GL_CHROMIUM_color_buffer_float_rgba',
|
|
35
|
+
'GL_CHROMIUM_depth_texture',
|
|
36
|
+
'GL_EXT_blend_func_extended',
|
|
37
|
+
'GL_EXT_blend_minmax',
|
|
38
|
+
'GL_EXT_clip_control',
|
|
39
|
+
'GL_EXT_color_buffer_float',
|
|
40
|
+
'GL_EXT_color_buffer_half_float',
|
|
41
|
+
'GL_EXT_conservative_depth',
|
|
42
|
+
'GL_EXT_depth_clamp',
|
|
43
|
+
'GL_EXT_disjoint_timer_query',
|
|
44
|
+
'GL_EXT_disjoint_timer_query_webgl2',
|
|
45
|
+
'GL_EXT_draw_buffers',
|
|
46
|
+
'GL_EXT_float_blend',
|
|
47
|
+
'GL_EXT_frag_depth',
|
|
48
|
+
'GL_EXT_polygon_offset_clamp',
|
|
49
|
+
'GL_EXT_render_snorm',
|
|
50
|
+
'GL_EXT_sRGB',
|
|
51
|
+
'GL_EXT_shader_texture_lod',
|
|
52
|
+
'GL_EXT_texture_compression_bptc',
|
|
53
|
+
'GL_EXT_texture_compression_dxt1',
|
|
54
|
+
'GL_EXT_texture_compression_rgtc',
|
|
55
|
+
'GL_EXT_texture_compression_s3tc',
|
|
56
|
+
'GL_EXT_texture_compression_s3tc_srgb',
|
|
57
|
+
'GL_EXT_texture_filter_anisotropic',
|
|
58
|
+
'GL_EXT_texture_mirror_clamp_to_edge',
|
|
59
|
+
'GL_EXT_texture_norm16',
|
|
60
|
+
'GL_IMG_texture_compression_pvrtc',
|
|
61
|
+
'GL_KHR_parallel_shader_compile',
|
|
62
|
+
'GL_KHR_texture_compression_astc_hdr',
|
|
63
|
+
'GL_KHR_texture_compression_astc_ldr',
|
|
64
|
+
'GL_NV_shader_noperspective_interpolation',
|
|
65
|
+
'GL_OES_compressed_ETC1_RGB8_texture',
|
|
66
|
+
'GL_OES_draw_buffers_indexed',
|
|
67
|
+
'GL_OES_element_index_uint',
|
|
68
|
+
'GL_OES_fbo_render_mipmap',
|
|
69
|
+
'GL_OES_packed_depth_stencil',
|
|
70
|
+
'GL_OES_sample_variables',
|
|
71
|
+
'GL_OES_shader_multisample_interpolation',
|
|
72
|
+
'GL_OES_standard_derivatives',
|
|
73
|
+
'GL_OES_texture_float',
|
|
74
|
+
'GL_OES_texture_float_linear',
|
|
75
|
+
'GL_OES_texture_half_float',
|
|
76
|
+
'GL_OES_texture_half_float_linear',
|
|
77
|
+
'GL_OES_vertex_array_object',
|
|
78
|
+
'GL_QCOM_render_shared_exponent',
|
|
79
|
+
'GL_WEBGL_multi_draw',
|
|
80
|
+
];
|
|
81
|
+
// Exact output of WebGL1 getSupportedExtensions() on real Chrome 156 on macOS
|
|
82
|
+
// Apple Silicon (M4 Pro), in Chrome's registration order. Pinned by sha256 of the
|
|
83
|
+
// comma-joined list (cb2d63c0ef05ac65, first 16 hex) from the fp-audit baseline.
|
|
84
|
+
// Not re-captured for Chrome 157: if 157 adds or reorders a name, update here.
|
|
85
|
+
export const APPLE_WEBGL1_EXTENSIONS = [
|
|
86
|
+
'ANGLE_instanced_arrays',
|
|
87
|
+
'EXT_blend_minmax',
|
|
88
|
+
'EXT_clip_control',
|
|
89
|
+
'EXT_color_buffer_half_float',
|
|
90
|
+
'EXT_depth_clamp',
|
|
91
|
+
'EXT_disjoint_timer_query',
|
|
92
|
+
'EXT_float_blend',
|
|
93
|
+
'EXT_frag_depth',
|
|
94
|
+
'EXT_polygon_offset_clamp',
|
|
95
|
+
'EXT_shader_texture_lod',
|
|
96
|
+
'EXT_texture_compression_bptc',
|
|
97
|
+
'EXT_texture_compression_rgtc',
|
|
98
|
+
'EXT_texture_filter_anisotropic',
|
|
99
|
+
'EXT_texture_mirror_clamp_to_edge',
|
|
100
|
+
'EXT_sRGB',
|
|
101
|
+
'KHR_parallel_shader_compile',
|
|
102
|
+
'OES_element_index_uint',
|
|
103
|
+
'OES_fbo_render_mipmap',
|
|
104
|
+
'OES_standard_derivatives',
|
|
105
|
+
'OES_texture_float',
|
|
106
|
+
'OES_texture_float_linear',
|
|
107
|
+
'OES_texture_half_float',
|
|
108
|
+
'OES_texture_half_float_linear',
|
|
109
|
+
'OES_vertex_array_object',
|
|
110
|
+
'WEBGL_blend_func_extended',
|
|
111
|
+
'WEBGL_color_buffer_float',
|
|
112
|
+
'WEBGL_compressed_texture_astc',
|
|
113
|
+
'WEBGL_compressed_texture_etc',
|
|
114
|
+
'WEBGL_compressed_texture_etc1',
|
|
115
|
+
'WEBGL_compressed_texture_pvrtc',
|
|
116
|
+
'WEBGL_compressed_texture_s3tc',
|
|
117
|
+
'WEBGL_compressed_texture_s3tc_srgb',
|
|
118
|
+
'WEBGL_debug_renderer_info',
|
|
119
|
+
'WEBGL_debug_shaders',
|
|
120
|
+
'WEBGL_depth_texture',
|
|
121
|
+
'WEBGL_draw_buffers',
|
|
122
|
+
'WEBGL_lose_context',
|
|
123
|
+
'WEBGL_multi_draw',
|
|
124
|
+
'WEBGL_polygon_mode',
|
|
125
|
+
];
|
|
126
|
+
// WebGL2 names real Chrome reports on macOS Apple Silicon, from the earlier Chrome
|
|
127
|
+
// 151 capture (36 names, shared ones included). The Chrome 156 baseline file only
|
|
128
|
+
// holds a count and hash for WebGL1, so this list is NOT verified against 156.
|
|
129
|
+
export const APPLE_WEBGL2_EXTENSIONS = [
|
|
130
|
+
'EXT_clip_control',
|
|
131
|
+
'EXT_color_buffer_float',
|
|
132
|
+
'EXT_color_buffer_half_float',
|
|
133
|
+
'EXT_conservative_depth',
|
|
134
|
+
'EXT_depth_clamp',
|
|
135
|
+
'EXT_disjoint_timer_query_webgl2',
|
|
136
|
+
'EXT_float_blend',
|
|
137
|
+
'EXT_polygon_offset_clamp',
|
|
138
|
+
'EXT_render_snorm',
|
|
139
|
+
'EXT_texture_compression_bptc',
|
|
140
|
+
'EXT_texture_compression_rgtc',
|
|
141
|
+
'EXT_texture_filter_anisotropic',
|
|
142
|
+
'EXT_texture_mirror_clamp_to_edge',
|
|
143
|
+
'EXT_texture_norm16',
|
|
144
|
+
'KHR_parallel_shader_compile',
|
|
145
|
+
'NV_shader_noperspective_interpolation',
|
|
146
|
+
'OES_draw_buffers_indexed',
|
|
147
|
+
'OES_sample_variables',
|
|
148
|
+
'OES_shader_multisample_interpolation',
|
|
149
|
+
'OES_texture_float_linear',
|
|
150
|
+
'WEBGL_blend_func_extended',
|
|
151
|
+
'WEBGL_clip_cull_distance',
|
|
152
|
+
'WEBGL_compressed_texture_astc',
|
|
153
|
+
'WEBGL_compressed_texture_etc',
|
|
154
|
+
'WEBGL_compressed_texture_etc1',
|
|
155
|
+
'WEBGL_compressed_texture_pvrtc',
|
|
156
|
+
'WEBGL_compressed_texture_s3tc',
|
|
157
|
+
'WEBGL_compressed_texture_s3tc_srgb',
|
|
158
|
+
'WEBGL_debug_renderer_info',
|
|
159
|
+
'WEBGL_debug_shaders',
|
|
160
|
+
'WEBGL_lose_context',
|
|
161
|
+
'WEBGL_multi_draw',
|
|
162
|
+
'WEBGL_polygon_mode',
|
|
163
|
+
'WEBGL_provoking_vertex',
|
|
164
|
+
'WEBGL_render_shared_exponent',
|
|
165
|
+
'WEBGL_stencil_texturing',
|
|
166
|
+
];
|
|
11
167
|
const PLATFORM_GPU_TABLE = {
|
|
12
|
-
// Apple Silicon
|
|
13
|
-
//
|
|
168
|
+
// Apple Silicon via ANGLE Metal backend. Verified against 2026-05 harvest on
|
|
169
|
+
// real M3 Pro running Chromium 147, so it is only known-correct for the
|
|
170
|
+
// Apple9 GPU family (M3 and M4). M1/M2 (Apple7/Apple8) limits differ and are
|
|
171
|
+
// kept out of the device table (weight 0 in apple-silicon-devices.ts) until a
|
|
172
|
+
// capture from that family exists.
|
|
14
173
|
apple_metal: {
|
|
15
174
|
maxTextureSize: 16384,
|
|
16
175
|
maxViewportDim: 16384,
|
|
@@ -22,93 +181,16 @@ const PLATFORM_GPU_TABLE = {
|
|
|
22
181
|
maxTransformFeedbackInterleavedComponents: 64,
|
|
23
182
|
aliasedLineWidthRange: [1, 1],
|
|
24
183
|
aliasedPointSizeRange: [1, 511],
|
|
184
|
+
// TWO namespaces in one field, by design of the C++ consumers:
|
|
185
|
+
// GL_* -> the emulated GLES2 GL_EXTENSIONS string (context creation)
|
|
186
|
+
// rest -> the allowlist getSupportedExtensions() filters against
|
|
187
|
+
// The allowlist is a set shared by WebGL1 and WebGL2 contexts, so the
|
|
188
|
+
// WebGL names are the WebGL1 list followed by the WebGL2-only names. Blink
|
|
189
|
+
// decides which of them each context version actually registers.
|
|
25
190
|
extensions: [
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
// The GL_ set is derived from what each WebGL extension Supported()
|
|
30
|
-
// check requires in blink/renderer/modules/webgl/*.cc; the WebGL set is
|
|
31
|
-
// the exact 36 real Chrome 151 reports on macOS 26.5.2.
|
|
32
|
-
'GL_ANGLE_clip_cull_distance',
|
|
33
|
-
'GL_ANGLE_compressed_texture_etc',
|
|
34
|
-
'GL_ANGLE_instanced_arrays',
|
|
35
|
-
'GL_ANGLE_multi_draw',
|
|
36
|
-
'GL_ANGLE_polygon_mode',
|
|
37
|
-
'GL_ANGLE_provoking_vertex',
|
|
38
|
-
'GL_ANGLE_stencil_texturing',
|
|
39
|
-
'GL_ANGLE_texture_compression_dxt1',
|
|
40
|
-
'GL_ANGLE_texture_compression_dxt3',
|
|
41
|
-
'GL_ANGLE_texture_compression_dxt5',
|
|
42
|
-
'GL_ANGLE_translated_shader_source',
|
|
43
|
-
'GL_EXT_blend_func_extended',
|
|
44
|
-
'GL_EXT_clip_control',
|
|
45
|
-
'GL_EXT_color_buffer_float',
|
|
46
|
-
'GL_EXT_color_buffer_half_float',
|
|
47
|
-
'GL_EXT_conservative_depth',
|
|
48
|
-
'GL_EXT_depth_clamp',
|
|
49
|
-
'GL_EXT_disjoint_timer_query',
|
|
50
|
-
'GL_EXT_disjoint_timer_query_webgl2',
|
|
51
|
-
'GL_EXT_float_blend',
|
|
52
|
-
'GL_EXT_polygon_offset_clamp',
|
|
53
|
-
'GL_EXT_render_snorm',
|
|
54
|
-
'GL_EXT_texture_compression_bptc',
|
|
55
|
-
'GL_EXT_texture_compression_dxt1',
|
|
56
|
-
'GL_EXT_texture_compression_rgtc',
|
|
57
|
-
'GL_EXT_texture_compression_s3tc',
|
|
58
|
-
'GL_EXT_texture_compression_s3tc_srgb',
|
|
59
|
-
'GL_EXT_texture_filter_anisotropic',
|
|
60
|
-
'GL_EXT_texture_mirror_clamp_to_edge',
|
|
61
|
-
'GL_EXT_texture_norm16',
|
|
62
|
-
'GL_IMG_texture_compression_pvrtc',
|
|
63
|
-
'GL_KHR_parallel_shader_compile',
|
|
64
|
-
'GL_KHR_texture_compression_astc_hdr',
|
|
65
|
-
'GL_KHR_texture_compression_astc_ldr',
|
|
66
|
-
'GL_NV_shader_noperspective_interpolation',
|
|
67
|
-
'GL_OES_compressed_ETC1_RGB8_texture',
|
|
68
|
-
'GL_OES_draw_buffers_indexed',
|
|
69
|
-
'GL_OES_packed_depth_stencil',
|
|
70
|
-
'GL_OES_sample_variables',
|
|
71
|
-
'GL_OES_shader_multisample_interpolation',
|
|
72
|
-
'GL_OES_texture_float_linear',
|
|
73
|
-
'GL_OES_texture_half_float',
|
|
74
|
-
'GL_QCOM_render_shared_exponent',
|
|
75
|
-
'GL_WEBGL_multi_draw',
|
|
76
|
-
'EXT_clip_control',
|
|
77
|
-
'EXT_color_buffer_float',
|
|
78
|
-
'EXT_color_buffer_half_float',
|
|
79
|
-
'EXT_conservative_depth',
|
|
80
|
-
'EXT_depth_clamp',
|
|
81
|
-
'EXT_disjoint_timer_query_webgl2',
|
|
82
|
-
'EXT_float_blend',
|
|
83
|
-
'EXT_polygon_offset_clamp',
|
|
84
|
-
'EXT_render_snorm',
|
|
85
|
-
'EXT_texture_compression_bptc',
|
|
86
|
-
'EXT_texture_compression_rgtc',
|
|
87
|
-
'EXT_texture_filter_anisotropic',
|
|
88
|
-
'EXT_texture_mirror_clamp_to_edge',
|
|
89
|
-
'EXT_texture_norm16',
|
|
90
|
-
'KHR_parallel_shader_compile',
|
|
91
|
-
'NV_shader_noperspective_interpolation',
|
|
92
|
-
'OES_draw_buffers_indexed',
|
|
93
|
-
'OES_sample_variables',
|
|
94
|
-
'OES_shader_multisample_interpolation',
|
|
95
|
-
'OES_texture_float_linear',
|
|
96
|
-
'WEBGL_blend_func_extended',
|
|
97
|
-
'WEBGL_clip_cull_distance',
|
|
98
|
-
'WEBGL_compressed_texture_astc',
|
|
99
|
-
'WEBGL_compressed_texture_etc',
|
|
100
|
-
'WEBGL_compressed_texture_etc1',
|
|
101
|
-
'WEBGL_compressed_texture_pvrtc',
|
|
102
|
-
'WEBGL_compressed_texture_s3tc',
|
|
103
|
-
'WEBGL_compressed_texture_s3tc_srgb',
|
|
104
|
-
'WEBGL_debug_renderer_info',
|
|
105
|
-
'WEBGL_debug_shaders',
|
|
106
|
-
'WEBGL_lose_context',
|
|
107
|
-
'WEBGL_multi_draw',
|
|
108
|
-
'WEBGL_polygon_mode',
|
|
109
|
-
'WEBGL_provoking_vertex',
|
|
110
|
-
'WEBGL_render_shared_exponent',
|
|
111
|
-
'WEBGL_stencil_texturing',
|
|
191
|
+
...APPLE_GL_EXTENSIONS,
|
|
192
|
+
...APPLE_WEBGL1_EXTENSIONS,
|
|
193
|
+
...APPLE_WEBGL2_EXTENSIONS.filter((n) => !APPLE_WEBGL1_EXTENSIONS.includes(n)),
|
|
112
194
|
],
|
|
113
195
|
},
|
|
114
196
|
// Linux + Mesa AMD radeonsi (radeon Vega/RDNA on a recent kernel + Mesa).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gpu-family-profiles.js","sourceRoot":"","sources":["../../src/browser-process/gpu-family-profiles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAyCH,
|
|
1
|
+
{"version":3,"file":"gpu-family-profiles.js","sourceRoot":"","sources":["../../src/browser-process/gpu-family-profiles.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The Google-only request-header integrity inputs.
|
|
3
|
+
*
|
|
4
|
+
* Real Chrome sends four headers to Google properties, gated by
|
|
5
|
+
* `google_util::IsGoogleAssociatedDomainUrl`:
|
|
6
|
+
*
|
|
7
|
+
* X-Browser-Channel: stable
|
|
8
|
+
* X-Browser-Year: 2026
|
|
9
|
+
* X-Browser-Copyright: Copyright 2026 Google LLC. All Rights Reserved.
|
|
10
|
+
* X-Browser-Validation: base64(sha1(kIntegritySeed + apiKey + userAgent))
|
|
11
|
+
*
|
|
12
|
+
* Only the last one needs data we do not have by default, and it needs two things
|
|
13
|
+
* an unbranded build gets wrong:
|
|
14
|
+
*
|
|
15
|
+
* - `kIntegritySeed` lives in a Google-internal DEPS submodule, so ours is "".
|
|
16
|
+
* It also ROTATES EVERY CHROME RELEASE, so it cannot be a compiled constant -
|
|
17
|
+
* it has to be supplied per session, matched to the version the session claims.
|
|
18
|
+
* - `google_apis::GetAPIKey()` returns OUR build's key, not the key Google bakes
|
|
19
|
+
* into a macOS Chrome. Per ADR 0004 the digest must use the key of the CLAIMED
|
|
20
|
+
* platform, so it is injected too.
|
|
21
|
+
*
|
|
22
|
+
* The user agent needs nothing: `embedder_support::GetUserAgent()` honours
|
|
23
|
+
* `--user-agent`, so the C++ side hashes exactly the string we advertise.
|
|
24
|
+
*
|
|
25
|
+
* Seeds are harvested from a real Chrome by `scripts/harvest-chrome-integrity.py`
|
|
26
|
+
* (see the harvest-chrome-integrity skill). A seed only enters this table once it
|
|
27
|
+
* has reproduced a real captured header byte for byte.
|
|
28
|
+
*/
|
|
29
|
+
/** Platform-specific Google API keys, as compiled into real branded Chrome. */
|
|
30
|
+
export declare const CHROME_API_KEYS: {
|
|
31
|
+
readonly macos: "AIzaSyDr2UxVnv_U85AbhhY8XSHSIavUW0DC-sY";
|
|
32
|
+
readonly windows: "AIzaSyA2KlwBX3mkFo30om9LUFYQhpqLoa_BNhE";
|
|
33
|
+
readonly linux: "AIzaSyBqJZh-7pA44blAaAkH6490hUFOwX0KCYM";
|
|
34
|
+
};
|
|
35
|
+
export type ClaimedIntegrityPlatform = keyof typeof CHROME_API_KEYS;
|
|
36
|
+
export interface IntegrityProfile {
|
|
37
|
+
/** The full Chrome version this seed belongs to, e.g. 157.0.8103.39. */
|
|
38
|
+
version: string;
|
|
39
|
+
/** kIntegritySeed for that exact build. */
|
|
40
|
+
seed: string;
|
|
41
|
+
/** LASTCHANGE_YEAR for that build. */
|
|
42
|
+
year: string;
|
|
43
|
+
/** CHROME_COPYRIGHT for that build. Note the capital R's. */
|
|
44
|
+
copyright: string;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Verified seeds, keyed by the full Chrome version they came from.
|
|
48
|
+
*
|
|
49
|
+
* ONLY ADD A ROW THAT HAS BEEN VERIFIED. The harvester reproduces a real captured
|
|
50
|
+
* (user agent, digest) pair before reporting a seed as confirmed, and an unverified
|
|
51
|
+
* value must never land here: a missing header set leaves us indistinguishable from
|
|
52
|
+
* every Chromium build in the world, while a header carrying a wrong digest is
|
|
53
|
+
* impossible-valued and unique.
|
|
54
|
+
*
|
|
55
|
+
* 151.0.7922.108 is verified:
|
|
56
|
+
* base64(sha1('59d2629a8246b372' + macosKey + reducedUA)) = YphvkVZHC4/QbFYqn/v4wI6lmx0=
|
|
57
|
+
* which is exactly the header captured from a real Chrome 151.0.7922.108 / macOS 26.5.2.
|
|
58
|
+
*
|
|
59
|
+
* 156.0.8078.80 is verified against real Chrome on macOS (2026-11-04):
|
|
60
|
+
* UA: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/156.0.0.0 Safari/537.36
|
|
61
|
+
* base64(sha1('25f19a0a21434856' + macosKey + UA)) = p0ryEJ6LCa7iMn63FawDjO0pVio=
|
|
62
|
+
* All 65 captured Google requests carried that digest.
|
|
63
|
+
*
|
|
64
|
+
* 157.0.8103.39 is verified against real Chrome on macOS (official dmg, 2026-11-04):
|
|
65
|
+
* UA: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/157.0.0.0 Safari/537.36
|
|
66
|
+
* base64(sha1('c7311ddf97a360ac' + macosKey + UA)) = GVcRH2YKULBIwBNheMTMHagkbO0=
|
|
67
|
+
* All 62 captured Google requests carried that digest.
|
|
68
|
+
*
|
|
69
|
+
* 157.0.8103.38 is verified against real Chrome on Linux (official deb, 2026-11-04):
|
|
70
|
+
* UA: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/157.0.0.0 Safari/537.36
|
|
71
|
+
* base64(sha1('ab4c254bf3136520' + linuxKey + UA)) = gY7B/hYIRXcXtzAlThaB5EzMNaw=
|
|
72
|
+
* All 65 captured Google requests carried that digest.
|
|
73
|
+
* Mac and Linux shipped different patch levels of 157, so each platform has its own row: a persona must claim
|
|
74
|
+
* the build its platform actually received.
|
|
75
|
+
*
|
|
76
|
+
* The other two were extracted by the same anchored method but have no capture yet,
|
|
77
|
+
* so they are recorded as unverified and are NOT eligible for use.
|
|
78
|
+
*/
|
|
79
|
+
export declare const VERIFIED_INTEGRITY_PROFILES: Record<string, IntegrityProfile>;
|
|
80
|
+
/** Extracted but NOT verified against a real capture. Do not ship these. */
|
|
81
|
+
export declare const UNVERIFIED_SEEDS: Record<string, string>;
|
|
82
|
+
/**
|
|
83
|
+
* The version we advertise when integrity headers are enabled.
|
|
84
|
+
*
|
|
85
|
+
* This is the crux of the coupling. The REDUCED user agent carries no patch level
|
|
86
|
+
* (`Chrome/156.0.0.0`), so it is identical across every 156.x build and the seed is
|
|
87
|
+
* the only version-specific input to the digest. But `sec-ch-ua-full-version` DOES
|
|
88
|
+
* carry the patch level, and Google can recompute the digest using the seed for
|
|
89
|
+
* whichever version we claim there.
|
|
90
|
+
*
|
|
91
|
+
* So the claimed full version and the seed must come from the same build.
|
|
92
|
+
* Our binary is 157.0.8103.39 (the macOS stable build), and its macOS seed is verified against a real capture.
|
|
93
|
+
* The advertised full version therefore matches both the binary and the seed.
|
|
94
|
+
*/
|
|
95
|
+
export declare const INTEGRITY_CLAIMED_VERSION = "157.0.8103.39";
|
|
96
|
+
/**
|
|
97
|
+
* Build the launch switches, or return an empty list when we cannot do it correctly.
|
|
98
|
+
*
|
|
99
|
+
* Returning nothing is a deliberate, safe outcome rather than a failure: the patched
|
|
100
|
+
* C++ side emits no headers at all when the switches are absent, which leaves us in
|
|
101
|
+
* the large crowd of Chromium builds that send none. Emitting a digest built from a
|
|
102
|
+
* mismatched seed, or the wrong platform's key, would be unique and therefore worse.
|
|
103
|
+
*/
|
|
104
|
+
export declare function buildIntegrityHeaderArgs(options: {
|
|
105
|
+
/** OS the session CLAIMS, not the host OS. */
|
|
106
|
+
claimedPlatform: ClaimedIntegrityPlatform;
|
|
107
|
+
/** Full Chrome version the session advertises via UA-CH. */
|
|
108
|
+
claimedVersion: string;
|
|
109
|
+
}): {
|
|
110
|
+
args: string[];
|
|
111
|
+
skipped?: string;
|
|
112
|
+
};
|
|
113
|
+
/**
|
|
114
|
+
* Build the `integrity` block for the session's JSON config, and align the claimed
|
|
115
|
+
* full version to the seed we actually hold.
|
|
116
|
+
*
|
|
117
|
+
* THE COUPLING THIS RESOLVES. The reduced user agent carries no patch level
|
|
118
|
+
* (`Chrome/156.0.0.0`), so it is identical across every 156.x build. But
|
|
119
|
+
* `sec-ch-ua-full-version` and `fullVersionList` DO carry it, and Google can
|
|
120
|
+
* recompute the digest with the seed belonging to whichever version we advertise
|
|
121
|
+
* there. So the advertised full version and the seed must come from the same build.
|
|
122
|
+
*
|
|
123
|
+
* The default profile is the verified macOS capture for our 157.0.8103.39 binary.
|
|
124
|
+
* This keeps every advertised full-version field aligned with that profile,
|
|
125
|
+
* including when the input config still carries an older version.
|
|
126
|
+
*
|
|
127
|
+
* Mutates the config in place and returns whether it did anything, so the caller can
|
|
128
|
+
* log the decision rather than silently shipping a mismatch.
|
|
129
|
+
*/
|
|
130
|
+
export declare function applyIntegrityToConfig(config: {
|
|
131
|
+
navigator?: {
|
|
132
|
+
userAgentData?: {
|
|
133
|
+
platform?: string;
|
|
134
|
+
uaFullVersion?: string;
|
|
135
|
+
brands?: {
|
|
136
|
+
brand: string;
|
|
137
|
+
version: string;
|
|
138
|
+
full_version?: string;
|
|
139
|
+
}[];
|
|
140
|
+
fullVersionList?: {
|
|
141
|
+
brand: string;
|
|
142
|
+
version: string;
|
|
143
|
+
full_version?: string;
|
|
144
|
+
}[];
|
|
145
|
+
};
|
|
146
|
+
platform?: string;
|
|
147
|
+
};
|
|
148
|
+
integrity?: {
|
|
149
|
+
seed: string;
|
|
150
|
+
apiKey: string;
|
|
151
|
+
year: string;
|
|
152
|
+
copyright: string;
|
|
153
|
+
};
|
|
154
|
+
}, claimedPlatform: ClaimedIntegrityPlatform, version?: string): {
|
|
155
|
+
applied: boolean;
|
|
156
|
+
reason?: string;
|
|
157
|
+
};
|
|
158
|
+
//# sourceMappingURL=integrity-headers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"integrity-headers.d.ts","sourceRoot":"","sources":["../../src/browser-process/integrity-headers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAIH,+EAA+E;AAC/E,eAAO,MAAM,eAAe;;;;CAIlB,CAAC;AAEX,MAAM,MAAM,wBAAwB,GAAG,MAAM,OAAO,eAAe,CAAC;AAEpE,MAAM,WAAW,gBAAgB;IAC7B,wEAAwE;IACxE,OAAO,EAAE,MAAM,CAAC;IAChB,2CAA2C;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,sCAAsC;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,6DAA6D;IAC7D,SAAS,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,eAAO,MAAM,2BAA2B,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAyBxE,CAAC;AAEF,4EAA4E;AAC5E,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAGnD,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,yBAAyB,kBAAkB,CAAC;AAEzD;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE;IAC9C,8CAA8C;IAC9C,eAAe,EAAE,wBAAwB,CAAC;IAC1C,4DAA4D;IAC5D,cAAc,EAAE,MAAM,CAAC;CAC1B,GAAG;IAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAyBvC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,sBAAsB,CAClC,MAAM,EAAE;IACJ,SAAS,CAAC,EAAE;QACR,aAAa,CAAC,EAAE;YACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;YAClB,aAAa,CAAC,EAAE,MAAM,CAAC;YACvB,MAAM,CAAC,EAAE;gBAAE,KAAK,EAAE,MAAM,CAAC;gBAAC,OAAO,EAAE,MAAM,CAAC;gBAAC,YAAY,CAAC,EAAE,MAAM,CAAA;aAAE,EAAE,CAAC;YACrE,eAAe,CAAC,EAAE;gBAAE,KAAK,EAAE,MAAM,CAAC;gBAAC,OAAO,EAAE,MAAM,CAAC;gBAAC,YAAY,CAAC,EAAE,MAAM,CAAA;aAAE,EAAE,CAAC;SACjF,CAAC;QACF,QAAQ,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,SAAS,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;CACjF,EACD,eAAe,EAAE,wBAAwB,EACzC,OAAO,GAAE,MAAkC,GAC5C;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAuEvC"}
|