jumpy-lion 0.1.6-beta.0 → 0.1.6-beta.3
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 +13 -0
- package/dist/browser-controller.d.ts.map +1 -1
- package/dist/browser-controller.js +57 -2
- package/dist/browser-controller.js.map +1 -1
- package/dist/browser-plugin.d.ts +49 -0
- package/dist/browser-plugin.d.ts.map +1 -1
- package/dist/browser-plugin.js +103 -1
- package/dist/browser-plugin.js.map +1 -1
- package/dist/browser-process/anti-detect-browser.d.ts +56 -0
- package/dist/browser-process/anti-detect-browser.d.ts.map +1 -0
- package/dist/browser-process/anti-detect-browser.js +142 -0
- package/dist/browser-process/anti-detect-browser.js.map +1 -0
- package/dist/browser-process/anti-detect-config.d.ts +102 -0
- package/dist/browser-process/anti-detect-config.d.ts.map +1 -0
- package/dist/browser-process/anti-detect-config.js +328 -0
- package/dist/browser-process/anti-detect-config.js.map +1 -0
- package/dist/browser-process/browser.d.ts +26 -0
- package/dist/browser-process/browser.d.ts.map +1 -1
- package/dist/browser-process/browser.js +115 -6
- package/dist/browser-process/browser.js.map +1 -1
- package/dist/browser-process/get-chrome-executable.d.ts +7 -0
- package/dist/browser-process/get-chrome-executable.d.ts.map +1 -1
- package/dist/browser-process/get-chrome-executable.js +42 -0
- package/dist/browser-process/get-chrome-executable.js.map +1 -1
- package/dist/browser-process/index.d.ts +4 -1
- package/dist/browser-process/index.d.ts.map +1 -1
- package/dist/browser-process/index.js +3 -1
- package/dist/browser-process/index.js.map +1 -1
- package/dist/crawler.d.ts +17 -0
- package/dist/crawler.d.ts.map +1 -1
- package/dist/crawler.js +5 -2
- package/dist/crawler.js.map +1 -1
- package/dist/fingerprinting/fingerprint-injector.d.ts +54 -0
- package/dist/fingerprinting/fingerprint-injector.d.ts.map +1 -1
- package/dist/fingerprinting/fingerprint-injector.js +207 -58
- package/dist/fingerprinting/fingerprint-injector.js.map +1 -1
- package/dist/fingerprinting/fingerprint-overrides/audio-spoofing.d.ts.map +1 -1
- package/dist/fingerprinting/fingerprint-overrides/audio-spoofing.js +16 -0
- package/dist/fingerprinting/fingerprint-overrides/audio-spoofing.js.map +1 -1
- package/dist/fingerprinting/fingerprint-overrides/cdp-detection-bypass.d.ts.map +1 -1
- package/dist/fingerprinting/fingerprint-overrides/cdp-detection-bypass.js +3 -2
- package/dist/fingerprinting/fingerprint-overrides/cdp-detection-bypass.js.map +1 -1
- package/dist/fingerprinting/fingerprint-overrides/datadome-bypass.d.ts.map +1 -1
- package/dist/fingerprinting/fingerprint-overrides/datadome-bypass.js +18 -10
- package/dist/fingerprinting/fingerprint-overrides/datadome-bypass.js.map +1 -1
- package/dist/fingerprinting/fingerprint-overrides/index.d.ts +1 -2
- package/dist/fingerprinting/fingerprint-overrides/index.d.ts.map +1 -1
- package/dist/fingerprinting/fingerprint-overrides/index.js +1 -2
- package/dist/fingerprinting/fingerprint-overrides/index.js.map +1 -1
- package/dist/fingerprinting/fingerprint-overrides/keyboard-humanization.d.ts +10 -2
- package/dist/fingerprinting/fingerprint-overrides/keyboard-humanization.d.ts.map +1 -1
- package/dist/fingerprinting/fingerprint-overrides/keyboard-humanization.js +11 -2
- package/dist/fingerprinting/fingerprint-overrides/keyboard-humanization.js.map +1 -1
- package/dist/fingerprinting/fingerprint-overrides/locale-spoofing.d.ts +20 -2
- package/dist/fingerprinting/fingerprint-overrides/locale-spoofing.d.ts.map +1 -1
- package/dist/fingerprinting/fingerprint-overrides/locale-spoofing.js +47 -250
- package/dist/fingerprinting/fingerprint-overrides/locale-spoofing.js.map +1 -1
- package/dist/fingerprinting/fingerprint-overrides/mouse-humanization.d.ts +12 -1
- package/dist/fingerprinting/fingerprint-overrides/mouse-humanization.d.ts.map +1 -1
- package/dist/fingerprinting/fingerprint-overrides/mouse-humanization.js +27 -22
- package/dist/fingerprinting/fingerprint-overrides/mouse-humanization.js.map +1 -1
- package/dist/fingerprinting/fingerprint-overrides/platform-consistency.d.ts.map +1 -1
- package/dist/fingerprinting/fingerprint-overrides/platform-consistency.js +86 -28
- package/dist/fingerprinting/fingerprint-overrides/platform-consistency.js.map +1 -1
- package/dist/fingerprinting/fingerprint-overrides/scroll-humanization.d.ts +9 -2
- package/dist/fingerprinting/fingerprint-overrides/scroll-humanization.d.ts.map +1 -1
- package/dist/fingerprinting/fingerprint-overrides/scroll-humanization.js +10 -2
- package/dist/fingerprinting/fingerprint-overrides/scroll-humanization.js.map +1 -1
- package/dist/fingerprinting/fingerprint-overrides/stealth-script.d.ts.map +1 -1
- package/dist/fingerprinting/fingerprint-overrides/stealth-script.js +165 -33
- package/dist/fingerprinting/fingerprint-overrides/stealth-script.js.map +1 -1
- package/dist/fingerprinting/fingerprint-overrides/storage-consistency.d.ts.map +1 -1
- package/dist/fingerprinting/fingerprint-overrides/storage-consistency.js +10 -8
- package/dist/fingerprinting/fingerprint-overrides/storage-consistency.js.map +1 -1
- package/dist/fingerprinting/fingerprint-overrides/timing-consistency.d.ts.map +1 -1
- package/dist/fingerprinting/fingerprint-overrides/timing-consistency.js +9 -7
- package/dist/fingerprinting/fingerprint-overrides/timing-consistency.js.map +1 -1
- package/dist/fingerprinting/fingerprint-overrides/ua-ch.js +6 -6
- package/dist/fingerprinting/fingerprint-overrides/utils.d.ts.map +1 -1
- package/dist/fingerprinting/fingerprint-overrides/utils.js +44 -1
- package/dist/fingerprinting/fingerprint-overrides/utils.js.map +1 -1
- package/dist/fingerprinting/fingerprint-overrides/webgl-spoofing.d.ts.map +1 -1
- package/dist/fingerprinting/fingerprint-overrides/webgl-spoofing.js +43 -1
- package/dist/fingerprinting/fingerprint-overrides/webgl-spoofing.js.map +1 -1
- package/dist/fingerprinting/fingerprint-overrides/webgpu-spoofing.d.ts.map +1 -1
- package/dist/fingerprinting/fingerprint-overrides/webgpu-spoofing.js +9 -1
- package/dist/fingerprinting/fingerprint-overrides/webgpu-spoofing.js.map +1 -1
- package/dist/fingerprinting/fingerprint-overrides/webrtc-spoofing.d.ts.map +1 -1
- package/dist/fingerprinting/fingerprint-overrides/webrtc-spoofing.js +14 -3
- package/dist/fingerprinting/fingerprint-overrides/webrtc-spoofing.js.map +1 -1
- package/dist/fingerprinting/locale-resolver.d.ts +41 -0
- package/dist/fingerprinting/locale-resolver.d.ts.map +1 -0
- package/dist/fingerprinting/locale-resolver.js +155 -0
- package/dist/fingerprinting/locale-resolver.js.map +1 -0
- package/dist/fingerprinting/non-apify-fingerprint-generator.d.ts +32 -0
- package/dist/fingerprinting/non-apify-fingerprint-generator.d.ts.map +1 -0
- package/dist/fingerprinting/non-apify-fingerprint-generator.js +480 -0
- package/dist/fingerprinting/non-apify-fingerprint-generator.js.map +1 -0
- package/dist/keyboard-layout.d.ts +45 -0
- package/dist/keyboard-layout.d.ts.map +1 -0
- package/dist/keyboard-layout.js +162 -0
- package/dist/keyboard-layout.js.map +1 -0
- package/dist/page.d.ts +18 -0
- package/dist/page.d.ts.map +1 -1
- package/dist/page.js +96 -6
- package/dist/page.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +6 -1
- package/dist/fingerprinting/fingerprint-overrides/coalesced-events-spoofing.d.ts +0 -10
- package/dist/fingerprinting/fingerprint-overrides/coalesced-events-spoofing.d.ts.map +0 -1
- package/dist/fingerprinting/fingerprint-overrides/coalesced-events-spoofing.js +0 -210
- package/dist/fingerprinting/fingerprint-overrides/coalesced-events-spoofing.js.map +0 -1
|
@@ -3,10 +3,12 @@ import fs from 'fs/promises';
|
|
|
3
3
|
import os from 'os';
|
|
4
4
|
import path from 'path';
|
|
5
5
|
import { log } from '@crawlee/core';
|
|
6
|
-
import { getChromeBinaryVersion, getChromeExecutablePath } from './get-chrome-executable.js';
|
|
6
|
+
import { getChromeBinaryVersion, getChromeExecutablePath, getAntiDetectBrowserPath } from './get-chrome-executable.js';
|
|
7
7
|
import { BrowserProcess } from './process.js';
|
|
8
8
|
import { populateChromeProfile } from '../browser-profiles/chrome/populate-profile.js';
|
|
9
9
|
import { createChromeProfile } from '../browser-profiles/index.js';
|
|
10
|
+
import { isAntiDetectBrowserSync } from './anti-detect-browser.js';
|
|
11
|
+
import { writeTempFingerprintConfig } from './anti-detect-config.js';
|
|
10
12
|
const EXTENSION_PATH = path.resolve(import.meta.dirname, '../fingerprinting/all-fingerprint-defender');
|
|
11
13
|
const EXTENSION_PATH2 = path.resolve(import.meta.dirname, '../fingerprinting/anti-webgpu');
|
|
12
14
|
/**
|
|
@@ -17,8 +19,9 @@ const STEALTH_ARGS = [
|
|
|
17
19
|
'--disable-blink-features=AutomationControlled',
|
|
18
20
|
// Disable infobars (including "Chrome is being controlled" banner)
|
|
19
21
|
'--disable-infobars',
|
|
20
|
-
//
|
|
21
|
-
|
|
22
|
+
// NOTE: --lang is intentionally NOT hardcoded here. It is appended per-session
|
|
23
|
+
// from the resolved locale (browser-plugin.ts → launchOptions.resolvedLocale) so a
|
|
24
|
+
// user-supplied locale: 'ko-KR' actually reaches Chrome's ICU startup.
|
|
22
25
|
// Disable dev-shm-usage for consistent memory reporting
|
|
23
26
|
'--disable-dev-shm-usage',
|
|
24
27
|
// Disable background networking that can reveal automation
|
|
@@ -55,7 +58,17 @@ const STEALTH_ARGS = [
|
|
|
55
58
|
'--enable-features=NetworkService,NetworkServiceInProcess',
|
|
56
59
|
];
|
|
57
60
|
export const launchBrowserWithNewProfile = async (executablePath, options = {}) => {
|
|
58
|
-
const { anonymizedProxyUrl, debuggingPort, windowWidth = 1920, windowHeight = 1080, ignoreHttpsErrors, headless, useExperimentalFingerprints = false, maximizeWindow = true, enableStealthMode = true, populateProfile: shouldPopulateProfile = true, userDataDir: providedUserDataDir, keepUserDataDir, dnsOverHttpsServer, secureDnsMode, webrtcIpHandlingPolicy, } = options;
|
|
61
|
+
const { anonymizedProxyUrl, debuggingPort, windowWidth = 1920, windowHeight = 1080, ignoreHttpsErrors, headless, useExperimentalFingerprints = false, maximizeWindow = true, enableStealthMode = true, populateProfile: shouldPopulateProfile = true, userDataDir: providedUserDataDir, keepUserDataDir, dnsOverHttpsServer, secureDnsMode, webrtcIpHandlingPolicy, useNativeStealth = false, } = options;
|
|
62
|
+
// Detect if we're running with the anti-detect browser binary
|
|
63
|
+
const usingAntiDetectBrowser = useNativeStealth && isAntiDetectBrowserSync(executablePath);
|
|
64
|
+
if (useNativeStealth && !usingAntiDetectBrowser) {
|
|
65
|
+
log.debug('[AntiDetect] useNativeStealth requested but anti-detect browser not detected — using standard Chrome');
|
|
66
|
+
}
|
|
67
|
+
else if (usingAntiDetectBrowser) {
|
|
68
|
+
log.debug('[AntiDetect] Anti-detect browser detected — native C++ stealth active');
|
|
69
|
+
}
|
|
70
|
+
// Track temp config file for cleanup
|
|
71
|
+
let fingerprintConfigPath = null;
|
|
59
72
|
try {
|
|
60
73
|
const userDataDir = providedUserDataDir
|
|
61
74
|
? path.resolve(providedUserDataDir)
|
|
@@ -118,6 +131,61 @@ export const launchBrowserWithNewProfile = async (executablePath, options = {})
|
|
|
118
131
|
browserArgs.push(`--disable-extensions-except=${extList}`, // optional, keeps Chrome from loading the rest
|
|
119
132
|
`--load-extension=${extList}`);
|
|
120
133
|
}
|
|
134
|
+
// Anti-detect browser: write --fingerprint-config JSON and pass it to the browser.
|
|
135
|
+
// The C++ FingerprintConfig singleton reads this file at startup (lazy, first access).
|
|
136
|
+
if (usingAntiDetectBrowser) {
|
|
137
|
+
try {
|
|
138
|
+
// Prefer a pre-generated per-session config (passed by browser-plugin.ts) so that
|
|
139
|
+
// each browser instance gets unique C++-level hardware fingerprints (GPU, screen,
|
|
140
|
+
// CPU). Fall back to the static default_fingerprint.json if none was provided.
|
|
141
|
+
const configToWrite = options.fingerprintConfig ?? await (async () => {
|
|
142
|
+
const { default: def } = await import(
|
|
143
|
+
/* @vite-ignore */ new URL('../../browser/config/default_fingerprint.json', import.meta.url).href).catch(() => ({ default: null }));
|
|
144
|
+
return def;
|
|
145
|
+
})();
|
|
146
|
+
if (configToWrite) {
|
|
147
|
+
fingerprintConfigPath = await writeTempFingerprintConfig(configToWrite);
|
|
148
|
+
browserArgs.push(`--fingerprint-config=${fingerprintConfigPath}`);
|
|
149
|
+
// --fingerprint-accept-language is our custom C++ hook in
|
|
150
|
+
// net/url_request/url_request_http_job.cc. Only the anti-detect binary
|
|
151
|
+
// understands this flag. The hook splits on commas and feeds each entry
|
|
152
|
+
// verbatim into `navigator.languages`, so we MUST strip q-values here;
|
|
153
|
+
// otherwise the JS array leaks `"ko;q=0.9"`-style entries and becomes a
|
|
154
|
+
// detectable anomaly (real Chrome's navigator.languages never carries
|
|
155
|
+
// q-values — those are HTTP Accept-Language semantics only).
|
|
156
|
+
const fpLangs = configToWrite.navigator?.languages;
|
|
157
|
+
if (fpLangs) {
|
|
158
|
+
const cleanLangs = fpLangs.split(',')
|
|
159
|
+
.map((l) => l.split(';')[0].trim())
|
|
160
|
+
.filter(Boolean)
|
|
161
|
+
.join(',');
|
|
162
|
+
browserArgs.push(`--fingerprint-accept-language=${cleanLangs}`);
|
|
163
|
+
}
|
|
164
|
+
log.debug(`[AntiDetect] Wrote fingerprint config: ${fingerprintConfigPath}${options.fingerprintConfig ? ' (per-session)' : ' (static default)'}`);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
catch (configErr) {
|
|
168
|
+
log.debug(`[AntiDetect] Could not write fingerprint config: ${configErr}`);
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
// --lang is understood by every Chrome binary (stock + anti-detect) and configures
|
|
172
|
+
// ICU's default locale at startup, which drives Intl.* defaults, date/number formatting,
|
|
173
|
+
// and the default Accept-Language on stock Chrome. Drive it from the resolved triple so
|
|
174
|
+
// fingerprintOptions.locale: 'ko-KR' actually reaches the browser.
|
|
175
|
+
if (options.resolvedLocale?.locale) {
|
|
176
|
+
// --lang expects a comma-separated list without q-values (e.g. "ko-KR,ko,en").
|
|
177
|
+
const langArg = options.resolvedLocale.languages
|
|
178
|
+
.split(',')
|
|
179
|
+
.map(l => l.split(';')[0].trim())
|
|
180
|
+
.filter(Boolean)
|
|
181
|
+
.join(',');
|
|
182
|
+
browserArgs.push(`--lang=${langArg || options.resolvedLocale.locale}`);
|
|
183
|
+
}
|
|
184
|
+
else {
|
|
185
|
+
// No locale resolved — preserve historical default so we don't change behavior
|
|
186
|
+
// for callers that never touched fingerprintOptions.
|
|
187
|
+
browserArgs.push('--lang=en-US,en');
|
|
188
|
+
}
|
|
121
189
|
if (anonymizedProxyUrl) {
|
|
122
190
|
browserArgs.push(`--proxy-server=${anonymizedProxyUrl}`);
|
|
123
191
|
}
|
|
@@ -136,10 +204,27 @@ export const launchBrowserWithNewProfile = async (executablePath, options = {})
|
|
|
136
204
|
}
|
|
137
205
|
log.debug('browserArgs', browserArgs);
|
|
138
206
|
log.debug(`Stealth mode: ${enableStealthMode}, Profile populated: ${shouldPopulateProfile}, cleanup profile: ${shouldCleanupUserDataDir}`);
|
|
207
|
+
// Chrome bundles its own ICU so LANG/LC_ALL don't drive Intl — but a handful of
|
|
208
|
+
// system APIs (file dialogs, native notifications, extension readers) consult them.
|
|
209
|
+
// Setting these matches what a real user's shell would do and costs nothing.
|
|
210
|
+
const spawnEnv = { ...process.env };
|
|
211
|
+
if (options.resolvedLocale?.posix) {
|
|
212
|
+
spawnEnv.LANG = options.resolvedLocale.posix;
|
|
213
|
+
spawnEnv.LC_ALL = options.resolvedLocale.posix;
|
|
214
|
+
}
|
|
139
215
|
const browserProcess = spawn(executablePath, browserArgs, {
|
|
140
216
|
stdio: 'ignore',
|
|
217
|
+
env: spawnEnv,
|
|
141
218
|
});
|
|
142
|
-
|
|
219
|
+
const proc = new BrowserProcess(browserProcess, userDataDir, shouldCleanupUserDataDir);
|
|
220
|
+
// Clean up temp fingerprint config file when the browser process exits
|
|
221
|
+
if (fingerprintConfigPath) {
|
|
222
|
+
const configPath = fingerprintConfigPath;
|
|
223
|
+
browserProcess.once('exit', () => {
|
|
224
|
+
fs.unlink(configPath).catch(() => { });
|
|
225
|
+
});
|
|
226
|
+
}
|
|
227
|
+
return proc;
|
|
143
228
|
}
|
|
144
229
|
catch (error) {
|
|
145
230
|
log.error(`Error launching the browser: ${error}`);
|
|
@@ -184,7 +269,31 @@ export const createTempUserDataDir = async () => {
|
|
|
184
269
|
return userDataDir;
|
|
185
270
|
};
|
|
186
271
|
export const launchChromeBrowserWithNewProfile = async (options = {}) => {
|
|
187
|
-
|
|
272
|
+
let executablePath = options.executablePath;
|
|
273
|
+
if (!executablePath) {
|
|
274
|
+
// Also check fingerprintOptions.useNativeStealth (set by hard.test.ts / crawler launchOptions)
|
|
275
|
+
const wantsNativeStealth = options.useNativeStealth || options.fingerprintOptions?.useNativeStealth;
|
|
276
|
+
if (wantsNativeStealth) {
|
|
277
|
+
// Prefer anti-detect binary when native stealth is requested
|
|
278
|
+
const antiDetectPath = getAntiDetectBrowserPath();
|
|
279
|
+
if (antiDetectPath) {
|
|
280
|
+
log.debug(`[AntiDetect] Using anti-detect browser: ${antiDetectPath}`);
|
|
281
|
+
executablePath = antiDetectPath;
|
|
282
|
+
}
|
|
283
|
+
else {
|
|
284
|
+
log.debug('[AntiDetect] useNativeStealth=true but no anti-detect binary found. Run npm run build:browser or set ANTI_DETECT_CHROME_PATH. Falling back to system Chrome with JS injection.');
|
|
285
|
+
executablePath = getChromeExecutablePath();
|
|
286
|
+
// Reset useNativeStealth so the JS fingerprint pipeline is NOT skipped on regular Chrome
|
|
287
|
+
options.useNativeStealth = false;
|
|
288
|
+
if (options.fingerprintOptions) {
|
|
289
|
+
options.fingerprintOptions.useNativeStealth = false;
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
else {
|
|
294
|
+
executablePath = getChromeExecutablePath();
|
|
295
|
+
}
|
|
296
|
+
}
|
|
188
297
|
return launchBrowserWithNewProfile(executablePath, options);
|
|
189
298
|
};
|
|
190
299
|
//# sourceMappingURL=browser.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser.js","sourceRoot":"","sources":["../../src/browser-process/browser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,MAAM,aAAa,CAAC;AAC7B,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AAEpC,OAAO,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"browser.js","sourceRoot":"","sources":["../../src/browser-process/browser.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Returns the path to the installed anti-detect browser binary, or null if not available.
|
|
3
|
+
* Checks (in order):
|
|
4
|
+
* 1. ANTI_DETECT_CHROME_PATH environment variable
|
|
5
|
+
* 2. .browser/ directory populated by postinstall.js
|
|
6
|
+
*/
|
|
7
|
+
export declare const getAntiDetectBrowserPath: () => string | null;
|
|
1
8
|
export declare const getChromeExecutablePath: () => string;
|
|
2
9
|
export declare const getChromeBinaryVersion: (executablePath: string) => string | null;
|
|
3
10
|
//# sourceMappingURL=get-chrome-executable.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-chrome-executable.d.ts","sourceRoot":"","sources":["../../src/browser-process/get-chrome-executable.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"get-chrome-executable.d.ts","sourceRoot":"","sources":["../../src/browser-process/get-chrome-executable.ts"],"names":[],"mappings":"AAmCA;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,QAAO,MAAM,GAAG,IAepD,CAAC;AAEF,eAAO,MAAM,uBAAuB,QAAO,MAsC1C,CAAC;AAEF,eAAO,MAAM,sBAAsB,mBAAoB,MAAM,KAAG,MAAM,GAAG,IAaxE,CAAC"}
|
|
@@ -2,6 +2,48 @@ import fs from 'fs';
|
|
|
2
2
|
import os from 'os';
|
|
3
3
|
import path from 'path';
|
|
4
4
|
import { spawnSync } from 'child_process';
|
|
5
|
+
import { fileURLToPath } from 'url';
|
|
6
|
+
const _dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
7
|
+
// Compiled output lives at dist/browser-process/ → 2 levels up = package root
|
|
8
|
+
const PKG_ROOT = path.resolve(_dirname, '../..');
|
|
9
|
+
/** Platform key */
|
|
10
|
+
const PLATFORM_KEY = `${process.platform}-${process.arch}`;
|
|
11
|
+
/** Primary: browser/dist/ — tracked in git and bundled in the npm package */
|
|
12
|
+
const BROWSER_DIST_DIR = path.join(PKG_ROOT, 'browser', 'dist');
|
|
13
|
+
/** Fallback: .browser/ — populated by postinstall download */
|
|
14
|
+
const BROWSER_INSTALL_DIR = path.join(PKG_ROOT, '.browser');
|
|
15
|
+
function buildPaths(base) {
|
|
16
|
+
return {
|
|
17
|
+
'linux-x64': path.join(base, 'linux-x64', 'chrome'),
|
|
18
|
+
'darwin-arm64': path.join(base, 'darwin-arm64', 'Chromium.app', 'Contents', 'MacOS', 'Chromium'),
|
|
19
|
+
'darwin-x64': path.join(base, 'darwin-x64', 'Chromium.app', 'Contents', 'MacOS', 'Chromium'),
|
|
20
|
+
'win32-x64': path.join(base, 'win32-x64', 'chrome.exe'),
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
const ANTI_DETECT_BINARY_PATHS = buildPaths(BROWSER_DIST_DIR);
|
|
24
|
+
const ANTI_DETECT_BINARY_PATHS_FALLBACK = buildPaths(BROWSER_INSTALL_DIR);
|
|
25
|
+
/**
|
|
26
|
+
* Returns the path to the installed anti-detect browser binary, or null if not available.
|
|
27
|
+
* Checks (in order):
|
|
28
|
+
* 1. ANTI_DETECT_CHROME_PATH environment variable
|
|
29
|
+
* 2. .browser/ directory populated by postinstall.js
|
|
30
|
+
*/
|
|
31
|
+
export const getAntiDetectBrowserPath = () => {
|
|
32
|
+
if (process.env.ANTI_DETECT_CHROME_PATH) {
|
|
33
|
+
return process.env.ANTI_DETECT_CHROME_PATH;
|
|
34
|
+
}
|
|
35
|
+
// Primary: browser/dist/ (git-tracked, bundled in package)
|
|
36
|
+
const distPath = ANTI_DETECT_BINARY_PATHS[PLATFORM_KEY];
|
|
37
|
+
if (distPath && fs.existsSync(distPath)) {
|
|
38
|
+
return distPath;
|
|
39
|
+
}
|
|
40
|
+
// Fallback: .browser/ (postinstall download)
|
|
41
|
+
const installPath = ANTI_DETECT_BINARY_PATHS_FALLBACK[PLATFORM_KEY];
|
|
42
|
+
if (installPath && fs.existsSync(installPath)) {
|
|
43
|
+
return installPath;
|
|
44
|
+
}
|
|
45
|
+
return null;
|
|
46
|
+
};
|
|
5
47
|
export const getChromeExecutablePath = () => {
|
|
6
48
|
const platform = os.platform();
|
|
7
49
|
if (platform === 'win32') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-chrome-executable.js","sourceRoot":"","sources":["../../src/browser-process/get-chrome-executable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"get-chrome-executable.js","sourceRoot":"","sources":["../../src/browser-process/get-chrome-executable.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
export { launchBrowserWithNewProfile, createTempUserDataDir, launchChromeBrowserWithNewProfile } from "./browser.js";
|
|
2
|
-
export { getChromeExecutablePath } from "./get-chrome-executable.js";
|
|
2
|
+
export { getChromeExecutablePath, getAntiDetectBrowserPath } from "./get-chrome-executable.js";
|
|
3
3
|
export { BrowserProcess } from "./process.js";
|
|
4
|
+
export { isAntiDetectBrowser, isAntiDetectBrowserSync, shouldSkipJsOverride, NATIVE_STEALTH_SKIPS } from "./anti-detect-browser.js";
|
|
5
|
+
export { generateFingerprintConfig, writeTempFingerprintConfig, cleanupTempFingerprintConfig } from "./anti-detect-config.js";
|
|
6
|
+
export type { FingerprintConfigJson } from "./anti-detect-config.js";
|
|
4
7
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/browser-process/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,qBAAqB,EAAE,iCAAiC,EAAE,MAAM,cAAc,CAAA;AACpH,OAAO,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/browser-process/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,qBAAqB,EAAE,iCAAiC,EAAE,MAAM,cAAc,CAAA;AACpH,OAAO,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAA;AAC9F,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAA;AACnI,OAAO,EAAE,yBAAyB,EAAE,0BAA0B,EAAE,4BAA4B,EAAE,MAAM,yBAAyB,CAAA;AAC7H,YAAY,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAA"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
export { launchBrowserWithNewProfile, createTempUserDataDir, launchChromeBrowserWithNewProfile } from "./browser.js";
|
|
2
|
-
export { getChromeExecutablePath } from "./get-chrome-executable.js";
|
|
2
|
+
export { getChromeExecutablePath, getAntiDetectBrowserPath } from "./get-chrome-executable.js";
|
|
3
3
|
export { BrowserProcess } from "./process.js";
|
|
4
|
+
export { isAntiDetectBrowser, isAntiDetectBrowserSync, shouldSkipJsOverride, NATIVE_STEALTH_SKIPS } from "./anti-detect-browser.js";
|
|
5
|
+
export { generateFingerprintConfig, writeTempFingerprintConfig, cleanupTempFingerprintConfig } from "./anti-detect-config.js";
|
|
4
6
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/browser-process/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,qBAAqB,EAAE,iCAAiC,EAAE,MAAM,cAAc,CAAA;AACpH,OAAO,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/browser-process/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,qBAAqB,EAAE,iCAAiC,EAAE,MAAM,cAAc,CAAA;AACpH,OAAO,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAA;AAC9F,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAA;AACnI,OAAO,EAAE,yBAAyB,EAAE,0BAA0B,EAAE,4BAA4B,EAAE,MAAM,yBAAyB,CAAA"}
|
package/dist/crawler.d.ts
CHANGED
|
@@ -36,6 +36,15 @@ interface LaunchOptions {
|
|
|
36
36
|
windowHeight?: number;
|
|
37
37
|
ignoreHttpsErrors?: boolean;
|
|
38
38
|
executablePath?: string;
|
|
39
|
+
/**
|
|
40
|
+
* Launch the anti-detect Cromite binary (postinstall-downloaded into
|
|
41
|
+
* `.browser/<platform>/` by default, or set via ANTI_DETECT_CHROME_PATH).
|
|
42
|
+
* When true and the binary is resolvable, JS-based fingerprint injection
|
|
43
|
+
* is skipped because the C++ patches already cover those overrides. If
|
|
44
|
+
* the binary cannot be found, this flag is transparently downgraded and
|
|
45
|
+
* the standard Chrome + JS injection path is used instead.
|
|
46
|
+
*/
|
|
47
|
+
useNativeStealth?: boolean;
|
|
39
48
|
browserType?: string;
|
|
40
49
|
useIncognitoPages?: boolean;
|
|
41
50
|
userDataDir?: string;
|
|
@@ -69,6 +78,14 @@ interface LaunchOptions {
|
|
|
69
78
|
humanization?: HumanizationOptions;
|
|
70
79
|
/** Enable debug logging in browser console. Default: true for debugging */
|
|
71
80
|
debug?: boolean;
|
|
81
|
+
/** Use real Chrome device profiles instead of Apify fingerprint-generator. Default: false */
|
|
82
|
+
useNonApifyFingerprints?: boolean;
|
|
83
|
+
/**
|
|
84
|
+
* Mirror of `launchOptions.useNativeStealth`. Historical call sites
|
|
85
|
+
* place it under `fingerprintOptions`; the runtime checks both
|
|
86
|
+
* (`opts.useNativeStealth || opts.fingerprintOptions?.useNativeStealth`).
|
|
87
|
+
*/
|
|
88
|
+
useNativeStealth?: boolean;
|
|
72
89
|
};
|
|
73
90
|
}
|
|
74
91
|
export interface CDPPluginOptions {
|
package/dist/crawler.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"crawler.d.ts","sourceRoot":"","sources":["../src/crawler.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"crawler.d.ts","sourceRoot":"","sources":["../src/crawler.ts"],"names":[],"mappings":"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"}
|
package/dist/crawler.js
CHANGED
|
@@ -31,9 +31,12 @@ export default class Crawler extends BrowserCrawler {
|
|
|
31
31
|
launchContext.launchOptions ?? (launchContext.launchOptions = {});
|
|
32
32
|
launchContext.launchOptions.fingerprintGeneratorOptions = fingerprintGeneratorOptions;
|
|
33
33
|
}
|
|
34
|
-
//
|
|
34
|
+
// Pass only launchOptions (not the whole launchContext) so CDPBrowserPlugin stores
|
|
35
|
+
// executablePath, useNativeStealth, etc. at the right level.
|
|
36
|
+
// The other LaunchContext fields (proxyUrl, fingerprint, useIncognitoPages) are
|
|
37
|
+
// injected by Crawlee's BrowserPool at runtime and must NOT be pre-baked here.
|
|
35
38
|
browserPoolOptions.browserPlugins = [
|
|
36
|
-
new CDPBrowserPlugin(new CdpLauncher(), launchContext),
|
|
39
|
+
new CDPBrowserPlugin(new CdpLauncher(), launchContext.launchOptions),
|
|
37
40
|
];
|
|
38
41
|
// if (launchContext.launchOptions?.useExperimentalFingerprints) {
|
|
39
42
|
// browserPoolOptions.useFingerprints = false;
|
package/dist/crawler.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"crawler.js","sourceRoot":"","sources":["../src/crawler.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAGhE,OAAO,gBAAgB,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAqB,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"crawler.js","sourceRoot":"","sources":["../src/crawler.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAGhE,OAAO,gBAAgB,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAqB,MAAM,oBAAoB,CAAC;AAoHpE,iDAAiD;AACjD,MAAM,CAAC,OAAO,OAAO,OAAQ,SAAQ,cAIpC;IACG;IACI,6BAA6B;IACZ,iBAAoC,EAAE,EACrC,SAAS,aAAa,CAAC,eAAe,EAAE;QAE1D,MAAM,EACF,aAAa,GAAG,EAAsB,EACtC,QAAQ,GAAG,KAAK,EAChB,kBAAkB,EAAE,WAAW,GAAG,EAAE,EACpC,GAAG,qBAAqB,EAC3B,GAAG,cAAc,CAAC;QAEnB,MAAM,kBAAkB,GAAG;YACvB,GAAG,WAAW;YACd,wDAAwD;YACxD,sBAAsB,EAAE,WAAW,CAAC,sBAAsB,IAAI,CAAC;YAC/D,oBAAoB,EAAE,WAAW,CAAC,oBAAoB,IAAI,GAAG;SAChE,CAAC;QAEF,IAAI,aAAa,CAAC,QAAQ,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,4GAA4G,CAAC,CAAC;QAClI,CAAC;QAED,yDAAyD;QACzD,IAAI,kBAAkB,CAAC,cAAc,EAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CAAC,sFAAsF,CAAC,CAAC;QAC5G,CAAC;QAED,IAAI,QAAQ,IAAI,IAAI,EAAE,CAAC;YACnB,aAAa,CAAC,aAAa,KAA3B,aAAa,CAAC,aAAa,GAAK,EAAE,EAAC;YACnC,aAAa,CAAC,aAAa,CAAC,QAAQ,GAAG,QAAmB,CAAC;QAC/D,CAAC;QAED,4EAA4E;QAC5E,kGAAkG;QAClG,MAAM,2BAA2B,GAAI,WAAmB,EAAE,kBAAkB,EAAE,2BAA2B,CAAC;QAC1G,IAAI,2BAA2B,EAAE,CAAC;YAC9B,aAAa,CAAC,aAAa,KAA3B,aAAa,CAAC,aAAa,GAAK,EAAE,EAAC;YAClC,aAAa,CAAC,aAAqB,CAAC,2BAA2B,GAAG,2BAA2B,CAAC;QACnG,CAAC;QAED,mFAAmF;QACnF,6DAA6D;QAC7D,gFAAgF;QAChF,+EAA+E;QAC/E,kBAAkB,CAAC,cAAc,GAAG;YAChC,IAAI,gBAAgB,CAAC,IAAI,WAAW,EAAE,EAAE,aAAa,CAAC,aAAoB,CAAC;SAC9E,CAAC;QAEF,kEAAkE;QAClE,kDAAkD;QAClD,IAAI;QAEJ,8DAA8D;QAC9D,SAAS;QACT,KAAK,CAAC,EAAE,GAAG,qBAAqB,EAAE,aAAa,EAAE,kBAAkB,EAAE,EAAE,MAAM,CAAC,CAAC;QArD/E;;;;mBAAiB,cAAc;WAAwB;QACvD;;;;mBAAkB,MAAM;WAAkC;IAqD9D,CAAC;IAED,wEAAwE;IACrD,KAAK,CAAC,kBAAkB,CAAC,eAAmC,EAAE,WAAwB;QACrG,MAAM,EAAE,IAAI,EAAE,GAAG,eAAe,CAAC;QAEjC,OAAO,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC,yBAAyB;IACzF,CAAC;CACJ;AAMD,MAAM,UAAU,eAAe,CAE7B,MAA0C;IACxC,OAAO,MAAM,CAAC,MAAM,CAAU,MAAM,CAAC,CAAC;AAC1C,CAAC"}
|
|
@@ -62,6 +62,7 @@
|
|
|
62
62
|
*/
|
|
63
63
|
import type { BrowserFingerprintWithHeaders } from 'fingerprint-generator';
|
|
64
64
|
import type CdpPage from "../page.js";
|
|
65
|
+
import type { ResolvedLocale } from './locale-resolver.js';
|
|
65
66
|
interface Viewport {
|
|
66
67
|
width: number;
|
|
67
68
|
height: number;
|
|
@@ -121,6 +122,46 @@ interface AttachOptions {
|
|
|
121
122
|
* Enable specific options to simulate human-like interactions.
|
|
122
123
|
*/
|
|
123
124
|
humanization?: HumanizationOptions;
|
|
125
|
+
/**
|
|
126
|
+
* When true, fingerprint was generated by the non-Apify real-device generator.
|
|
127
|
+
* Currently informational only — the injector behaves identically since the output
|
|
128
|
+
* matches the BrowserFingerprintWithHeaders shape.
|
|
129
|
+
*/
|
|
130
|
+
useNonApifyFingerprints?: boolean;
|
|
131
|
+
/**
|
|
132
|
+
* Pre-resolved locale triple. When provided, drives CDP Emulation.setLocaleOverride,
|
|
133
|
+
* Emulation.setTimezoneOverride, Accept-Language header, and the locale-spoofing
|
|
134
|
+
* script's baked-in values. Supersedes any legacy `timezone`/`detectTimezone` logic:
|
|
135
|
+
* if resolvedLocale.timezone is set, we skip the ipinfo.io round-trip.
|
|
136
|
+
*/
|
|
137
|
+
resolvedLocale?: ResolvedLocale;
|
|
138
|
+
/**
|
|
139
|
+
* Completely disable all JS fingerprint overrides when the C++ anti-detect browser
|
|
140
|
+
* is in use. Set this to true when launching with the custom Cromite-based anti-detect
|
|
141
|
+
* browser (useNativeStealth in LaunchBrowserOptions).
|
|
142
|
+
*
|
|
143
|
+
* When true, the ENTIRE JS override pipeline is skipped — no fingerprint scripts are
|
|
144
|
+
* injected via addScriptToEvaluateOnNewDocument. The C++ patches handle everything:
|
|
145
|
+
* - canvas noise (patch 0009 + cromite-override 0002)
|
|
146
|
+
* - audio fingerprinting (patch 0010)
|
|
147
|
+
* - getBoundingClientRect noise (patch 0011)
|
|
148
|
+
* - WebGL vendor/renderer (patch 0004)
|
|
149
|
+
* - WebGPU adapter info (patch 0012)
|
|
150
|
+
* - screen dimensions (patch 0006)
|
|
151
|
+
* - navigator.platform (patch 0002)
|
|
152
|
+
* - UA-CH structured data + HTTP headers (patch 0003)
|
|
153
|
+
* - navigator.webdriver = false (patch 0001)
|
|
154
|
+
* - CDP automation artifacts (patch 0005)
|
|
155
|
+
* - Runtime.enable console side effects (patch 0015)
|
|
156
|
+
* - automation sourceURL in Error stacks (patch 0015)
|
|
157
|
+
*
|
|
158
|
+
* Exception: humanization scripts (mouse/keyboard/scroll movement) are behavioral
|
|
159
|
+
* rather than fingerprinting — they are still injected if explicitly enabled via
|
|
160
|
+
* the `humanization` option.
|
|
161
|
+
*
|
|
162
|
+
* Default: false
|
|
163
|
+
*/
|
|
164
|
+
useNativeStealth?: boolean;
|
|
124
165
|
}
|
|
125
166
|
export declare class CdpFingerprintInjector {
|
|
126
167
|
private page;
|
|
@@ -151,6 +192,13 @@ export declare class CdpFingerprintInjector {
|
|
|
151
192
|
private setUserAgentWithMetadata;
|
|
152
193
|
private getTimezoneFromIp;
|
|
153
194
|
private setTimezoneOverride;
|
|
195
|
+
/**
|
|
196
|
+
* Override ICU's default locale for the page via CDP. This makes Intl.DateTimeFormat,
|
|
197
|
+
* Intl.NumberFormat, and Date.toLocaleString default to the supplied locale regardless
|
|
198
|
+
* of the browser binary's --lang setting — our reliable knob for the stock-Chrome path
|
|
199
|
+
* where we don't control the startup args.
|
|
200
|
+
*/
|
|
201
|
+
private setLocaleOverride;
|
|
154
202
|
/**
|
|
155
203
|
* Create a debug script that logs fingerprint override status to the console
|
|
156
204
|
*/
|
|
@@ -161,6 +209,12 @@ export declare class CdpFingerprintInjector {
|
|
|
161
209
|
private extractFingerprintData;
|
|
162
210
|
private getActualChromeVersion;
|
|
163
211
|
private alignUserAgentWithBrowserVersion;
|
|
212
|
+
/**
|
|
213
|
+
* Align UA-CH brand versions with the actual running Chrome binary version.
|
|
214
|
+
* Updates "Chromium" and "Google Chrome" brand major/full versions while
|
|
215
|
+
* preserving the "Not_A Brand" GREASE token from the profile as-is.
|
|
216
|
+
*/
|
|
217
|
+
private alignUAClientHintsVersion;
|
|
164
218
|
attachToPage(browserFingerprintWithHeaders: BrowserFingerprintWithHeaders, options?: AttachOptions): Promise<void>;
|
|
165
219
|
}
|
|
166
220
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fingerprint-injector.d.ts","sourceRoot":"","sources":["../../src/fingerprinting/fingerprint-injector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6DG;AAGH,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,uBAAuB,CAAC;AAG3E,OAAO,KAAK,OAAO,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"fingerprint-injector.d.ts","sourceRoot":"","sources":["../../src/fingerprinting/fingerprint-injector.ts"],"names":[],"mappings":"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"}
|