nlcurl 0.7.0 → 0.9.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.
Files changed (354) hide show
  1. package/README.md +149 -140
  2. package/dist/cache/groups.d.ts +75 -0
  3. package/dist/cache/groups.d.ts.map +1 -0
  4. package/dist/cache/groups.js +118 -0
  5. package/dist/cache/groups.js.map +1 -0
  6. package/dist/cache/no-vary-search.d.ts +33 -0
  7. package/dist/cache/no-vary-search.d.ts.map +1 -0
  8. package/dist/cache/no-vary-search.js +148 -0
  9. package/dist/cache/no-vary-search.js.map +1 -0
  10. package/dist/cache/range.d.ts +120 -0
  11. package/dist/cache/range.d.ts.map +1 -0
  12. package/dist/cache/range.js +193 -0
  13. package/dist/cache/range.js.map +1 -0
  14. package/dist/cache/store.d.ts +75 -37
  15. package/dist/cache/store.d.ts.map +1 -1
  16. package/dist/cache/store.js +217 -85
  17. package/dist/cache/store.js.map +1 -1
  18. package/dist/cache/types.d.ts +10 -39
  19. package/dist/cache/types.d.ts.map +1 -1
  20. package/dist/cli/args.d.ts +4 -37
  21. package/dist/cli/args.d.ts.map +1 -1
  22. package/dist/cli/args.js +3 -4
  23. package/dist/cli/args.js.map +1 -1
  24. package/dist/cli/index.d.ts +0 -5
  25. package/dist/cli/index.d.ts.map +1 -1
  26. package/dist/cli/index.js +1 -6
  27. package/dist/cli/index.js.map +1 -1
  28. package/dist/cli/output.d.ts +14 -20
  29. package/dist/cli/output.d.ts.map +1 -1
  30. package/dist/cli/output.js +14 -20
  31. package/dist/cli/output.js.map +1 -1
  32. package/dist/cookies/jar.d.ts +41 -40
  33. package/dist/cookies/jar.d.ts.map +1 -1
  34. package/dist/cookies/jar.js +65 -42
  35. package/dist/cookies/jar.js.map +1 -1
  36. package/dist/cookies/parser.d.ts +13 -17
  37. package/dist/cookies/parser.d.ts.map +1 -1
  38. package/dist/cookies/parser.js +23 -15
  39. package/dist/cookies/parser.js.map +1 -1
  40. package/dist/cookies/psl-data.d.ts +1 -1
  41. package/dist/cookies/psl-data.js +1 -1
  42. package/dist/cookies/public-suffix.d.ts +5 -27
  43. package/dist/cookies/public-suffix.d.ts.map +1 -1
  44. package/dist/cookies/public-suffix.js +5 -37
  45. package/dist/cookies/public-suffix.js.map +1 -1
  46. package/dist/core/auth.d.ts +61 -0
  47. package/dist/core/auth.d.ts.map +1 -0
  48. package/dist/core/auth.js +159 -0
  49. package/dist/core/auth.js.map +1 -0
  50. package/dist/core/client.d.ts +28 -40
  51. package/dist/core/client.d.ts.map +1 -1
  52. package/dist/core/client.js +31 -41
  53. package/dist/core/client.js.map +1 -1
  54. package/dist/core/errors.d.ts +64 -88
  55. package/dist/core/errors.d.ts.map +1 -1
  56. package/dist/core/errors.js +64 -88
  57. package/dist/core/errors.js.map +1 -1
  58. package/dist/core/request.d.ts +33 -113
  59. package/dist/core/request.d.ts.map +1 -1
  60. package/dist/core/response.d.ts +49 -66
  61. package/dist/core/response.d.ts.map +1 -1
  62. package/dist/core/response.js +45 -59
  63. package/dist/core/response.js.map +1 -1
  64. package/dist/core/session.d.ts +66 -78
  65. package/dist/core/session.d.ts.map +1 -1
  66. package/dist/core/session.js +136 -77
  67. package/dist/core/session.js.map +1 -1
  68. package/dist/core/validation.d.ts +58 -43
  69. package/dist/core/validation.d.ts.map +1 -1
  70. package/dist/core/validation.js +141 -56
  71. package/dist/core/validation.js.map +1 -1
  72. package/dist/dns/cache.d.ts +65 -0
  73. package/dist/dns/cache.d.ts.map +1 -0
  74. package/dist/dns/cache.js +119 -0
  75. package/dist/dns/cache.js.map +1 -0
  76. package/dist/dns/codec.d.ts +29 -19
  77. package/dist/dns/codec.d.ts.map +1 -1
  78. package/dist/dns/codec.js +73 -39
  79. package/dist/dns/codec.js.map +1 -1
  80. package/dist/dns/doh-resolver.d.ts +17 -31
  81. package/dist/dns/doh-resolver.d.ts.map +1 -1
  82. package/dist/dns/doh-resolver.js +47 -48
  83. package/dist/dns/doh-resolver.js.map +1 -1
  84. package/dist/dns/dot-resolver.d.ts +89 -0
  85. package/dist/dns/dot-resolver.d.ts.map +1 -0
  86. package/dist/dns/dot-resolver.js +166 -0
  87. package/dist/dns/dot-resolver.js.map +1 -0
  88. package/dist/dns/https-rr.d.ts +19 -30
  89. package/dist/dns/https-rr.d.ts.map +1 -1
  90. package/dist/dns/https-rr.js +22 -40
  91. package/dist/dns/https-rr.js.map +1 -1
  92. package/dist/dns/types.d.ts +31 -59
  93. package/dist/dns/types.d.ts.map +1 -1
  94. package/dist/dns/types.js +3 -14
  95. package/dist/dns/types.js.map +1 -1
  96. package/dist/fingerprints/akamai.d.ts +3 -11
  97. package/dist/fingerprints/akamai.d.ts.map +1 -1
  98. package/dist/fingerprints/akamai.js +3 -11
  99. package/dist/fingerprints/akamai.js.map +1 -1
  100. package/dist/fingerprints/database.d.ts +6 -14
  101. package/dist/fingerprints/database.d.ts.map +1 -1
  102. package/dist/fingerprints/database.js +6 -14
  103. package/dist/fingerprints/database.js.map +1 -1
  104. package/dist/fingerprints/extensions.d.ts +56 -71
  105. package/dist/fingerprints/extensions.d.ts.map +1 -1
  106. package/dist/fingerprints/extensions.js +58 -71
  107. package/dist/fingerprints/extensions.js.map +1 -1
  108. package/dist/fingerprints/ja3.d.ts +12 -30
  109. package/dist/fingerprints/ja3.d.ts.map +1 -1
  110. package/dist/fingerprints/ja3.js +12 -30
  111. package/dist/fingerprints/ja3.js.map +1 -1
  112. package/dist/fingerprints/ja4.d.ts +18 -0
  113. package/dist/fingerprints/ja4.d.ts.map +1 -0
  114. package/dist/fingerprints/ja4.js +81 -0
  115. package/dist/fingerprints/ja4.js.map +1 -0
  116. package/dist/fingerprints/profiles/chrome.d.ts +18 -21
  117. package/dist/fingerprints/profiles/chrome.d.ts.map +1 -1
  118. package/dist/fingerprints/profiles/chrome.js +35 -31
  119. package/dist/fingerprints/profiles/chrome.js.map +1 -1
  120. package/dist/fingerprints/profiles/edge.d.ts +7 -10
  121. package/dist/fingerprints/profiles/edge.d.ts.map +1 -1
  122. package/dist/fingerprints/profiles/edge.js +7 -10
  123. package/dist/fingerprints/profiles/edge.js.map +1 -1
  124. package/dist/fingerprints/profiles/firefox.d.ts +8 -11
  125. package/dist/fingerprints/profiles/firefox.d.ts.map +1 -1
  126. package/dist/fingerprints/profiles/firefox.js +8 -11
  127. package/dist/fingerprints/profiles/firefox.js.map +1 -1
  128. package/dist/fingerprints/profiles/safari.d.ts +11 -14
  129. package/dist/fingerprints/profiles/safari.d.ts.map +1 -1
  130. package/dist/fingerprints/profiles/safari.js +11 -14
  131. package/dist/fingerprints/profiles/safari.js.map +1 -1
  132. package/dist/fingerprints/profiles/tor.d.ts +5 -8
  133. package/dist/fingerprints/profiles/tor.d.ts.map +1 -1
  134. package/dist/fingerprints/profiles/tor.js +5 -8
  135. package/dist/fingerprints/profiles/tor.js.map +1 -1
  136. package/dist/fingerprints/types.d.ts +42 -73
  137. package/dist/fingerprints/types.d.ts.map +1 -1
  138. package/dist/hsts/store.d.ts +19 -21
  139. package/dist/hsts/store.d.ts.map +1 -1
  140. package/dist/hsts/store.js +20 -28
  141. package/dist/hsts/store.js.map +1 -1
  142. package/dist/hsts/types.d.ts +10 -14
  143. package/dist/hsts/types.d.ts.map +1 -1
  144. package/dist/http/alt-svc.d.ts +27 -52
  145. package/dist/http/alt-svc.d.ts.map +1 -1
  146. package/dist/http/alt-svc.js +17 -67
  147. package/dist/http/alt-svc.js.map +1 -1
  148. package/dist/http/early-hints.d.ts +23 -0
  149. package/dist/http/early-hints.d.ts.map +1 -0
  150. package/dist/http/early-hints.js +33 -0
  151. package/dist/http/early-hints.js.map +1 -0
  152. package/dist/http/form-data.d.ts +17 -35
  153. package/dist/http/form-data.d.ts.map +1 -1
  154. package/dist/http/form-data.js +12 -34
  155. package/dist/http/form-data.js.map +1 -1
  156. package/dist/http/h1/client.d.ts +14 -26
  157. package/dist/http/h1/client.d.ts.map +1 -1
  158. package/dist/http/h1/client.js +14 -23
  159. package/dist/http/h1/client.js.map +1 -1
  160. package/dist/http/h1/encoder.d.ts +21 -17
  161. package/dist/http/h1/encoder.d.ts.map +1 -1
  162. package/dist/http/h1/encoder.js +56 -20
  163. package/dist/http/h1/encoder.js.map +1 -1
  164. package/dist/http/h1/parser.d.ts +23 -59
  165. package/dist/http/h1/parser.d.ts.map +1 -1
  166. package/dist/http/h1/parser.js +61 -55
  167. package/dist/http/h1/parser.js.map +1 -1
  168. package/dist/http/h2/client.d.ts +23 -59
  169. package/dist/http/h2/client.d.ts.map +1 -1
  170. package/dist/http/h2/client.js +107 -64
  171. package/dist/http/h2/client.js.map +1 -1
  172. package/dist/http/h2/frames.d.ts +53 -84
  173. package/dist/http/h2/frames.d.ts.map +1 -1
  174. package/dist/http/h2/frames.js +48 -76
  175. package/dist/http/h2/frames.js.map +1 -1
  176. package/dist/http/h2/hpack.d.ts +20 -36
  177. package/dist/http/h2/hpack.d.ts.map +1 -1
  178. package/dist/http/h2/hpack.js +41 -36
  179. package/dist/http/h2/hpack.js.map +1 -1
  180. package/dist/http/negotiator.d.ts +25 -38
  181. package/dist/http/negotiator.d.ts.map +1 -1
  182. package/dist/http/negotiator.js +17 -38
  183. package/dist/http/negotiator.js.map +1 -1
  184. package/dist/http/pool.d.ts +34 -64
  185. package/dist/http/pool.d.ts.map +1 -1
  186. package/dist/http/pool.js +22 -41
  187. package/dist/http/pool.js.map +1 -1
  188. package/dist/http/resumable-upload.d.ts +76 -0
  189. package/dist/http/resumable-upload.d.ts.map +1 -0
  190. package/dist/http/resumable-upload.js +104 -0
  191. package/dist/http/resumable-upload.js.map +1 -0
  192. package/dist/http/trailers.d.ts +29 -0
  193. package/dist/http/trailers.d.ts.map +1 -0
  194. package/dist/http/trailers.js +57 -0
  195. package/dist/http/trailers.js.map +1 -0
  196. package/dist/index.d.ts +24 -9
  197. package/dist/index.d.ts.map +1 -1
  198. package/dist/index.js +24 -3
  199. package/dist/index.js.map +1 -1
  200. package/dist/middleware/circuit-breaker.d.ts +44 -0
  201. package/dist/middleware/circuit-breaker.d.ts.map +1 -0
  202. package/dist/middleware/circuit-breaker.js +96 -0
  203. package/dist/middleware/circuit-breaker.js.map +1 -0
  204. package/dist/middleware/interceptor.d.ts +13 -32
  205. package/dist/middleware/interceptor.d.ts.map +1 -1
  206. package/dist/middleware/interceptor.js +11 -16
  207. package/dist/middleware/interceptor.js.map +1 -1
  208. package/dist/middleware/rate-limiter.d.ts +8 -17
  209. package/dist/middleware/rate-limiter.d.ts.map +1 -1
  210. package/dist/middleware/rate-limiter.js +11 -12
  211. package/dist/middleware/rate-limiter.js.map +1 -1
  212. package/dist/middleware/retry-after.d.ts +15 -0
  213. package/dist/middleware/retry-after.d.ts.map +1 -0
  214. package/dist/middleware/retry-after.js +36 -0
  215. package/dist/middleware/retry-after.js.map +1 -0
  216. package/dist/middleware/retry.d.ts +9 -18
  217. package/dist/middleware/retry.d.ts.map +1 -1
  218. package/dist/middleware/retry.js +12 -9
  219. package/dist/middleware/retry.js.map +1 -1
  220. package/dist/proxy/auth.d.ts +73 -0
  221. package/dist/proxy/auth.d.ts.map +1 -0
  222. package/dist/proxy/auth.js +129 -0
  223. package/dist/proxy/auth.js.map +1 -0
  224. package/dist/proxy/env-proxy.d.ts +5 -15
  225. package/dist/proxy/env-proxy.d.ts.map +1 -1
  226. package/dist/proxy/env-proxy.js +5 -23
  227. package/dist/proxy/env-proxy.js.map +1 -1
  228. package/dist/proxy/http-proxy.d.ts +12 -19
  229. package/dist/proxy/http-proxy.d.ts.map +1 -1
  230. package/dist/proxy/http-proxy.js +5 -8
  231. package/dist/proxy/http-proxy.js.map +1 -1
  232. package/dist/proxy/socks.d.ts +13 -20
  233. package/dist/proxy/socks.d.ts.map +1 -1
  234. package/dist/proxy/socks.js +8 -10
  235. package/dist/proxy/socks.js.map +1 -1
  236. package/dist/sse/parser.d.ts +16 -37
  237. package/dist/sse/parser.d.ts.map +1 -1
  238. package/dist/sse/parser.js +31 -28
  239. package/dist/sse/parser.js.map +1 -1
  240. package/dist/tls/constants.d.ts +21 -72
  241. package/dist/tls/constants.d.ts.map +1 -1
  242. package/dist/tls/constants.js +21 -72
  243. package/dist/tls/constants.js.map +1 -1
  244. package/dist/tls/ct.d.ts +78 -0
  245. package/dist/tls/ct.d.ts.map +1 -0
  246. package/dist/tls/ct.js +175 -0
  247. package/dist/tls/ct.js.map +1 -0
  248. package/dist/tls/early-data.d.ts +45 -0
  249. package/dist/tls/early-data.d.ts.map +1 -0
  250. package/dist/tls/early-data.js +46 -0
  251. package/dist/tls/early-data.js.map +1 -0
  252. package/dist/tls/ech.d.ts +68 -85
  253. package/dist/tls/ech.d.ts.map +1 -1
  254. package/dist/tls/ech.js +54 -102
  255. package/dist/tls/ech.js.map +1 -1
  256. package/dist/tls/keylog.d.ts +34 -0
  257. package/dist/tls/keylog.d.ts.map +1 -0
  258. package/dist/tls/keylog.js +64 -0
  259. package/dist/tls/keylog.js.map +1 -0
  260. package/dist/tls/node-engine.d.ts +10 -17
  261. package/dist/tls/node-engine.d.ts.map +1 -1
  262. package/dist/tls/node-engine.js +41 -18
  263. package/dist/tls/node-engine.js.map +1 -1
  264. package/dist/tls/ocsp.d.ts +55 -0
  265. package/dist/tls/ocsp.d.ts.map +1 -0
  266. package/dist/tls/ocsp.js +131 -0
  267. package/dist/tls/ocsp.js.map +1 -0
  268. package/dist/tls/pin-verification.d.ts +5 -4
  269. package/dist/tls/pin-verification.d.ts.map +1 -1
  270. package/dist/tls/pin-verification.js +5 -11
  271. package/dist/tls/pin-verification.js.map +1 -1
  272. package/dist/tls/session-cache.d.ts +27 -39
  273. package/dist/tls/session-cache.d.ts.map +1 -1
  274. package/dist/tls/session-cache.js +20 -24
  275. package/dist/tls/session-cache.js.map +1 -1
  276. package/dist/tls/stealth/client-hello.d.ts +26 -45
  277. package/dist/tls/stealth/client-hello.d.ts.map +1 -1
  278. package/dist/tls/stealth/client-hello.js +15 -31
  279. package/dist/tls/stealth/client-hello.js.map +1 -1
  280. package/dist/tls/stealth/engine.d.ts +10 -15
  281. package/dist/tls/stealth/engine.d.ts.map +1 -1
  282. package/dist/tls/stealth/engine.js +98 -18
  283. package/dist/tls/stealth/engine.js.map +1 -1
  284. package/dist/tls/stealth/handshake.d.ts +32 -31
  285. package/dist/tls/stealth/handshake.d.ts.map +1 -1
  286. package/dist/tls/stealth/handshake.js +74 -47
  287. package/dist/tls/stealth/handshake.js.map +1 -1
  288. package/dist/tls/stealth/key-schedule.d.ts +81 -86
  289. package/dist/tls/stealth/key-schedule.d.ts.map +1 -1
  290. package/dist/tls/stealth/key-schedule.js +70 -58
  291. package/dist/tls/stealth/key-schedule.js.map +1 -1
  292. package/dist/tls/stealth/record-layer.d.ts +52 -75
  293. package/dist/tls/stealth/record-layer.d.ts.map +1 -1
  294. package/dist/tls/stealth/record-layer.js +47 -63
  295. package/dist/tls/stealth/record-layer.js.map +1 -1
  296. package/dist/tls/stealth/tls12-handshake.d.ts +16 -0
  297. package/dist/tls/stealth/tls12-handshake.d.ts.map +1 -1
  298. package/dist/tls/stealth/tls12-handshake.js +10 -2
  299. package/dist/tls/stealth/tls12-handshake.js.map +1 -1
  300. package/dist/tls/types.d.ts +46 -60
  301. package/dist/tls/types.d.ts.map +1 -1
  302. package/dist/utils/buffer-reader.d.ts +26 -81
  303. package/dist/utils/buffer-reader.d.ts.map +1 -1
  304. package/dist/utils/buffer-reader.js +26 -81
  305. package/dist/utils/buffer-reader.js.map +1 -1
  306. package/dist/utils/buffer-writer.d.ts +30 -66
  307. package/dist/utils/buffer-writer.d.ts.map +1 -1
  308. package/dist/utils/buffer-writer.js +30 -66
  309. package/dist/utils/buffer-writer.js.map +1 -1
  310. package/dist/utils/compression.d.ts +18 -0
  311. package/dist/utils/compression.d.ts.map +1 -0
  312. package/dist/utils/compression.js +34 -0
  313. package/dist/utils/compression.js.map +1 -0
  314. package/dist/utils/dictionary-transport.d.ts +97 -0
  315. package/dist/utils/dictionary-transport.d.ts.map +1 -0
  316. package/dist/utils/dictionary-transport.js +171 -0
  317. package/dist/utils/dictionary-transport.js.map +1 -0
  318. package/dist/utils/encoding.d.ts +12 -30
  319. package/dist/utils/encoding.d.ts.map +1 -1
  320. package/dist/utils/encoding.js +15 -46
  321. package/dist/utils/encoding.js.map +1 -1
  322. package/dist/utils/happy-eyeballs.d.ts +18 -8
  323. package/dist/utils/happy-eyeballs.d.ts.map +1 -1
  324. package/dist/utils/happy-eyeballs.js +19 -27
  325. package/dist/utils/happy-eyeballs.js.map +1 -1
  326. package/dist/utils/logger.d.ts +54 -81
  327. package/dist/utils/logger.d.ts.map +1 -1
  328. package/dist/utils/logger.js +92 -64
  329. package/dist/utils/logger.js.map +1 -1
  330. package/dist/utils/tcp-fast-open.d.ts +30 -0
  331. package/dist/utils/tcp-fast-open.d.ts.map +1 -0
  332. package/dist/utils/tcp-fast-open.js +36 -0
  333. package/dist/utils/tcp-fast-open.js.map +1 -0
  334. package/dist/utils/url.d.ts +18 -25
  335. package/dist/utils/url.d.ts.map +1 -1
  336. package/dist/utils/url.js +18 -25
  337. package/dist/utils/url.js.map +1 -1
  338. package/dist/ws/client.d.ts +35 -53
  339. package/dist/ws/client.d.ts.map +1 -1
  340. package/dist/ws/client.js +96 -38
  341. package/dist/ws/client.js.map +1 -1
  342. package/dist/ws/frame.d.ts +24 -41
  343. package/dist/ws/frame.d.ts.map +1 -1
  344. package/dist/ws/frame.js +26 -33
  345. package/dist/ws/frame.js.map +1 -1
  346. package/dist/ws/permessage-deflate.d.ts +23 -28
  347. package/dist/ws/permessage-deflate.d.ts.map +1 -1
  348. package/dist/ws/permessage-deflate.js +18 -26
  349. package/dist/ws/permessage-deflate.js.map +1 -1
  350. package/package.json +2 -2
  351. package/dist/http/h3/detection.d.ts +0 -17
  352. package/dist/http/h3/detection.d.ts.map +0 -1
  353. package/dist/http/h3/detection.js +0 -59
  354. package/dist/http/h3/detection.js.map +0 -1
@@ -1,48 +1,30 @@
1
1
  import type { TLSProfile } from "./types.js";
2
2
  /**
3
- * Computes the JA3 string representation of a TLS profile. The string is a
4
- * comma-separated tuple of `version`, cipher codes, extension type codes,
5
- * supported-group codes, and EC point format codes, all encoded as
6
- * dash-separated decimal lists (GREASE values filtered out).
3
+ * Generate a JA3 fingerprint string from a TLS profile.
7
4
  *
8
- * @param {TLSProfile} profile - The TLS profile to fingerprint.
9
- * @returns {string} The JA3 fingerprint string.
10
- *
11
- * @example
12
- * const str = ja3String(chromeLatest.tls);
13
- * // => "771,4865-4866-...,0-23-...,29-23-24,0"
5
+ * @param {TLSProfile} profile - TLS profile to fingerprint.
6
+ * @returns {string} Comma-separated JA3 string of version, ciphers, extensions, groups, and point formats.
14
7
  */
15
8
  export declare function ja3String(profile: TLSProfile): string;
16
9
  /**
17
- * Computes the MD5 hash of the JA3 string for the given TLS profile.
18
- * The resulting 32-character hex digest is the canonical JA3 fingerprint
19
- * used in network monitoring and fingerprinting detection.
20
- *
21
- * @param {TLSProfile} profile - The TLS profile to fingerprint.
22
- * @returns {string} The 32-character lowercase hex JA3 MD5 hash.
10
+ * Compute the MD5 hash of the JA3 fingerprint string.
23
11
  *
24
- * @example
25
- * const hash = ja3Hash(chromeLatest.tls);
26
- * // => "cd08e31494f9531f560d64c695473da9"
12
+ * @param {TLSProfile} profile - TLS profile to fingerprint.
13
+ * @returns {string} Hex-encoded MD5 digest.
27
14
  */
28
15
  export declare function ja3Hash(profile: TLSProfile): string;
29
16
  /**
30
- * Computes the JA3N (normalised) string for a TLS profile. Unlike
31
- * {@link ja3String}, all numeric lists are sorted before joining, which
32
- * makes the fingerprint order-independent and useful for comparing profiles
33
- * that advertise the same capabilities in different orders.
17
+ * Generate a normalized JA3 fingerprint string with sorted components.
34
18
  *
35
- * @param {TLSProfile} profile - The TLS profile to fingerprint.
36
- * @returns {string} The JA3N fingerprint string with sorted field lists.
19
+ * @param {TLSProfile} profile - TLS profile to fingerprint.
20
+ * @returns {string} Comma-separated JA3n string with sorted ciphers, extensions, and groups.
37
21
  */
38
22
  export declare function ja3nString(profile: TLSProfile): string;
39
23
  /**
40
- * Computes the MD5 hash of the JA3N (normalised) string for the given TLS
41
- * profile. JA3N hashes are order-independent, making them suitable for
42
- * grouping profiles by capability set regardless of advertisement order.
24
+ * Compute the MD5 hash of the normalized JA3 fingerprint string.
43
25
  *
44
- * @param {TLSProfile} profile - The TLS profile to fingerprint.
45
- * @returns {string} The 32-character lowercase hex JA3N MD5 hash.
26
+ * @param {TLSProfile} profile - TLS profile to fingerprint.
27
+ * @returns {string} Hex-encoded MD5 digest.
46
28
  */
47
29
  export declare function ja3nHash(profile: TLSProfile): string;
48
30
  //# sourceMappingURL=ja3.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ja3.d.ts","sourceRoot":"","sources":["../../src/fingerprints/ja3.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAY7C;;;;;;;;;;;;GAYG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,UAAU,GAAG,MAAM,CAQrD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,MAAM,CAEnD;AAED;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,UAAU,GAAG,MAAM,CActD;AAED;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,UAAU,GAAG,MAAM,CAEpD"}
1
+ {"version":3,"file":"ja3.d.ts","sourceRoot":"","sources":["../../src/fingerprints/ja3.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAY7C;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,UAAU,GAAG,MAAM,CAQrD;AAED;;;;;GAKG;AACH,wBAAgB,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,MAAM,CAEnD;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,UAAU,GAAG,MAAM,CActD;AAED;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,UAAU,GAAG,MAAM,CAEpD"}
@@ -8,17 +8,10 @@ function filterGrease(values) {
8
8
  return values.filter((v) => !isGrease(v));
9
9
  }
10
10
  /**
11
- * Computes the JA3 string representation of a TLS profile. The string is a
12
- * comma-separated tuple of `version`, cipher codes, extension type codes,
13
- * supported-group codes, and EC point format codes, all encoded as
14
- * dash-separated decimal lists (GREASE values filtered out).
11
+ * Generate a JA3 fingerprint string from a TLS profile.
15
12
  *
16
- * @param {TLSProfile} profile - The TLS profile to fingerprint.
17
- * @returns {string} The JA3 fingerprint string.
18
- *
19
- * @example
20
- * const str = ja3String(chromeLatest.tls);
21
- * // => "771,4865-4866-...,0-23-...,29-23-24,0"
13
+ * @param {TLSProfile} profile - TLS profile to fingerprint.
14
+ * @returns {string} Comma-separated JA3 string of version, ciphers, extensions, groups, and point formats.
22
15
  */
23
16
  export function ja3String(profile) {
24
17
  const version = profile.clientVersion;
@@ -29,28 +22,19 @@ export function ja3String(profile) {
29
22
  return `${version},${ciphers},${extensions},${groups},${formats}`;
30
23
  }
31
24
  /**
32
- * Computes the MD5 hash of the JA3 string for the given TLS profile.
33
- * The resulting 32-character hex digest is the canonical JA3 fingerprint
34
- * used in network monitoring and fingerprinting detection.
35
- *
36
- * @param {TLSProfile} profile - The TLS profile to fingerprint.
37
- * @returns {string} The 32-character lowercase hex JA3 MD5 hash.
25
+ * Compute the MD5 hash of the JA3 fingerprint string.
38
26
  *
39
- * @example
40
- * const hash = ja3Hash(chromeLatest.tls);
41
- * // => "cd08e31494f9531f560d64c695473da9"
27
+ * @param {TLSProfile} profile - TLS profile to fingerprint.
28
+ * @returns {string} Hex-encoded MD5 digest.
42
29
  */
43
30
  export function ja3Hash(profile) {
44
31
  return createHash("md5").update(ja3String(profile)).digest("hex");
45
32
  }
46
33
  /**
47
- * Computes the JA3N (normalised) string for a TLS profile. Unlike
48
- * {@link ja3String}, all numeric lists are sorted before joining, which
49
- * makes the fingerprint order-independent and useful for comparing profiles
50
- * that advertise the same capabilities in different orders.
34
+ * Generate a normalized JA3 fingerprint string with sorted components.
51
35
  *
52
- * @param {TLSProfile} profile - The TLS profile to fingerprint.
53
- * @returns {string} The JA3N fingerprint string with sorted field lists.
36
+ * @param {TLSProfile} profile - TLS profile to fingerprint.
37
+ * @returns {string} Comma-separated JA3n string with sorted ciphers, extensions, and groups.
54
38
  */
55
39
  export function ja3nString(profile) {
56
40
  const version = profile.clientVersion;
@@ -67,12 +51,10 @@ export function ja3nString(profile) {
67
51
  return `${version},${ciphers},${extensions},${groups},${formats}`;
68
52
  }
69
53
  /**
70
- * Computes the MD5 hash of the JA3N (normalised) string for the given TLS
71
- * profile. JA3N hashes are order-independent, making them suitable for
72
- * grouping profiles by capability set regardless of advertisement order.
54
+ * Compute the MD5 hash of the normalized JA3 fingerprint string.
73
55
  *
74
- * @param {TLSProfile} profile - The TLS profile to fingerprint.
75
- * @returns {string} The 32-character lowercase hex JA3N MD5 hash.
56
+ * @param {TLSProfile} profile - TLS profile to fingerprint.
57
+ * @returns {string} Hex-encoded MD5 digest.
76
58
  */
77
59
  export function ja3nHash(profile) {
78
60
  return createHash("md5").update(ja3nString(profile)).digest("hex");
@@ -1 +1 @@
1
- {"version":3,"file":"ja3.js","sourceRoot":"","sources":["../../src/fingerprints/ja3.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGpD,MAAM,UAAU,GAAwB,IAAI,GAAG,CAAC,aAAa,CAAC,CAAC;AAE/D,SAAS,QAAQ,CAAC,KAAa;IAC7B,OAAO,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAC/B,CAAC;AAED,SAAS,YAAY,CAAC,MAAgB;IACpC,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5C,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,SAAS,CAAC,OAAmB;IAC3C,MAAM,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC;IACtC,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC7D,MAAM,UAAU,GAAG,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACjF,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC/D,MAAM,OAAO,GAAG,CAAC,OAAO,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAEzD,OAAO,GAAG,OAAO,IAAI,OAAO,IAAI,UAAU,IAAI,MAAM,IAAI,OAAO,EAAE,CAAC;AACpE,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,OAAO,CAAC,OAAmB;IACzC,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACpE,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,UAAU,CAAC,OAAmB;IAC5C,MAAM,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC;IACtC,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,YAAY,CAAC;SAC/C,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;SACrB,IAAI,CAAC,GAAG,CAAC,CAAC;IACb,MAAM,UAAU,GAAG,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;SACnE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;SACrB,IAAI,CAAC,GAAG,CAAC,CAAC;IACb,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,eAAe,CAAC;SACjD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;SACrB,IAAI,CAAC,GAAG,CAAC,CAAC;IACb,MAAM,OAAO,GAAG,CAAC,OAAO,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAE/E,OAAO,GAAG,OAAO,IAAI,OAAO,IAAI,UAAU,IAAI,MAAM,IAAI,OAAO,EAAE,CAAC;AACpE,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,QAAQ,CAAC,OAAmB;IAC1C,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACrE,CAAC"}
1
+ {"version":3,"file":"ja3.js","sourceRoot":"","sources":["../../src/fingerprints/ja3.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import type { TLSProfile } from "./types.js";
2
+ /**
3
+ * Generate a complete JA4 fingerprint string.
4
+ *
5
+ * @param {TLSProfile} profile - TLS profile to fingerprint.
6
+ * @param {boolean} hasSNI - Whether the ClientHello includes a Server Name Indication extension.
7
+ * @returns {string} JA4 fingerprint in the format `{a}_{b}_{c}`.
8
+ */
9
+ export declare function ja4Fingerprint(profile: TLSProfile, hasSNI?: boolean): string;
10
+ /**
11
+ * Generate only the JA4a section of the fingerprint.
12
+ *
13
+ * @param {TLSProfile} profile - TLS profile to fingerprint.
14
+ * @param {boolean} hasSNI - Whether the ClientHello includes a Server Name Indication extension.
15
+ * @returns {string} JA4a section string containing transport, version, SNI, counts, and ALPN.
16
+ */
17
+ export declare function ja4aSection(profile: TLSProfile, hasSNI?: boolean): string;
18
+ //# sourceMappingURL=ja4.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ja4.d.ts","sourceRoot":"","sources":["../../src/fingerprints/ja4.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AA6D7C;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,GAAE,OAAc,GAAG,MAAM,CAKlF;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,GAAE,OAAc,GAAG,MAAM,CAE/E"}
@@ -0,0 +1,81 @@
1
+ import { createHash } from "node:crypto";
2
+ import { GREASE_VALUES } from "../tls/constants.js";
3
+ const GREASE_SET = new Set(GREASE_VALUES);
4
+ function isGrease(value) {
5
+ return GREASE_SET.has(value);
6
+ }
7
+ function filterGrease(values) {
8
+ return values.filter((v) => !isGrease(v));
9
+ }
10
+ function ja4Version(versions) {
11
+ const filtered = filterGrease(versions);
12
+ if (filtered.includes(0x0304))
13
+ return "13";
14
+ if (filtered.includes(0x0303))
15
+ return "12";
16
+ if (filtered.includes(0x0302))
17
+ return "11";
18
+ if (filtered.includes(0x0301))
19
+ return "10";
20
+ return "00";
21
+ }
22
+ function ja4Alpn(alpnProtocols) {
23
+ if (alpnProtocols.length === 0)
24
+ return "00";
25
+ const first = alpnProtocols[0];
26
+ if (first === "h2")
27
+ return "h2";
28
+ if (first === "http/1.1")
29
+ return "h1";
30
+ return first.substring(0, 2);
31
+ }
32
+ function ja4a(profile, hasSNI = true) {
33
+ const transport = "t";
34
+ const version = ja4Version(profile.supportedVersions);
35
+ const sni = hasSNI ? "d" : "i";
36
+ const ciphers = filterGrease(profile.cipherSuites);
37
+ const extensions = filterGrease(profile.extensions.map((e) => e.type));
38
+ const cipherCount = String(Math.min(ciphers.length, 99)).padStart(2, "0");
39
+ const extCount = String(Math.min(extensions.length, 99)).padStart(2, "0");
40
+ const alpn = ja4Alpn(profile.alpnProtocols);
41
+ return `${transport}${version}${sni}${cipherCount}${extCount}_${alpn}`;
42
+ }
43
+ function ja4b(profile) {
44
+ const ciphers = filterGrease(profile.cipherSuites);
45
+ const sorted = [...ciphers].sort((a, b) => a - b);
46
+ const str = sorted.map((c) => c.toString(16).padStart(4, "0")).join(",");
47
+ return createHash("sha256").update(str).digest("hex").substring(0, 12);
48
+ }
49
+ function ja4c(profile) {
50
+ const extensions = filterGrease(profile.extensions.map((e) => e.type));
51
+ const sorted = [...extensions].sort((a, b) => a - b);
52
+ const extStr = sorted.map((e) => e.toString(16).padStart(4, "0")).join(",");
53
+ const sigAlgs = profile.signatureAlgorithms;
54
+ const sigStr = sigAlgs.map((s) => s.toString(16).padStart(4, "0")).join(",");
55
+ const combined = `${extStr}_${sigStr}`;
56
+ return createHash("sha256").update(combined).digest("hex").substring(0, 12);
57
+ }
58
+ /**
59
+ * Generate a complete JA4 fingerprint string.
60
+ *
61
+ * @param {TLSProfile} profile - TLS profile to fingerprint.
62
+ * @param {boolean} hasSNI - Whether the ClientHello includes a Server Name Indication extension.
63
+ * @returns {string} JA4 fingerprint in the format `{a}_{b}_{c}`.
64
+ */
65
+ export function ja4Fingerprint(profile, hasSNI = true) {
66
+ const a = ja4a(profile, hasSNI);
67
+ const b = ja4b(profile);
68
+ const c = ja4c(profile);
69
+ return `${a}_${b}_${c}`;
70
+ }
71
+ /**
72
+ * Generate only the JA4a section of the fingerprint.
73
+ *
74
+ * @param {TLSProfile} profile - TLS profile to fingerprint.
75
+ * @param {boolean} hasSNI - Whether the ClientHello includes a Server Name Indication extension.
76
+ * @returns {string} JA4a section string containing transport, version, SNI, counts, and ALPN.
77
+ */
78
+ export function ja4aSection(profile, hasSNI = true) {
79
+ return ja4a(profile, hasSNI);
80
+ }
81
+ //# sourceMappingURL=ja4.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ja4.js","sourceRoot":"","sources":["../../src/fingerprints/ja4.ts"],"names":[],"mappings":"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"}
@@ -1,41 +1,38 @@
1
1
  import type { BrowserProfile } from "../types.js";
2
- /** {@link BrowserProfile} impersonating Chrome 99 (Chromium 99.0.4844.51). */
2
+ /** Chrome 99 browser fingerprint profile. */
3
3
  export declare const chrome99: BrowserProfile;
4
- /** {@link BrowserProfile} impersonating Chrome 100 (Chromium 100.0.4896.75). */
4
+ /** Chrome 100 browser fingerprint profile. */
5
5
  export declare const chrome100: BrowserProfile;
6
- /** {@link BrowserProfile} impersonating Chrome 101 (Chromium 101.0.4951.67). */
6
+ /** Chrome 101 browser fingerprint profile. */
7
7
  export declare const chrome101: BrowserProfile;
8
- /** {@link BrowserProfile} impersonating Chrome 104 (Chromium 104.0.5112.81). */
8
+ /** Chrome 104 browser fingerprint profile. */
9
9
  export declare const chrome104: BrowserProfile;
10
- /** {@link BrowserProfile} impersonating Chrome 107 (Chromium 107.0.5304.107). */
10
+ /** Chrome 107 browser fingerprint profile. */
11
11
  export declare const chrome107: BrowserProfile;
12
- /** {@link BrowserProfile} impersonating Chrome 110 (Chromium 110.0.5481.177). */
12
+ /** Chrome 110 browser fingerprint profile. */
13
13
  export declare const chrome110: BrowserProfile;
14
- /** {@link BrowserProfile} impersonating Chrome 116 includes ALPS extension. */
14
+ /** Chrome 116 browser fingerprint profile. */
15
15
  export declare const chrome116: BrowserProfile;
16
- /** {@link BrowserProfile} impersonating Chrome 119 includes ALPS extension. */
16
+ /** Chrome 119 browser fingerprint profile. */
17
17
  export declare const chrome119: BrowserProfile;
18
- /** {@link BrowserProfile} impersonating Chrome 120 includes ALPS and ECH extensions. */
18
+ /** Chrome 120 browser fingerprint profile. */
19
19
  export declare const chrome120: BrowserProfile;
20
- /** {@link BrowserProfile} impersonating Chrome 123 includes ALPS and ECH extensions. */
20
+ /** Chrome 123 browser fingerprint profile. */
21
21
  export declare const chrome123: BrowserProfile;
22
- /** {@link BrowserProfile} impersonating Chrome 124 includes ALPS and ECH extensions. */
22
+ /** Chrome 124 browser fingerprint profile. */
23
23
  export declare const chrome124: BrowserProfile;
24
- /** {@link BrowserProfile} impersonating Chrome 126 includes ALPS and ECH extensions. */
24
+ /** Chrome 126 browser fingerprint profile. */
25
25
  export declare const chrome126: BrowserProfile;
26
- /** {@link BrowserProfile} impersonating Chrome 127 includes ALPS and ECH extensions. */
26
+ /** Chrome 127 browser fingerprint profile. */
27
27
  export declare const chrome127: BrowserProfile;
28
- /** {@link BrowserProfile} impersonating Chrome 131 includes ALPS and ECH extensions. */
28
+ /** Chrome 131 browser fingerprint profile. */
29
29
  export declare const chrome131: BrowserProfile;
30
- /** {@link BrowserProfile} impersonating Chrome 133 includes ALPS and ECH extensions. */
30
+ /** Chrome 133 browser fingerprint profile. */
31
31
  export declare const chrome133: BrowserProfile;
32
- /** {@link BrowserProfile} impersonating Chrome 136 includes ALPS and ECH extensions. */
32
+ /** Chrome 136 browser fingerprint profile. */
33
33
  export declare const chrome136: BrowserProfile;
34
- /** Alias for the most recent Chrome profile ({@link chrome136}). */
34
+ /** Alias for the most recent Chrome profile. */
35
35
  export declare const chromeLatest: BrowserProfile;
36
- /**
37
- * Registry of all available Chrome {@link BrowserProfile} instances keyed by
38
- * profile name (e.g. `"chrome136"`) and the aliases `"chrome_latest"`.
39
- */
36
+ /** Map of all available Chrome profiles keyed by name. */
40
37
  export declare const chromeProfiles: ReadonlyMap<string, BrowserProfile>;
41
38
  //# sourceMappingURL=chrome.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"chrome.d.ts","sourceRoot":"","sources":["../../../src/fingerprints/profiles/chrome.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAoE,MAAM,aAAa,CAAC;AA6HpH,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
+ {"version":3,"file":"chrome.d.ts","sourceRoot":"","sources":["../../../src/fingerprints/profiles/chrome.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAoE,MAAM,aAAa,CAAC;AAsIpH,6CAA6C;AAC7C,eAAO,MAAM,QAAQ,gBAA4C,CAAC;AAClE,8CAA8C;AAC9C,eAAO,MAAM,SAAS,gBAA8C,CAAC;AACrE,8CAA8C;AAC9C,eAAO,MAAM,SAAS,gBAA8C,CAAC;AACrE,8CAA8C;AAC9C,eAAO,MAAM,SAAS,gBAA8C,CAAC;AACrE,8CAA8C;AAC9C,eAAO,MAAM,SAAS,gBAA+C,CAAC;AACtE,8CAA8C;AAC9C,eAAO,MAAM,SAAS,gBAA+C,CAAC;AACtE,8CAA8C;AAC9C,eAAO,MAAM,SAAS,gBAA8D,CAAC;AACrF,8CAA8C;AAC9C,eAAO,MAAM,SAAS,gBAA+D,CAAC;AACtF,8CAA8C;AAC9C,eAAO,MAAM,SAAS,gBAA0E,CAAC;AACjG,8CAA8C;AAC9C,eAAO,MAAM,SAAS,gBAAyE,CAAC;AAChG,8CAA8C;AAC9C,eAAO,MAAM,SAAS,gBAAmF,CAAC;AAC1G,8CAA8C;AAC9C,eAAO,MAAM,SAAS,gBAAmF,CAAC;AAC1G,8CAA8C;AAC9C,eAAO,MAAM,SAAS,gBAAmF,CAAC;AAC1G,8CAA8C;AAC9C,eAAO,MAAM,SAAS,gBAAmF,CAAC;AAC1G,8CAA8C;AAC9C,eAAO,MAAM,SAAS,gBAAmF,CAAC;AAC1G,8CAA8C;AAC9C,eAAO,MAAM,SAAS,gBAAmF,CAAC;AAE1G,gDAAgD;AAChD,eAAO,MAAM,YAAY,gBAAY,CAAC;AAEtC,0DAA0D;AAC1D,eAAO,MAAM,cAAc,EAAE,WAAW,CAAC,MAAM,EAAE,cAAc,CAkB7D,CAAC"}
@@ -2,27 +2,32 @@ import { CipherSuite, ExtensionType, NamedGroup, SignatureScheme, ECPointFormat,
2
2
  import * as ext from "../extensions.js";
3
3
  const CHROME_CIPHER_SUITES = [CipherSuite.TLS_AES_128_GCM_SHA256, CipherSuite.TLS_AES_256_GCM_SHA384, CipherSuite.TLS_CHACHA20_POLY1305_SHA256, CipherSuite.TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, CipherSuite.TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, CipherSuite.TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384, CipherSuite.TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384, CipherSuite.TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256, CipherSuite.TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256, CipherSuite.TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, CipherSuite.TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, CipherSuite.TLS_RSA_WITH_AES_128_GCM_SHA256, CipherSuite.TLS_RSA_WITH_AES_256_GCM_SHA384, CipherSuite.TLS_RSA_WITH_AES_128_CBC_SHA, CipherSuite.TLS_RSA_WITH_AES_256_CBC_SHA];
4
4
  const CHROME_GROUPS = [NamedGroup.X25519, NamedGroup.SECP256R1, NamedGroup.SECP384R1];
5
+ const CHROME_GROUPS_PQ = [NamedGroup.X25519_MLKEM768, NamedGroup.X25519, NamedGroup.SECP256R1, NamedGroup.SECP384R1];
5
6
  const CHROME_SIGALGS = [SignatureScheme.ECDSA_SECP256R1_SHA256, SignatureScheme.RSA_PSS_RSAE_SHA256, SignatureScheme.RSA_PKCS1_SHA256, SignatureScheme.ECDSA_SECP384R1_SHA384, SignatureScheme.RSA_PSS_RSAE_SHA384, SignatureScheme.RSA_PKCS1_SHA384, SignatureScheme.RSA_PSS_RSAE_SHA512, SignatureScheme.RSA_PKCS1_SHA512];
6
7
  const CHROME_SUPPORTED_VERSIONS = [ProtocolVersion.TLS_1_3, ProtocolVersion.TLS_1_2];
7
8
  const CHROME_KEY_SHARE_GROUPS = [NamedGroup.X25519];
9
+ const CHROME_KEY_SHARE_GROUPS_PQ = [NamedGroup.X25519_MLKEM768, NamedGroup.X25519];
8
10
  const CHROME_CERT_COMPRESS = [CertCompressAlg.BROTLI];
9
11
  const CHROME_DELEGATED_CREDS = [SignatureScheme.ECDSA_SECP256R1_SHA256, SignatureScheme.RSA_PSS_RSAE_SHA256, SignatureScheme.RSA_PSS_RSAE_SHA384, SignatureScheme.RSA_PSS_RSAE_SHA512];
10
12
  function chromeExtensions(opts) {
13
+ const groups = opts.pq ? CHROME_GROUPS_PQ : CHROME_GROUPS;
14
+ const keyShareGroups = opts.pq ? CHROME_KEY_SHARE_GROUPS_PQ : CHROME_KEY_SHARE_GROUPS;
11
15
  const list = [
12
16
  { type: ExtensionType.SERVER_NAME, data: ext.sniData },
13
17
  { type: ExtensionType.EXTENDED_MASTER_SECRET, data: () => ext.extendedMasterSecretData() },
14
18
  { type: ExtensionType.RENEGOTIATION_INFO, data: () => ext.renegotiationInfoData() },
15
- { type: ExtensionType.SUPPORTED_GROUPS, data: () => ext.supportedGroupsData(CHROME_GROUPS) },
19
+ { type: ExtensionType.SUPPORTED_GROUPS, data: () => ext.supportedGroupsData(groups) },
16
20
  { type: ExtensionType.EC_POINT_FORMATS, data: () => ext.ecPointFormatsData([ECPointFormat.UNCOMPRESSED]) },
17
21
  { type: ExtensionType.SESSION_TICKET, data: () => ext.sessionTicketData() },
18
22
  { type: ExtensionType.APPLICATION_LAYER_PROTOCOL_NEGOTIATION, data: () => ext.alpnData(["h2", "http/1.1"]) },
19
23
  { type: ExtensionType.STATUS_REQUEST, data: () => ext.statusRequestData() },
20
24
  { type: ExtensionType.SIGNATURE_ALGORITHMS, data: () => ext.signatureAlgorithmsData(CHROME_SIGALGS) },
21
25
  { type: ExtensionType.SIGNED_CERTIFICATE_TIMESTAMP },
22
- { type: ExtensionType.KEY_SHARE, data: () => ext.keySharePlaceholder(CHROME_KEY_SHARE_GROUPS) },
26
+ { type: ExtensionType.KEY_SHARE, data: () => ext.keySharePlaceholder(keyShareGroups) },
23
27
  { type: ExtensionType.PSK_KEY_EXCHANGE_MODES, data: () => ext.pskKeyExchangeModesData([PskKeyExchangeMode.PSK_DHE_KE]) },
24
28
  { type: ExtensionType.SUPPORTED_VERSIONS, data: () => ext.supportedVersionsData(CHROME_SUPPORTED_VERSIONS) },
25
29
  { type: ExtensionType.COMPRESS_CERTIFICATE, data: () => ext.compressCertData(CHROME_CERT_COMPRESS) },
30
+ { type: ExtensionType.PADDING },
26
31
  ];
27
32
  if (opts.alps) {
28
33
  list.push({
@@ -74,19 +79,21 @@ function chromeHeaders(version) {
74
79
  };
75
80
  }
76
81
  function chromeTLS(opts = {}) {
82
+ const groups = opts.pq ? CHROME_GROUPS_PQ : CHROME_GROUPS;
83
+ const keyShareGroups = opts.pq ? CHROME_KEY_SHARE_GROUPS_PQ : CHROME_KEY_SHARE_GROUPS;
77
84
  return {
78
85
  recordVersion: ProtocolVersion.TLS_1_0,
79
86
  clientVersion: ProtocolVersion.TLS_1_2,
80
87
  cipherSuites: CHROME_CIPHER_SUITES,
81
88
  compressionMethods: [0],
82
89
  extensions: chromeExtensions(opts),
83
- supportedGroups: CHROME_GROUPS,
90
+ supportedGroups: groups,
84
91
  signatureAlgorithms: CHROME_SIGALGS,
85
92
  alpnProtocols: ["h2", "http/1.1"],
86
93
  grease: true,
87
94
  randomSessionId: true,
88
95
  certCompressAlgorithms: CHROME_CERT_COMPRESS,
89
- keyShareGroups: CHROME_KEY_SHARE_GROUPS,
96
+ keyShareGroups: keyShareGroups,
90
97
  pskKeyExchangeModes: [PskKeyExchangeMode.PSK_DHE_KE],
91
98
  supportedVersions: CHROME_SUPPORTED_VERSIONS,
92
99
  ecPointFormats: [ECPointFormat.UNCOMPRESSED],
@@ -104,44 +111,41 @@ function chromeProfile(name, version, opts = {}) {
104
111
  headers: chromeHeaders(version),
105
112
  };
106
113
  }
107
- /** {@link BrowserProfile} impersonating Chrome 99 (Chromium 99.0.4844.51). */
114
+ /** Chrome 99 browser fingerprint profile. */
108
115
  export const chrome99 = chromeProfile("chrome99", "99.0.4844.51");
109
- /** {@link BrowserProfile} impersonating Chrome 100 (Chromium 100.0.4896.75). */
116
+ /** Chrome 100 browser fingerprint profile. */
110
117
  export const chrome100 = chromeProfile("chrome100", "100.0.4896.75");
111
- /** {@link BrowserProfile} impersonating Chrome 101 (Chromium 101.0.4951.67). */
118
+ /** Chrome 101 browser fingerprint profile. */
112
119
  export const chrome101 = chromeProfile("chrome101", "101.0.4951.67");
113
- /** {@link BrowserProfile} impersonating Chrome 104 (Chromium 104.0.5112.81). */
120
+ /** Chrome 104 browser fingerprint profile. */
114
121
  export const chrome104 = chromeProfile("chrome104", "104.0.5112.81");
115
- /** {@link BrowserProfile} impersonating Chrome 107 (Chromium 107.0.5304.107). */
122
+ /** Chrome 107 browser fingerprint profile. */
116
123
  export const chrome107 = chromeProfile("chrome107", "107.0.5304.107");
117
- /** {@link BrowserProfile} impersonating Chrome 110 (Chromium 110.0.5481.177). */
124
+ /** Chrome 110 browser fingerprint profile. */
118
125
  export const chrome110 = chromeProfile("chrome110", "110.0.5481.177");
119
- /** {@link BrowserProfile} impersonating Chrome 116 includes ALPS extension. */
126
+ /** Chrome 116 browser fingerprint profile. */
120
127
  export const chrome116 = chromeProfile("chrome116", "116.0.5845.96", { alps: true });
121
- /** {@link BrowserProfile} impersonating Chrome 119 includes ALPS extension. */
128
+ /** Chrome 119 browser fingerprint profile. */
122
129
  export const chrome119 = chromeProfile("chrome119", "119.0.6045.105", { alps: true });
123
- /** {@link BrowserProfile} impersonating Chrome 120 includes ALPS and ECH extensions. */
130
+ /** Chrome 120 browser fingerprint profile. */
124
131
  export const chrome120 = chromeProfile("chrome120", "120.0.6099.109", { alps: true, ech: true });
125
- /** {@link BrowserProfile} impersonating Chrome 123 includes ALPS and ECH extensions. */
132
+ /** Chrome 123 browser fingerprint profile. */
126
133
  export const chrome123 = chromeProfile("chrome123", "123.0.6312.86", { alps: true, ech: true });
127
- /** {@link BrowserProfile} impersonating Chrome 124 includes ALPS and ECH extensions. */
128
- export const chrome124 = chromeProfile("chrome124", "124.0.6367.60", { alps: true, ech: true });
129
- /** {@link BrowserProfile} impersonating Chrome 126 includes ALPS and ECH extensions. */
130
- export const chrome126 = chromeProfile("chrome126", "126.0.6478.55", { alps: true, ech: true });
131
- /** {@link BrowserProfile} impersonating Chrome 127 includes ALPS and ECH extensions. */
132
- export const chrome127 = chromeProfile("chrome127", "127.0.6533.72", { alps: true, ech: true });
133
- /** {@link BrowserProfile} impersonating Chrome 131 includes ALPS and ECH extensions. */
134
- export const chrome131 = chromeProfile("chrome131", "131.0.6778.86", { alps: true, ech: true });
135
- /** {@link BrowserProfile} impersonating Chrome 133 includes ALPS and ECH extensions. */
136
- export const chrome133 = chromeProfile("chrome133", "133.0.6943.53", { alps: true, ech: true });
137
- /** {@link BrowserProfile} impersonating Chrome 136 includes ALPS and ECH extensions. */
138
- export const chrome136 = chromeProfile("chrome136", "136.0.7103.92", { alps: true, ech: true });
139
- /** Alias for the most recent Chrome profile ({@link chrome136}). */
134
+ /** Chrome 124 browser fingerprint profile. */
135
+ export const chrome124 = chromeProfile("chrome124", "124.0.6367.60", { alps: true, ech: true, pq: true });
136
+ /** Chrome 126 browser fingerprint profile. */
137
+ export const chrome126 = chromeProfile("chrome126", "126.0.6478.55", { alps: true, ech: true, pq: true });
138
+ /** Chrome 127 browser fingerprint profile. */
139
+ export const chrome127 = chromeProfile("chrome127", "127.0.6533.72", { alps: true, ech: true, pq: true });
140
+ /** Chrome 131 browser fingerprint profile. */
141
+ export const chrome131 = chromeProfile("chrome131", "131.0.6778.86", { alps: true, ech: true, pq: true });
142
+ /** Chrome 133 browser fingerprint profile. */
143
+ export const chrome133 = chromeProfile("chrome133", "133.0.6943.53", { alps: true, ech: true, pq: true });
144
+ /** Chrome 136 browser fingerprint profile. */
145
+ export const chrome136 = chromeProfile("chrome136", "136.0.7103.92", { alps: true, ech: true, pq: true });
146
+ /** Alias for the most recent Chrome profile. */
140
147
  export const chromeLatest = chrome136;
141
- /**
142
- * Registry of all available Chrome {@link BrowserProfile} instances keyed by
143
- * profile name (e.g. `"chrome136"`) and the aliases `"chrome_latest"`.
144
- */
148
+ /** Map of all available Chrome profiles keyed by name. */
145
149
  export const chromeProfiles = new Map([
146
150
  ["chrome99", chrome99],
147
151
  ["chrome100", chrome100],
@@ -1 +1 @@
1
- {"version":3,"file":"chrome.js","sourceRoot":"","sources":["../../../src/fingerprints/profiles/chrome.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chrome.js","sourceRoot":"","sources":["../../../src/fingerprints/profiles/chrome.ts"],"names":[],"mappings":"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"}
@@ -1,19 +1,16 @@
1
1
  import type { BrowserProfile } from "../types.js";
2
- /** {@link BrowserProfile} impersonating Microsoft Edge 99 (based on Chromium 99). */
2
+ /** Edge 99 browser fingerprint profile. */
3
3
  export declare const edge99: BrowserProfile;
4
- /** {@link BrowserProfile} impersonating Microsoft Edge 101 (based on Chromium 101). */
4
+ /** Edge 101 browser fingerprint profile. */
5
5
  export declare const edge101: BrowserProfile;
6
- /** {@link BrowserProfile} impersonating Microsoft Edge 126 (based on Chromium 126). */
6
+ /** Edge 126 browser fingerprint profile. */
7
7
  export declare const edge126: BrowserProfile;
8
- /** {@link BrowserProfile} impersonating Microsoft Edge 131 (based on Chromium 131). */
8
+ /** Edge 131 browser fingerprint profile. */
9
9
  export declare const edge131: BrowserProfile;
10
- /** {@link BrowserProfile} impersonating Microsoft Edge 136 (based on Chromium 136). */
10
+ /** Edge 136 browser fingerprint profile. */
11
11
  export declare const edge136: BrowserProfile;
12
- /** Alias for the most recent Edge profile ({@link edge136}). */
12
+ /** Alias for the most recent Edge profile. */
13
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
- */
14
+ /** Map of all available Edge profiles keyed by name. */
18
15
  export declare const edgeProfiles: ReadonlyMap<string, BrowserProfile>;
19
16
  //# sourceMappingURL=edge.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"edge.d.ts","sourceRoot":"","sources":["../../../src/fingerprints/profiles/edge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAA4B,MAAM,aAAa,CAAC;AAyC5E,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
+ {"version":3,"file":"edge.d.ts","sourceRoot":"","sources":["../../../src/fingerprints/profiles/edge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAiB,MAAM,aAAa,CAAC;AAwCjE,2CAA2C;AAC3C,eAAO,MAAM,MAAM,gBAAoE,CAAC;AACxF,4CAA4C;AAC5C,eAAO,MAAM,OAAO,gBAAwE,CAAC;AAC7F,4CAA4C;AAC5C,eAAO,MAAM,OAAO,gBAAwE,CAAC;AAC7F,4CAA4C;AAC5C,eAAO,MAAM,OAAO,gBAAwE,CAAC;AAC7F,4CAA4C;AAC5C,eAAO,MAAM,OAAO,gBAAwE,CAAC;AAE7F,8CAA8C;AAC9C,eAAO,MAAM,UAAU,gBAAU,CAAC;AAElC,wDAAwD;AACxD,eAAO,MAAM,YAAY,EAAE,WAAW,CAAC,MAAM,EAAE,cAAc,CAO3D,CAAC"}
@@ -34,22 +34,19 @@ function edgeProfile(name, edgeVersion, chromiumVersion, baseChromeName) {
34
34
  headers: edgeHeaders(edgeVersion, chromiumVersion),
35
35
  };
36
36
  }
37
- /** {@link BrowserProfile} impersonating Microsoft Edge 99 (based on Chromium 99). */
37
+ /** Edge 99 browser fingerprint profile. */
38
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). */
39
+ /** Edge 101 browser fingerprint profile. */
40
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). */
41
+ /** Edge 126 browser fingerprint profile. */
42
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). */
43
+ /** Edge 131 browser fingerprint profile. */
44
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). */
45
+ /** Edge 136 browser fingerprint profile. */
46
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}). */
47
+ /** Alias for the most recent Edge profile. */
48
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
- */
49
+ /** Map of all available Edge profiles keyed by name. */
53
50
  export const edgeProfiles = new Map([
54
51
  ["edge99", edge99],
55
52
  ["edge101", edge101],
@@ -1 +1 @@
1
- {"version":3,"file":"edge.js","sourceRoot":"","sources":["../../../src/fingerprints/profiles/edge.ts"],"names":[],"mappings":"AAEA,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,CAAC,IAAY,EAAE,WAAmB,EAAE,eAAuB,EAAE,cAAsB;IACrG,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
+ {"version":3,"file":"edge.js","sourceRoot":"","sources":["../../../src/fingerprints/profiles/edge.ts"],"names":[],"mappings":"AACA,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,CAAC,IAAY,EAAE,WAAmB,EAAE,eAAuB,EAAE,cAAsB;IACrG,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,2CAA2C;AAC3C,MAAM,CAAC,MAAM,MAAM,GAAG,WAAW,CAAC,QAAQ,EAAE,cAAc,EAAE,cAAc,EAAE,UAAU,CAAC,CAAC;AACxF,4CAA4C;AAC5C,MAAM,CAAC,MAAM,OAAO,GAAG,WAAW,CAAC,SAAS,EAAE,eAAe,EAAE,eAAe,EAAE,WAAW,CAAC,CAAC;AAC7F,4CAA4C;AAC5C,MAAM,CAAC,MAAM,OAAO,GAAG,WAAW,CAAC,SAAS,EAAE,eAAe,EAAE,eAAe,EAAE,WAAW,CAAC,CAAC;AAC7F,4CAA4C;AAC5C,MAAM,CAAC,MAAM,OAAO,GAAG,WAAW,CAAC,SAAS,EAAE,eAAe,EAAE,eAAe,EAAE,WAAW,CAAC,CAAC;AAC7F,4CAA4C;AAC5C,MAAM,CAAC,MAAM,OAAO,GAAG,WAAW,CAAC,SAAS,EAAE,eAAe,EAAE,eAAe,EAAE,WAAW,CAAC,CAAC;AAE7F,8CAA8C;AAC9C,MAAM,CAAC,MAAM,UAAU,GAAG,OAAO,CAAC;AAElC,wDAAwD;AACxD,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"}