/** * Chrome fingerprint definitions. * * TLS values are byte-accurate against real curl-impersonate ClientHello * captures. The authoritative ground truth is the lwthiker/curl-impersonate * wire captures (testing-worktree/captures/_probe/output/chrome*.json) together * with their reported ja3 / ja4 / peetprint fingerprints. Every value here is * verified against those captures: * * - chrome-120: ja3 698f6d684588ddc1217dfb4454916129, peetprint * 8ad9325e12f531d2983b78860de7b0ec (no post-quantum group). * - chrome-124..130: X25519Kyber768 (0x6399) added to supported_groups. * - chrome-131+: X25519MLKEM768 (0x11ec) replaces Kyber768; the * application_settings extension moves from 17513 to 17613. * * Chrome permutes its extension order at runtime (tls_permute_extensions), so * `extensionOrder` stores the canonical pre-permutation seed that * curl-impersonate configures. The order was verified via a curl_cffi capture * against tls.peet.ws, which reports the normalized extension sequence. * GREASE slots are tracked separately via the `grease` flag; the runtime * randomizes the actual 0x?a?a values per RFC 8701. */ import type { BrowserProfile } from "../types.js"; /** * Canonical Chrome extension order (wire order, GREASE slots excluded). * * Captured via curl_cffi (curl-impersonate) against tls.peet.ws, which reports * the normalized order Chrome's BoringSSL emits before runtime extension * permutation (tls_permute_extensions). Notable: signature_algorithms (13) * leads, server_name (0) sits mid-list, and supported_groups (10) / ALPN (16) * trail near the end. The only version-dependent slot is application_settings: * 17513 (application_settings_old) through chrome ~131, then 17613 * (application_settings) from chrome ~132 onward. * * Shared by Edge (Chromium-based) — see {@link ../profiles/edge.ts}. */ export declare const chromeExtensionOrder: (appSettings: number) => readonly number[]; export declare const chrome120: BrowserProfile; export declare const chrome128: BrowserProfile; export declare const chrome140: BrowserProfile; export declare const ChromeProfiles: { readonly chrome120: BrowserProfile; readonly chrome128: BrowserProfile; readonly chrome140: BrowserProfile; }; //# sourceMappingURL=chrome.d.ts.map