nlcurl 0.1.0 → 0.2.0
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/README.md +5 -13
- package/dist/cli/args.d.ts +37 -5
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +6 -17
- package/dist/cli/args.js.map +1 -1
- package/dist/cli/index.d.ts +3 -3
- package/dist/cli/index.js +25 -10
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/output.d.ts +24 -7
- package/dist/cli/output.d.ts.map +1 -1
- package/dist/cli/output.js +24 -12
- package/dist/cli/output.js.map +1 -1
- package/dist/cookies/jar.d.ts +45 -13
- package/dist/cookies/jar.d.ts.map +1 -1
- package/dist/cookies/jar.js +88 -29
- package/dist/cookies/jar.js.map +1 -1
- package/dist/cookies/parser.d.ts +25 -3
- package/dist/cookies/parser.d.ts.map +1 -1
- package/dist/cookies/parser.js +12 -7
- package/dist/cookies/parser.js.map +1 -1
- package/dist/core/client.d.ts +49 -33
- package/dist/core/client.d.ts.map +1 -1
- package/dist/core/client.js +64 -38
- package/dist/core/client.js.map +1 -1
- package/dist/core/errors.d.ts +94 -6
- package/dist/core/errors.d.ts.map +1 -1
- package/dist/core/errors.js +95 -6
- package/dist/core/errors.js.map +1 -1
- package/dist/core/request.d.ts +96 -30
- package/dist/core/request.d.ts.map +1 -1
- package/dist/core/request.js +0 -3
- package/dist/core/request.js.map +1 -1
- package/dist/core/response.d.ts +92 -8
- package/dist/core/response.d.ts.map +1 -1
- package/dist/core/response.js +92 -7
- package/dist/core/response.js.map +1 -1
- package/dist/core/session.d.ts +109 -14
- package/dist/core/session.d.ts.map +1 -1
- package/dist/core/session.js +124 -46
- package/dist/core/session.js.map +1 -1
- package/dist/fingerprints/akamai.d.ts +11 -11
- package/dist/fingerprints/akamai.d.ts.map +1 -1
- package/dist/fingerprints/akamai.js +10 -14
- package/dist/fingerprints/akamai.js.map +1 -1
- package/dist/fingerprints/database.d.ts +14 -15
- package/dist/fingerprints/database.d.ts.map +1 -1
- package/dist/fingerprints/database.js +14 -19
- package/dist/fingerprints/database.js.map +1 -1
- package/dist/fingerprints/extensions.d.ts +121 -27
- package/dist/fingerprints/extensions.d.ts.map +1 -1
- package/dist/fingerprints/extensions.js +132 -49
- package/dist/fingerprints/extensions.js.map +1 -1
- package/dist/fingerprints/ja3.d.ts +34 -18
- package/dist/fingerprints/ja3.d.ts.map +1 -1
- package/dist/fingerprints/ja3.js +34 -18
- package/dist/fingerprints/ja3.js.map +1 -1
- package/dist/fingerprints/profiles/chrome.d.ts +21 -10
- package/dist/fingerprints/profiles/chrome.d.ts.map +1 -1
- package/dist/fingerprints/profiles/chrome.js +25 -22
- package/dist/fingerprints/profiles/chrome.js.map +1 -1
- package/dist/fingerprints/profiles/edge.d.ts +10 -7
- package/dist/fingerprints/profiles/edge.d.ts.map +1 -1
- package/dist/fingerprints/profiles/edge.js +10 -10
- package/dist/fingerprints/profiles/edge.js.map +1 -1
- package/dist/fingerprints/profiles/firefox.d.ts +11 -3
- package/dist/fingerprints/profiles/firefox.d.ts.map +1 -1
- package/dist/fingerprints/profiles/firefox.js +15 -14
- package/dist/fingerprints/profiles/firefox.js.map +1 -1
- package/dist/fingerprints/profiles/safari.d.ts +14 -3
- package/dist/fingerprints/profiles/safari.d.ts.map +1 -1
- package/dist/fingerprints/profiles/safari.js +16 -13
- package/dist/fingerprints/profiles/safari.js.map +1 -1
- package/dist/fingerprints/profiles/tor.d.ts +8 -7
- package/dist/fingerprints/profiles/tor.d.ts.map +1 -1
- package/dist/fingerprints/profiles/tor.js +8 -14
- package/dist/fingerprints/profiles/tor.js.map +1 -1
- package/dist/fingerprints/types.d.ts +70 -47
- package/dist/fingerprints/types.d.ts.map +1 -1
- package/dist/fingerprints/types.js +0 -7
- package/dist/fingerprints/types.js.map +1 -1
- package/dist/http/h1/client.d.ts +30 -9
- package/dist/http/h1/client.d.ts.map +1 -1
- package/dist/http/h1/client.js +152 -15
- package/dist/http/h1/client.js.map +1 -1
- package/dist/http/h1/encoder.d.ts +9 -6
- package/dist/http/h1/encoder.d.ts.map +1 -1
- package/dist/http/h1/encoder.js +8 -12
- package/dist/http/h1/encoder.js.map +1 -1
- package/dist/http/h1/parser.d.ts +68 -14
- package/dist/http/h1/parser.d.ts.map +1 -1
- package/dist/http/h1/parser.js +92 -37
- package/dist/http/h1/parser.js.map +1 -1
- package/dist/http/h2/client.d.ts +81 -14
- package/dist/http/h2/client.d.ts.map +1 -1
- package/dist/http/h2/client.js +465 -63
- package/dist/http/h2/client.js.map +1 -1
- package/dist/http/h2/frames.d.ts +103 -6
- package/dist/http/h2/frames.d.ts.map +1 -1
- package/dist/http/h2/frames.js +96 -17
- package/dist/http/h2/frames.js.map +1 -1
- package/dist/http/h2/hpack.d.ts +30 -5
- package/dist/http/h2/hpack.d.ts.map +1 -1
- package/dist/http/h2/hpack.js +39 -35
- package/dist/http/h2/hpack.js.map +1 -1
- package/dist/http/negotiator.d.ts +35 -12
- package/dist/http/negotiator.d.ts.map +1 -1
- package/dist/http/negotiator.js +89 -24
- package/dist/http/negotiator.js.map +1 -1
- package/dist/http/pool.d.ts +66 -17
- package/dist/http/pool.d.ts.map +1 -1
- package/dist/http/pool.js +47 -20
- package/dist/http/pool.js.map +1 -1
- package/dist/index.d.ts +2 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -13
- package/dist/index.js.map +1 -1
- package/dist/middleware/interceptor.d.ts +40 -8
- package/dist/middleware/interceptor.d.ts.map +1 -1
- package/dist/middleware/interceptor.js +28 -6
- package/dist/middleware/interceptor.js.map +1 -1
- package/dist/middleware/rate-limiter.d.ts +18 -5
- package/dist/middleware/rate-limiter.d.ts.map +1 -1
- package/dist/middleware/rate-limiter.js +12 -7
- package/dist/middleware/rate-limiter.js.map +1 -1
- package/dist/middleware/retry.d.ts +17 -5
- package/dist/middleware/retry.d.ts.map +1 -1
- package/dist/middleware/retry.js +13 -11
- package/dist/middleware/retry.js.map +1 -1
- package/dist/proxy/http-proxy.d.ts +17 -9
- package/dist/proxy/http-proxy.d.ts.map +1 -1
- package/dist/proxy/http-proxy.js +9 -13
- package/dist/proxy/http-proxy.js.map +1 -1
- package/dist/proxy/socks.d.ts +20 -9
- package/dist/proxy/socks.d.ts.map +1 -1
- package/dist/proxy/socks.js +20 -31
- package/dist/proxy/socks.js.map +1 -1
- package/dist/tls/constants.d.ts +74 -4
- package/dist/tls/constants.d.ts.map +1 -1
- package/dist/tls/constants.js +75 -21
- package/dist/tls/constants.js.map +1 -1
- package/dist/tls/node-engine.d.ts +17 -16
- package/dist/tls/node-engine.d.ts.map +1 -1
- package/dist/tls/node-engine.js +20 -27
- package/dist/tls/node-engine.js.map +1 -1
- package/dist/tls/stealth/client-hello.d.ts +32 -16
- package/dist/tls/stealth/client-hello.d.ts.map +1 -1
- package/dist/tls/stealth/client-hello.js +13 -37
- package/dist/tls/stealth/client-hello.js.map +1 -1
- package/dist/tls/stealth/engine.d.ts +18 -10
- package/dist/tls/stealth/engine.d.ts.map +1 -1
- package/dist/tls/stealth/engine.js +18 -24
- package/dist/tls/stealth/engine.js.map +1 -1
- package/dist/tls/stealth/handshake.d.ts +31 -17
- package/dist/tls/stealth/handshake.d.ts.map +1 -1
- package/dist/tls/stealth/handshake.js +173 -74
- package/dist/tls/stealth/handshake.js.map +1 -1
- package/dist/tls/stealth/key-schedule.d.ts +89 -32
- package/dist/tls/stealth/key-schedule.d.ts.map +1 -1
- package/dist/tls/stealth/key-schedule.js +62 -42
- package/dist/tls/stealth/key-schedule.js.map +1 -1
- package/dist/tls/stealth/record-layer.d.ts +76 -25
- package/dist/tls/stealth/record-layer.d.ts.map +1 -1
- package/dist/tls/stealth/record-layer.js +66 -36
- package/dist/tls/stealth/record-layer.js.map +1 -1
- package/dist/tls/types.d.ts +33 -25
- package/dist/tls/types.d.ts.map +1 -1
- package/dist/tls/types.js +0 -4
- package/dist/tls/types.js.map +1 -1
- package/dist/utils/buffer-reader.d.ts +99 -7
- package/dist/utils/buffer-reader.d.ts.map +1 -1
- package/dist/utils/buffer-reader.js +99 -7
- package/dist/utils/buffer-reader.js.map +1 -1
- package/dist/utils/buffer-writer.d.ts +99 -10
- package/dist/utils/buffer-writer.d.ts.map +1 -1
- package/dist/utils/buffer-writer.js +101 -12
- package/dist/utils/buffer-writer.js.map +1 -1
- package/dist/utils/encoding.d.ts +33 -8
- package/dist/utils/encoding.d.ts.map +1 -1
- package/dist/utils/encoding.js +58 -13
- package/dist/utils/encoding.js.map +1 -1
- package/dist/utils/logger.d.ts +61 -2
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +52 -4
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/url.d.ts +47 -7
- package/dist/utils/url.d.ts.map +1 -1
- package/dist/utils/url.js +47 -7
- package/dist/utils/url.js.map +1 -1
- package/dist/ws/client.d.ts +59 -15
- package/dist/ws/client.d.ts.map +1 -1
- package/dist/ws/client.js +34 -27
- package/dist/ws/client.js.map +1 -1
- package/dist/ws/frame.d.ts +43 -9
- package/dist/ws/frame.d.ts.map +1 -1
- package/dist/ws/frame.js +35 -19
- package/dist/ws/frame.js.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ja3.js","sourceRoot":"","sources":["../../src/fingerprints/ja3.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ja3.js","sourceRoot":"","sources":["../../src/fingerprints/ja3.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,30 +1,41 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Chrome browser fingerprint profiles.
|
|
3
|
-
*
|
|
4
|
-
* Each profile captures the exact TLS ClientHello extension order,
|
|
5
|
-
* cipher suite list, HTTP/2 settings, and default header set produced
|
|
6
|
-
* by that Chrome version. Values were derived from real browser
|
|
7
|
-
* captures and the curl-impersonate project.
|
|
8
|
-
*/
|
|
9
1
|
import type { BrowserProfile } from '../types.js';
|
|
2
|
+
/** {@link BrowserProfile} impersonating Chrome 99 (Chromium 99.0.4844.51). */
|
|
10
3
|
export declare const chrome99: BrowserProfile;
|
|
4
|
+
/** {@link BrowserProfile} impersonating Chrome 100 (Chromium 100.0.4896.75). */
|
|
11
5
|
export declare const chrome100: BrowserProfile;
|
|
6
|
+
/** {@link BrowserProfile} impersonating Chrome 101 (Chromium 101.0.4951.67). */
|
|
12
7
|
export declare const chrome101: BrowserProfile;
|
|
8
|
+
/** {@link BrowserProfile} impersonating Chrome 104 (Chromium 104.0.5112.81). */
|
|
13
9
|
export declare const chrome104: BrowserProfile;
|
|
10
|
+
/** {@link BrowserProfile} impersonating Chrome 107 (Chromium 107.0.5304.107). */
|
|
14
11
|
export declare const chrome107: BrowserProfile;
|
|
12
|
+
/** {@link BrowserProfile} impersonating Chrome 110 (Chromium 110.0.5481.177). */
|
|
15
13
|
export declare const chrome110: BrowserProfile;
|
|
14
|
+
/** {@link BrowserProfile} impersonating Chrome 116 — includes ALPS extension. */
|
|
16
15
|
export declare const chrome116: BrowserProfile;
|
|
16
|
+
/** {@link BrowserProfile} impersonating Chrome 119 — includes ALPS extension. */
|
|
17
17
|
export declare const chrome119: BrowserProfile;
|
|
18
|
+
/** {@link BrowserProfile} impersonating Chrome 120 — includes ALPS and ECH extensions. */
|
|
18
19
|
export declare const chrome120: BrowserProfile;
|
|
20
|
+
/** {@link BrowserProfile} impersonating Chrome 123 — includes ALPS and ECH extensions. */
|
|
19
21
|
export declare const chrome123: BrowserProfile;
|
|
22
|
+
/** {@link BrowserProfile} impersonating Chrome 124 — includes ALPS and ECH extensions. */
|
|
20
23
|
export declare const chrome124: BrowserProfile;
|
|
24
|
+
/** {@link BrowserProfile} impersonating Chrome 126 — includes ALPS and ECH extensions. */
|
|
21
25
|
export declare const chrome126: BrowserProfile;
|
|
26
|
+
/** {@link BrowserProfile} impersonating Chrome 127 — includes ALPS and ECH extensions. */
|
|
22
27
|
export declare const chrome127: BrowserProfile;
|
|
28
|
+
/** {@link BrowserProfile} impersonating Chrome 131 — includes ALPS and ECH extensions. */
|
|
23
29
|
export declare const chrome131: BrowserProfile;
|
|
30
|
+
/** {@link BrowserProfile} impersonating Chrome 133 — includes ALPS and ECH extensions. */
|
|
24
31
|
export declare const chrome133: BrowserProfile;
|
|
32
|
+
/** {@link BrowserProfile} impersonating Chrome 136 — includes ALPS and ECH extensions. */
|
|
25
33
|
export declare const chrome136: BrowserProfile;
|
|
26
|
-
/**
|
|
34
|
+
/** Alias for the most recent Chrome profile ({@link chrome136}). */
|
|
27
35
|
export declare const chromeLatest: BrowserProfile;
|
|
28
|
-
/**
|
|
36
|
+
/**
|
|
37
|
+
* Registry of all available Chrome {@link BrowserProfile} instances keyed by
|
|
38
|
+
* profile name (e.g. `"chrome136"`) and the aliases `"chrome_latest"`.
|
|
39
|
+
*/
|
|
29
40
|
export declare const chromeProfiles: ReadonlyMap<string, BrowserProfile>;
|
|
30
41
|
//# sourceMappingURL=chrome.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chrome.d.ts","sourceRoot":"","sources":["../../../src/fingerprints/profiles/chrome.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"chrome.d.ts","sourceRoot":"","sources":["../../../src/fingerprints/profiles/chrome.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,cAAc,EAMf,MAAM,aAAa,CAAC;AAkLrB,8EAA8E;AAC9E,eAAO,MAAM,QAAQ,gBAA4C,CAAC;AAClE,gFAAgF;AAChF,eAAO,MAAM,SAAS,gBAA8C,CAAC;AACrE,gFAAgF;AAChF,eAAO,MAAM,SAAS,gBAA8C,CAAC;AACrE,gFAAgF;AAChF,eAAO,MAAM,SAAS,gBAA8C,CAAC;AACrE,iFAAiF;AACjF,eAAO,MAAM,SAAS,gBAA+C,CAAC;AACtE,iFAAiF;AACjF,eAAO,MAAM,SAAS,gBAA+C,CAAC;AACtE,iFAAiF;AACjF,eAAO,MAAM,SAAS,gBAA8D,CAAC;AACrF,iFAAiF;AACjF,eAAO,MAAM,SAAS,gBAA+D,CAAC;AACtF,0FAA0F;AAC1F,eAAO,MAAM,SAAS,gBAA0E,CAAC;AACjG,0FAA0F;AAC1F,eAAO,MAAM,SAAS,gBAAyE,CAAC;AAChG,0FAA0F;AAC1F,eAAO,MAAM,SAAS,gBAAyE,CAAC;AAChG,0FAA0F;AAC1F,eAAO,MAAM,SAAS,gBAAyE,CAAC;AAChG,0FAA0F;AAC1F,eAAO,MAAM,SAAS,gBAAyE,CAAC;AAChG,0FAA0F;AAC1F,eAAO,MAAM,SAAS,gBAAyE,CAAC;AAChG,0FAA0F;AAC1F,eAAO,MAAM,SAAS,gBAAyE,CAAC;AAChG,0FAA0F;AAC1F,eAAO,MAAM,SAAS,gBAAyE,CAAC;AAEhG,oEAAoE;AACpE,eAAO,MAAM,YAAY,gBAAY,CAAC;AAEtC;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,WAAW,CAAC,MAAM,EAAE,cAAc,CAkB7D,CAAC"}
|
|
@@ -1,14 +1,5 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Chrome browser fingerprint profiles.
|
|
3
|
-
*
|
|
4
|
-
* Each profile captures the exact TLS ClientHello extension order,
|
|
5
|
-
* cipher suite list, HTTP/2 settings, and default header set produced
|
|
6
|
-
* by that Chrome version. Values were derived from real browser
|
|
7
|
-
* captures and the curl-impersonate project.
|
|
8
|
-
*/
|
|
9
1
|
import { CipherSuite, ExtensionType, NamedGroup, SignatureScheme, ECPointFormat, PskKeyExchangeMode, CertCompressAlg, ProtocolVersion, } from '../../tls/constants.js';
|
|
10
2
|
import * as ext from '../extensions.js';
|
|
11
|
-
// ---- Shared constants ----
|
|
12
3
|
const CHROME_CIPHER_SUITES = [
|
|
13
4
|
CipherSuite.TLS_AES_128_GCM_SHA256,
|
|
14
5
|
CipherSuite.TLS_AES_256_GCM_SHA384,
|
|
@@ -57,7 +48,6 @@ const CHROME_DELEGATED_CREDS = [
|
|
|
57
48
|
SignatureScheme.RSA_PSS_RSAE_SHA384,
|
|
58
49
|
SignatureScheme.RSA_PSS_RSAE_SHA512,
|
|
59
50
|
];
|
|
60
|
-
// ---- Extension ordering (Chrome 120+) ----
|
|
61
51
|
function chromeExtensions(opts) {
|
|
62
52
|
const list = [
|
|
63
53
|
{ type: ExtensionType.SERVER_NAME, data: ext.sniData },
|
|
@@ -87,19 +77,17 @@ function chromeExtensions(opts) {
|
|
|
87
77
|
data: () => ext.echGreaseData(),
|
|
88
78
|
});
|
|
89
79
|
}
|
|
90
|
-
// delegated_credentials is placed near the end
|
|
91
80
|
list.push({
|
|
92
81
|
type: ExtensionType.DELEGATED_CREDENTIALS,
|
|
93
82
|
data: () => ext.delegatedCredentialsData(CHROME_DELEGATED_CREDS),
|
|
94
83
|
});
|
|
95
84
|
return list;
|
|
96
85
|
}
|
|
97
|
-
// ---- HTTP/2 settings (Chrome) ----
|
|
98
86
|
const CHROME_H2_SETTINGS = [
|
|
99
|
-
{ id: 1, value: 65536 },
|
|
100
|
-
{ id: 2, value: 0 },
|
|
101
|
-
{ id: 4, value: 6291456 },
|
|
102
|
-
{ id: 6, value: 262144 },
|
|
87
|
+
{ id: 1, value: 65536 },
|
|
88
|
+
{ id: 2, value: 0 },
|
|
89
|
+
{ id: 4, value: 6291456 },
|
|
90
|
+
{ id: 6, value: 262144 },
|
|
103
91
|
];
|
|
104
92
|
const CHROME_H2 = {
|
|
105
93
|
settings: CHROME_H2_SETTINGS,
|
|
@@ -107,7 +95,6 @@ const CHROME_H2 = {
|
|
|
107
95
|
pseudoHeaderOrder: [':method', ':authority', ':scheme', ':path'],
|
|
108
96
|
priorityFrames: [],
|
|
109
97
|
};
|
|
110
|
-
// ---- Shared header template ----
|
|
111
98
|
function chromeHeaders(version) {
|
|
112
99
|
const ua = `Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/${version} Safari/537.36`;
|
|
113
100
|
return {
|
|
@@ -127,7 +114,6 @@ function chromeHeaders(version) {
|
|
|
127
114
|
],
|
|
128
115
|
};
|
|
129
116
|
}
|
|
130
|
-
// ---- Shared TLS template ----
|
|
131
117
|
function chromeTLS(opts = {}) {
|
|
132
118
|
return {
|
|
133
119
|
recordVersion: ProtocolVersion.TLS_1_0,
|
|
@@ -149,7 +135,6 @@ function chromeTLS(opts = {}) {
|
|
|
149
135
|
applicationSettings: opts.alps ? ['h2'] : undefined,
|
|
150
136
|
};
|
|
151
137
|
}
|
|
152
|
-
// ---- Profile factory ----
|
|
153
138
|
function chromeProfile(name, version, opts = {}) {
|
|
154
139
|
return {
|
|
155
140
|
name,
|
|
@@ -160,26 +145,44 @@ function chromeProfile(name, version, opts = {}) {
|
|
|
160
145
|
headers: chromeHeaders(version),
|
|
161
146
|
};
|
|
162
147
|
}
|
|
163
|
-
|
|
148
|
+
/** {@link BrowserProfile} impersonating Chrome 99 (Chromium 99.0.4844.51). */
|
|
164
149
|
export const chrome99 = chromeProfile('chrome99', '99.0.4844.51');
|
|
150
|
+
/** {@link BrowserProfile} impersonating Chrome 100 (Chromium 100.0.4896.75). */
|
|
165
151
|
export const chrome100 = chromeProfile('chrome100', '100.0.4896.75');
|
|
152
|
+
/** {@link BrowserProfile} impersonating Chrome 101 (Chromium 101.0.4951.67). */
|
|
166
153
|
export const chrome101 = chromeProfile('chrome101', '101.0.4951.67');
|
|
154
|
+
/** {@link BrowserProfile} impersonating Chrome 104 (Chromium 104.0.5112.81). */
|
|
167
155
|
export const chrome104 = chromeProfile('chrome104', '104.0.5112.81');
|
|
156
|
+
/** {@link BrowserProfile} impersonating Chrome 107 (Chromium 107.0.5304.107). */
|
|
168
157
|
export const chrome107 = chromeProfile('chrome107', '107.0.5304.107');
|
|
158
|
+
/** {@link BrowserProfile} impersonating Chrome 110 (Chromium 110.0.5481.177). */
|
|
169
159
|
export const chrome110 = chromeProfile('chrome110', '110.0.5481.177');
|
|
160
|
+
/** {@link BrowserProfile} impersonating Chrome 116 — includes ALPS extension. */
|
|
170
161
|
export const chrome116 = chromeProfile('chrome116', '116.0.5845.96', { alps: true });
|
|
162
|
+
/** {@link BrowserProfile} impersonating Chrome 119 — includes ALPS extension. */
|
|
171
163
|
export const chrome119 = chromeProfile('chrome119', '119.0.6045.105', { alps: true });
|
|
164
|
+
/** {@link BrowserProfile} impersonating Chrome 120 — includes ALPS and ECH extensions. */
|
|
172
165
|
export const chrome120 = chromeProfile('chrome120', '120.0.6099.109', { alps: true, ech: true });
|
|
166
|
+
/** {@link BrowserProfile} impersonating Chrome 123 — includes ALPS and ECH extensions. */
|
|
173
167
|
export const chrome123 = chromeProfile('chrome123', '123.0.6312.86', { alps: true, ech: true });
|
|
168
|
+
/** {@link BrowserProfile} impersonating Chrome 124 — includes ALPS and ECH extensions. */
|
|
174
169
|
export const chrome124 = chromeProfile('chrome124', '124.0.6367.60', { alps: true, ech: true });
|
|
170
|
+
/** {@link BrowserProfile} impersonating Chrome 126 — includes ALPS and ECH extensions. */
|
|
175
171
|
export const chrome126 = chromeProfile('chrome126', '126.0.6478.55', { alps: true, ech: true });
|
|
172
|
+
/** {@link BrowserProfile} impersonating Chrome 127 — includes ALPS and ECH extensions. */
|
|
176
173
|
export const chrome127 = chromeProfile('chrome127', '127.0.6533.72', { alps: true, ech: true });
|
|
174
|
+
/** {@link BrowserProfile} impersonating Chrome 131 — includes ALPS and ECH extensions. */
|
|
177
175
|
export const chrome131 = chromeProfile('chrome131', '131.0.6778.86', { alps: true, ech: true });
|
|
176
|
+
/** {@link BrowserProfile} impersonating Chrome 133 — includes ALPS and ECH extensions. */
|
|
178
177
|
export const chrome133 = chromeProfile('chrome133', '133.0.6943.53', { alps: true, ech: true });
|
|
178
|
+
/** {@link BrowserProfile} impersonating Chrome 136 — includes ALPS and ECH extensions. */
|
|
179
179
|
export const chrome136 = chromeProfile('chrome136', '136.0.7103.92', { alps: true, ech: true });
|
|
180
|
-
/**
|
|
180
|
+
/** Alias for the most recent Chrome profile ({@link chrome136}). */
|
|
181
181
|
export const chromeLatest = chrome136;
|
|
182
|
-
/**
|
|
182
|
+
/**
|
|
183
|
+
* Registry of all available Chrome {@link BrowserProfile} instances keyed by
|
|
184
|
+
* profile name (e.g. `"chrome136"`) and the aliases `"chrome_latest"`.
|
|
185
|
+
*/
|
|
183
186
|
export const chromeProfiles = new Map([
|
|
184
187
|
['chrome99', chrome99],
|
|
185
188
|
['chrome100', chrome100],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chrome.js","sourceRoot":"","sources":["../../../src/fingerprints/profiles/chrome.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"chrome.js","sourceRoot":"","sources":["../../../src/fingerprints/profiles/chrome.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,16 +1,19 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Edge browser fingerprint profiles.
|
|
3
|
-
*
|
|
4
|
-
* Edge is Chromium-based, so it shares most TLS characteristics with
|
|
5
|
-
* Chrome. The primary differences are in HTTP headers (User-Agent,
|
|
6
|
-
* sec-ch-ua brand list).
|
|
7
|
-
*/
|
|
8
1
|
import type { BrowserProfile } from '../types.js';
|
|
2
|
+
/** {@link BrowserProfile} impersonating Microsoft Edge 99 (based on Chromium 99). */
|
|
9
3
|
export declare const edge99: BrowserProfile;
|
|
4
|
+
/** {@link BrowserProfile} impersonating Microsoft Edge 101 (based on Chromium 101). */
|
|
10
5
|
export declare const edge101: BrowserProfile;
|
|
6
|
+
/** {@link BrowserProfile} impersonating Microsoft Edge 126 (based on Chromium 126). */
|
|
11
7
|
export declare const edge126: BrowserProfile;
|
|
8
|
+
/** {@link BrowserProfile} impersonating Microsoft Edge 131 (based on Chromium 131). */
|
|
12
9
|
export declare const edge131: BrowserProfile;
|
|
10
|
+
/** {@link BrowserProfile} impersonating Microsoft Edge 136 (based on Chromium 136). */
|
|
13
11
|
export declare const edge136: BrowserProfile;
|
|
12
|
+
/** Alias for the most recent Edge profile ({@link edge136}). */
|
|
14
13
|
export declare const edgeLatest: BrowserProfile;
|
|
14
|
+
/**
|
|
15
|
+
* Registry of all available Edge {@link BrowserProfile} instances keyed by
|
|
16
|
+
* profile name (e.g. `"edge136"`) and the alias `"edge_latest"`.
|
|
17
|
+
*/
|
|
15
18
|
export declare const edgeProfiles: ReadonlyMap<string, BrowserProfile>;
|
|
16
19
|
//# sourceMappingURL=edge.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"edge.d.ts","sourceRoot":"","sources":["../../../src/fingerprints/profiles/edge.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"edge.d.ts","sourceRoot":"","sources":["../../../src/fingerprints/profiles/edge.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAA4B,MAAM,aAAa,CAAC;AAqD5E,qFAAqF;AACrF,eAAO,MAAM,MAAM,gBAAoE,CAAC;AACxF,uFAAuF;AACvF,eAAO,MAAM,OAAO,gBAAwE,CAAC;AAC7F,uFAAuF;AACvF,eAAO,MAAM,OAAO,gBAAwE,CAAC;AAC7F,uFAAuF;AACvF,eAAO,MAAM,OAAO,gBAAwE,CAAC;AAC7F,uFAAuF;AACvF,eAAO,MAAM,OAAO,gBAAwE,CAAC;AAE7F,gEAAgE;AAChE,eAAO,MAAM,UAAU,gBAAU,CAAC;AAElC;;;GAGG;AACH,eAAO,MAAM,YAAY,EAAE,WAAW,CAAC,MAAM,EAAE,cAAc,CAO3D,CAAC"}
|
|
@@ -1,13 +1,4 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Edge browser fingerprint profiles.
|
|
3
|
-
*
|
|
4
|
-
* Edge is Chromium-based, so it shares most TLS characteristics with
|
|
5
|
-
* Chrome. The primary differences are in HTTP headers (User-Agent,
|
|
6
|
-
* sec-ch-ua brand list).
|
|
7
|
-
*/
|
|
8
1
|
import { chromeProfiles } from './chrome.js';
|
|
9
|
-
// Edge reuses Chrome's TLS and H2 profile identically.
|
|
10
|
-
// We clone and override only the headers.
|
|
11
2
|
function edgeHeaders(edgeVersion, chromiumVersion) {
|
|
12
3
|
const ua = `Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/${chromiumVersion} Safari/537.36 Edg/${edgeVersion}`;
|
|
13
4
|
const major = edgeVersion.split('.')[0];
|
|
@@ -43,13 +34,22 @@ function edgeProfile(name, edgeVersion, chromiumVersion, baseChromeName) {
|
|
|
43
34
|
headers: edgeHeaders(edgeVersion, chromiumVersion),
|
|
44
35
|
};
|
|
45
36
|
}
|
|
46
|
-
|
|
37
|
+
/** {@link BrowserProfile} impersonating Microsoft Edge 99 (based on Chromium 99). */
|
|
47
38
|
export const edge99 = edgeProfile('edge99', '99.0.1150.30', '99.0.4844.51', 'chrome99');
|
|
39
|
+
/** {@link BrowserProfile} impersonating Microsoft Edge 101 (based on Chromium 101). */
|
|
48
40
|
export const edge101 = edgeProfile('edge101', '101.0.1210.39', '101.0.4951.67', 'chrome101');
|
|
41
|
+
/** {@link BrowserProfile} impersonating Microsoft Edge 126 (based on Chromium 126). */
|
|
49
42
|
export const edge126 = edgeProfile('edge126', '126.0.2592.56', '126.0.6478.55', 'chrome126');
|
|
43
|
+
/** {@link BrowserProfile} impersonating Microsoft Edge 131 (based on Chromium 131). */
|
|
50
44
|
export const edge131 = edgeProfile('edge131', '131.0.2903.63', '131.0.6778.86', 'chrome131');
|
|
45
|
+
/** {@link BrowserProfile} impersonating Microsoft Edge 136 (based on Chromium 136). */
|
|
51
46
|
export const edge136 = edgeProfile('edge136', '136.0.3240.50', '136.0.7103.92', 'chrome136');
|
|
47
|
+
/** Alias for the most recent Edge profile ({@link edge136}). */
|
|
52
48
|
export const edgeLatest = edge136;
|
|
49
|
+
/**
|
|
50
|
+
* Registry of all available Edge {@link BrowserProfile} instances keyed by
|
|
51
|
+
* profile name (e.g. `"edge136"`) and the alias `"edge_latest"`.
|
|
52
|
+
*/
|
|
53
53
|
export const edgeProfiles = new Map([
|
|
54
54
|
['edge99', edge99],
|
|
55
55
|
['edge101', edge101],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"edge.js","sourceRoot":"","sources":["../../../src/fingerprints/profiles/edge.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"edge.js","sourceRoot":"","sources":["../../../src/fingerprints/profiles/edge.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,SAAS,WAAW,CAAC,WAAmB,EAAE,eAAuB;IAC/D,MAAM,EAAE,GAAG,2FAA2F,eAAe,sBAAsB,WAAW,EAAE,CAAC;IACzJ,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACxC,MAAM,WAAW,GAAG,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAClD,OAAO;QACL,SAAS,EAAE,EAAE;QACb,OAAO,EAAE;YACP,CAAC,oBAAoB,EAAE,WAAW,CAAC;YACnC,CAAC,YAAY,EAAE,EAAE,CAAC;YAClB,CAAC,WAAW,EAAE,iBAAiB,WAAW,+CAA+C,KAAK,GAAG,CAAC;YAClG,CAAC,kBAAkB,EAAE,IAAI,CAAC;YAC1B,CAAC,QAAQ,EAAE,yIAAyI,CAAC;YACrJ,CAAC,gBAAgB,EAAE,MAAM,CAAC;YAC1B,CAAC,gBAAgB,EAAE,UAAU,CAAC;YAC9B,CAAC,gBAAgB,EAAE,IAAI,CAAC;YACxB,CAAC,gBAAgB,EAAE,UAAU,CAAC;YAC9B,CAAC,iBAAiB,EAAE,yBAAyB,CAAC;YAC9C,CAAC,iBAAiB,EAAE,gBAAgB,CAAC;SACtC;KACF,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAClB,IAAY,EACZ,WAAmB,EACnB,eAAuB,EACvB,cAAsB;IAEtB,MAAM,IAAI,GAAG,cAAc,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChD,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CAAC,wBAAwB,cAAc,iCAAiC,IAAI,IAAI,CAAC,CAAC;IACnG,CAAC;IACD,OAAO;QACL,IAAI;QACJ,OAAO,EAAE,MAAM;QACf,OAAO,EAAE,WAAW;QACpB,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,EAAE,EAAE,IAAI,CAAC,EAAE;QACX,OAAO,EAAE,WAAW,CAAC,WAAW,EAAE,eAAe,CAAC;KACnD,CAAC;AACJ,CAAC;AAED,qFAAqF;AACrF,MAAM,CAAC,MAAM,MAAM,GAAG,WAAW,CAAC,QAAQ,EAAE,cAAc,EAAE,cAAc,EAAE,UAAU,CAAC,CAAC;AACxF,uFAAuF;AACvF,MAAM,CAAC,MAAM,OAAO,GAAG,WAAW,CAAC,SAAS,EAAE,eAAe,EAAE,eAAe,EAAE,WAAW,CAAC,CAAC;AAC7F,uFAAuF;AACvF,MAAM,CAAC,MAAM,OAAO,GAAG,WAAW,CAAC,SAAS,EAAE,eAAe,EAAE,eAAe,EAAE,WAAW,CAAC,CAAC;AAC7F,uFAAuF;AACvF,MAAM,CAAC,MAAM,OAAO,GAAG,WAAW,CAAC,SAAS,EAAE,eAAe,EAAE,eAAe,EAAE,WAAW,CAAC,CAAC;AAC7F,uFAAuF;AACvF,MAAM,CAAC,MAAM,OAAO,GAAG,WAAW,CAAC,SAAS,EAAE,eAAe,EAAE,eAAe,EAAE,WAAW,CAAC,CAAC;AAE7F,gEAAgE;AAChE,MAAM,CAAC,MAAM,UAAU,GAAG,OAAO,CAAC;AAElC;;;GAGG;AACH,MAAM,CAAC,MAAM,YAAY,GAAwC,IAAI,GAAG,CAAC;IACvE,CAAC,QAAQ,EAAE,MAAM,CAAC;IAClB,CAAC,SAAS,EAAE,OAAO,CAAC;IACpB,CAAC,SAAS,EAAE,OAAO,CAAC;IACpB,CAAC,SAAS,EAAE,OAAO,CAAC;IACpB,CAAC,SAAS,EAAE,OAAO,CAAC;IACpB,CAAC,aAAa,EAAE,OAAO,CAAC;CACzB,CAAC,CAAC"}
|
|
@@ -1,13 +1,21 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Firefox browser fingerprint profiles.
|
|
3
|
-
*/
|
|
4
1
|
import type { BrowserProfile } from '../types.js';
|
|
2
|
+
/** {@link BrowserProfile} impersonating Firefox 133. */
|
|
5
3
|
export declare const firefox133: BrowserProfile;
|
|
4
|
+
/** {@link BrowserProfile} impersonating Firefox 134. */
|
|
6
5
|
export declare const firefox134: BrowserProfile;
|
|
6
|
+
/** {@link BrowserProfile} impersonating Firefox 135. */
|
|
7
7
|
export declare const firefox135: BrowserProfile;
|
|
8
|
+
/** {@link BrowserProfile} impersonating Firefox 136. */
|
|
8
9
|
export declare const firefox136: BrowserProfile;
|
|
10
|
+
/** {@link BrowserProfile} impersonating Firefox 137. */
|
|
9
11
|
export declare const firefox137: BrowserProfile;
|
|
12
|
+
/** {@link BrowserProfile} impersonating Firefox 138. */
|
|
10
13
|
export declare const firefox138: BrowserProfile;
|
|
14
|
+
/** Alias for the most recent Firefox profile ({@link firefox138}). */
|
|
11
15
|
export declare const firefoxLatest: BrowserProfile;
|
|
16
|
+
/**
|
|
17
|
+
* Registry of all available Firefox {@link BrowserProfile} instances keyed by
|
|
18
|
+
* profile name (e.g. `"firefox138"`) and the alias `"firefox_latest"`.
|
|
19
|
+
*/
|
|
12
20
|
export declare const firefoxProfiles: ReadonlyMap<string, BrowserProfile>;
|
|
13
21
|
//# sourceMappingURL=firefox.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"firefox.d.ts","sourceRoot":"","sources":["../../../src/fingerprints/profiles/firefox.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"firefox.d.ts","sourceRoot":"","sources":["../../../src/fingerprints/profiles/firefox.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,cAAc,EAKf,MAAM,aAAa,CAAC;AAwJrB,wDAAwD;AACxD,eAAO,MAAM,UAAU,gBAAwC,CAAC;AAChE,wDAAwD;AACxD,eAAO,MAAM,UAAU,gBAAwC,CAAC;AAChE,wDAAwD;AACxD,eAAO,MAAM,UAAU,gBAAwC,CAAC;AAChE,wDAAwD;AACxD,eAAO,MAAM,UAAU,gBAAwC,CAAC;AAChE,wDAAwD;AACxD,eAAO,MAAM,UAAU,gBAAwC,CAAC;AAChE,wDAAwD;AACxD,eAAO,MAAM,UAAU,gBAAwC,CAAC;AAEhE,sEAAsE;AACtE,eAAO,MAAM,aAAa,gBAAa,CAAC;AAExC;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,WAAW,CAAC,MAAM,EAAE,cAAc,CAQ9D,CAAC"}
|
|
@@ -1,9 +1,5 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Firefox browser fingerprint profiles.
|
|
3
|
-
*/
|
|
4
1
|
import { CipherSuite, ExtensionType, NamedGroup, SignatureScheme, ECPointFormat, PskKeyExchangeMode, ProtocolVersion, } from '../../tls/constants.js';
|
|
5
2
|
import * as ext from '../extensions.js';
|
|
6
|
-
// ---- Firefox cipher suites ----
|
|
7
3
|
const FF_CIPHER_SUITES = [
|
|
8
4
|
CipherSuite.TLS_AES_128_GCM_SHA256,
|
|
9
5
|
CipherSuite.TLS_CHACHA20_POLY1305_SHA256,
|
|
@@ -44,7 +40,6 @@ const FF_SUPPORTED_VERSIONS = [
|
|
|
44
40
|
ProtocolVersion.TLS_1_3,
|
|
45
41
|
ProtocolVersion.TLS_1_2,
|
|
46
42
|
];
|
|
47
|
-
// ---- Extension ordering (Firefox) ----
|
|
48
43
|
function firefoxExtensions() {
|
|
49
44
|
return [
|
|
50
45
|
{ type: ExtensionType.SERVER_NAME, data: ext.sniData },
|
|
@@ -70,19 +65,17 @@ function firefoxExtensions() {
|
|
|
70
65
|
{ type: ExtensionType.RECORD_SIZE_LIMIT, data: () => ext.recordSizeLimitData(16385) },
|
|
71
66
|
];
|
|
72
67
|
}
|
|
73
|
-
// ---- HTTP/2 ----
|
|
74
68
|
const FF_H2 = {
|
|
75
69
|
settings: [
|
|
76
|
-
{ id: 1, value: 65536 },
|
|
77
|
-
{ id: 2, value: 0 },
|
|
78
|
-
{ id: 4, value: 131072 },
|
|
79
|
-
{ id: 5, value: 16384 },
|
|
70
|
+
{ id: 1, value: 65536 },
|
|
71
|
+
{ id: 2, value: 0 },
|
|
72
|
+
{ id: 4, value: 131072 },
|
|
73
|
+
{ id: 5, value: 16384 },
|
|
80
74
|
],
|
|
81
75
|
windowUpdate: 12517377,
|
|
82
76
|
pseudoHeaderOrder: [':method', ':path', ':authority', ':scheme'],
|
|
83
77
|
priorityFrames: [],
|
|
84
78
|
};
|
|
85
|
-
// ---- Header template ----
|
|
86
79
|
function firefoxHeaders(version) {
|
|
87
80
|
const major = version.split('.')[0];
|
|
88
81
|
const ua = `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:${major}.0) Gecko/20100101 Firefox/${major}.0`;
|
|
@@ -101,7 +94,6 @@ function firefoxHeaders(version) {
|
|
|
101
94
|
],
|
|
102
95
|
};
|
|
103
96
|
}
|
|
104
|
-
// ---- TLS template ----
|
|
105
97
|
function firefoxTLS() {
|
|
106
98
|
return {
|
|
107
99
|
recordVersion: ProtocolVersion.TLS_1_0,
|
|
@@ -129,7 +121,6 @@ function firefoxTLS() {
|
|
|
129
121
|
],
|
|
130
122
|
};
|
|
131
123
|
}
|
|
132
|
-
// ---- Profile factory ----
|
|
133
124
|
function firefoxProfile(name, version) {
|
|
134
125
|
return {
|
|
135
126
|
name,
|
|
@@ -140,14 +131,24 @@ function firefoxProfile(name, version) {
|
|
|
140
131
|
headers: firefoxHeaders(version),
|
|
141
132
|
};
|
|
142
133
|
}
|
|
143
|
-
|
|
134
|
+
/** {@link BrowserProfile} impersonating Firefox 133. */
|
|
144
135
|
export const firefox133 = firefoxProfile('firefox133', '133.0');
|
|
136
|
+
/** {@link BrowserProfile} impersonating Firefox 134. */
|
|
145
137
|
export const firefox134 = firefoxProfile('firefox134', '134.0');
|
|
138
|
+
/** {@link BrowserProfile} impersonating Firefox 135. */
|
|
146
139
|
export const firefox135 = firefoxProfile('firefox135', '135.0');
|
|
140
|
+
/** {@link BrowserProfile} impersonating Firefox 136. */
|
|
147
141
|
export const firefox136 = firefoxProfile('firefox136', '136.0');
|
|
142
|
+
/** {@link BrowserProfile} impersonating Firefox 137. */
|
|
148
143
|
export const firefox137 = firefoxProfile('firefox137', '137.0');
|
|
144
|
+
/** {@link BrowserProfile} impersonating Firefox 138. */
|
|
149
145
|
export const firefox138 = firefoxProfile('firefox138', '138.0');
|
|
146
|
+
/** Alias for the most recent Firefox profile ({@link firefox138}). */
|
|
150
147
|
export const firefoxLatest = firefox138;
|
|
148
|
+
/**
|
|
149
|
+
* Registry of all available Firefox {@link BrowserProfile} instances keyed by
|
|
150
|
+
* profile name (e.g. `"firefox138"`) and the alias `"firefox_latest"`.
|
|
151
|
+
*/
|
|
151
152
|
export const firefoxProfiles = new Map([
|
|
152
153
|
['firefox133', firefox133],
|
|
153
154
|
['firefox134', firefox134],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"firefox.js","sourceRoot":"","sources":["../../../src/fingerprints/profiles/firefox.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"firefox.js","sourceRoot":"","sources":["../../../src/fingerprints/profiles/firefox.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,16 +1,27 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Safari browser fingerprint profiles.
|
|
3
|
-
*/
|
|
4
1
|
import type { BrowserProfile } from '../types.js';
|
|
2
|
+
/** {@link BrowserProfile} impersonating Safari 15.3 on macOS (WebKit 605.1.15). */
|
|
5
3
|
export declare const safari153: BrowserProfile;
|
|
4
|
+
/** {@link BrowserProfile} impersonating Safari 15.5 on macOS (WebKit 605.1.15). */
|
|
6
5
|
export declare const safari155: BrowserProfile;
|
|
6
|
+
/** {@link BrowserProfile} impersonating Safari 16.0 on macOS (WebKit 605.1.15). */
|
|
7
7
|
export declare const safari160: BrowserProfile;
|
|
8
|
+
/** {@link BrowserProfile} impersonating Safari 16.5 on macOS (WebKit 605.1.15). */
|
|
8
9
|
export declare const safari165: BrowserProfile;
|
|
10
|
+
/** {@link BrowserProfile} impersonating Safari 17.0 on macOS (WebKit 605.1.15). */
|
|
9
11
|
export declare const safari170: BrowserProfile;
|
|
12
|
+
/** {@link BrowserProfile} impersonating Safari 17.4 on macOS (WebKit 605.1.15). */
|
|
10
13
|
export declare const safari174: BrowserProfile;
|
|
14
|
+
/** {@link BrowserProfile} impersonating Safari 17.5 on macOS (WebKit 605.1.15). */
|
|
11
15
|
export declare const safari175: BrowserProfile;
|
|
16
|
+
/** {@link BrowserProfile} impersonating Safari 18.0 on macOS (WebKit 605.1.15). */
|
|
12
17
|
export declare const safari180: BrowserProfile;
|
|
18
|
+
/** {@link BrowserProfile} impersonating Safari 18.2 on macOS (WebKit 605.1.15). */
|
|
13
19
|
export declare const safari182: BrowserProfile;
|
|
20
|
+
/** Alias for the most recent Safari profile ({@link safari182}). */
|
|
14
21
|
export declare const safariLatest: BrowserProfile;
|
|
22
|
+
/**
|
|
23
|
+
* Registry of all available Safari {@link BrowserProfile} instances keyed by
|
|
24
|
+
* profile name (e.g. `"safari182"`) and the alias `"safari_latest"`.
|
|
25
|
+
*/
|
|
15
26
|
export declare const safariProfiles: ReadonlyMap<string, BrowserProfile>;
|
|
16
27
|
//# sourceMappingURL=safari.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"safari.d.ts","sourceRoot":"","sources":["../../../src/fingerprints/profiles/safari.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"safari.d.ts","sourceRoot":"","sources":["../../../src/fingerprints/profiles/safari.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,cAAc,EAKf,MAAM,aAAa,CAAC;AAgIrB,mFAAmF;AACnF,eAAO,MAAM,SAAS,gBAAiD,CAAC;AACxE,mFAAmF;AACnF,eAAO,MAAM,SAAS,gBAAiD,CAAC;AACxE,mFAAmF;AACnF,eAAO,MAAM,SAAS,gBAAiD,CAAC;AACxE,mFAAmF;AACnF,eAAO,MAAM,SAAS,gBAAiD,CAAC;AACxE,mFAAmF;AACnF,eAAO,MAAM,SAAS,gBAAiD,CAAC;AACxE,mFAAmF;AACnF,eAAO,MAAM,SAAS,gBAAiD,CAAC;AACxE,mFAAmF;AACnF,eAAO,MAAM,SAAS,gBAAiD,CAAC;AACxE,mFAAmF;AACnF,eAAO,MAAM,SAAS,gBAAiD,CAAC;AACxE,mFAAmF;AACnF,eAAO,MAAM,SAAS,gBAAiD,CAAC;AAExE,oEAAoE;AACpE,eAAO,MAAM,YAAY,gBAAY,CAAC;AAEtC;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,WAAW,CAAC,MAAM,EAAE,cAAc,CAW7D,CAAC"}
|
|
@@ -1,10 +1,5 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Safari browser fingerprint profiles.
|
|
3
|
-
*/
|
|
4
1
|
import { CipherSuite, ExtensionType, NamedGroup, SignatureScheme, ECPointFormat, PskKeyExchangeMode, ProtocolVersion, } from '../../tls/constants.js';
|
|
5
2
|
import * as ext from '../extensions.js';
|
|
6
|
-
// ---- Safari cipher suites ----
|
|
7
|
-
// Safari has a distinctive cipher order, placing CHACHA20 earlier
|
|
8
3
|
const SAFARI_CIPHER_SUITES = [
|
|
9
4
|
CipherSuite.TLS_AES_128_GCM_SHA256,
|
|
10
5
|
CipherSuite.TLS_AES_256_GCM_SHA384,
|
|
@@ -41,7 +36,6 @@ const SAFARI_SIGALGS = [
|
|
|
41
36
|
SignatureScheme.RSA_PKCS1_SHA384,
|
|
42
37
|
SignatureScheme.RSA_PKCS1_SHA512,
|
|
43
38
|
];
|
|
44
|
-
// ---- Extensions ----
|
|
45
39
|
function safariExtensions() {
|
|
46
40
|
return [
|
|
47
41
|
{ type: ExtensionType.SERVER_NAME, data: ext.sniData },
|
|
@@ -58,17 +52,15 @@ function safariExtensions() {
|
|
|
58
52
|
{ type: ExtensionType.SUPPORTED_VERSIONS, data: () => ext.supportedVersionsData([ProtocolVersion.TLS_1_3, ProtocolVersion.TLS_1_2]) },
|
|
59
53
|
];
|
|
60
54
|
}
|
|
61
|
-
// ---- HTTP/2 ----
|
|
62
55
|
const SAFARI_H2 = {
|
|
63
56
|
settings: [
|
|
64
|
-
{ id: 4, value: 4194304 },
|
|
65
|
-
{ id: 3, value: 100 },
|
|
57
|
+
{ id: 4, value: 4194304 },
|
|
58
|
+
{ id: 3, value: 100 },
|
|
66
59
|
],
|
|
67
60
|
windowUpdate: 10485760,
|
|
68
61
|
pseudoHeaderOrder: [':method', ':scheme', ':path', ':authority'],
|
|
69
62
|
priorityFrames: [],
|
|
70
63
|
};
|
|
71
|
-
// ---- Headers ----
|
|
72
64
|
function safariHeaders(version, webkitBuild) {
|
|
73
65
|
const ua = `Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/${webkitBuild} (KHTML, like Gecko) Version/${version} Safari/${webkitBuild}`;
|
|
74
66
|
return {
|
|
@@ -84,7 +76,6 @@ function safariHeaders(version, webkitBuild) {
|
|
|
84
76
|
],
|
|
85
77
|
};
|
|
86
78
|
}
|
|
87
|
-
// ---- TLS template ----
|
|
88
79
|
function safariTLS() {
|
|
89
80
|
return {
|
|
90
81
|
recordVersion: ProtocolVersion.TLS_1_0,
|
|
@@ -103,7 +94,6 @@ function safariTLS() {
|
|
|
103
94
|
ecPointFormats: [ECPointFormat.UNCOMPRESSED],
|
|
104
95
|
};
|
|
105
96
|
}
|
|
106
|
-
// ---- Profile factory ----
|
|
107
97
|
function safariProfile(name, version, webkitBuild) {
|
|
108
98
|
return {
|
|
109
99
|
name,
|
|
@@ -114,17 +104,30 @@ function safariProfile(name, version, webkitBuild) {
|
|
|
114
104
|
headers: safariHeaders(version, webkitBuild),
|
|
115
105
|
};
|
|
116
106
|
}
|
|
117
|
-
|
|
107
|
+
/** {@link BrowserProfile} impersonating Safari 15.3 on macOS (WebKit 605.1.15). */
|
|
118
108
|
export const safari153 = safariProfile('safari153', '15.3', '605.1.15');
|
|
109
|
+
/** {@link BrowserProfile} impersonating Safari 15.5 on macOS (WebKit 605.1.15). */
|
|
119
110
|
export const safari155 = safariProfile('safari155', '15.5', '605.1.15');
|
|
111
|
+
/** {@link BrowserProfile} impersonating Safari 16.0 on macOS (WebKit 605.1.15). */
|
|
120
112
|
export const safari160 = safariProfile('safari160', '16.0', '605.1.15');
|
|
113
|
+
/** {@link BrowserProfile} impersonating Safari 16.5 on macOS (WebKit 605.1.15). */
|
|
121
114
|
export const safari165 = safariProfile('safari165', '16.5', '605.1.15');
|
|
115
|
+
/** {@link BrowserProfile} impersonating Safari 17.0 on macOS (WebKit 605.1.15). */
|
|
122
116
|
export const safari170 = safariProfile('safari170', '17.0', '605.1.15');
|
|
117
|
+
/** {@link BrowserProfile} impersonating Safari 17.4 on macOS (WebKit 605.1.15). */
|
|
123
118
|
export const safari174 = safariProfile('safari174', '17.4', '605.1.15');
|
|
119
|
+
/** {@link BrowserProfile} impersonating Safari 17.5 on macOS (WebKit 605.1.15). */
|
|
124
120
|
export const safari175 = safariProfile('safari175', '17.5', '605.1.15');
|
|
121
|
+
/** {@link BrowserProfile} impersonating Safari 18.0 on macOS (WebKit 605.1.15). */
|
|
125
122
|
export const safari180 = safariProfile('safari180', '18.0', '605.1.15');
|
|
123
|
+
/** {@link BrowserProfile} impersonating Safari 18.2 on macOS (WebKit 605.1.15). */
|
|
126
124
|
export const safari182 = safariProfile('safari182', '18.2', '605.1.15');
|
|
125
|
+
/** Alias for the most recent Safari profile ({@link safari182}). */
|
|
127
126
|
export const safariLatest = safari182;
|
|
127
|
+
/**
|
|
128
|
+
* Registry of all available Safari {@link BrowserProfile} instances keyed by
|
|
129
|
+
* profile name (e.g. `"safari182"`) and the alias `"safari_latest"`.
|
|
130
|
+
*/
|
|
128
131
|
export const safariProfiles = new Map([
|
|
129
132
|
['safari153', safari153],
|
|
130
133
|
['safari155', safari155],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"safari.js","sourceRoot":"","sources":["../../../src/fingerprints/profiles/safari.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"safari.js","sourceRoot":"","sources":["../../../src/fingerprints/profiles/safari.ts"],"names":[],"mappings":"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"}
|