brave-real-playwright-core 1.57.0-patch.1 → 1.57.0-patch.11

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 CHANGED
@@ -1,4 +1,4 @@
1
- # 🦁 brave-real-playwright-core v1.57.0-patch.1
1
+ # 🦁 brave-real-playwright-core v1.57.0-patch.11
2
2
 
3
3
  **Based on Playwright Core v1.57.0**
4
4
 
@@ -48,7 +48,7 @@ await page.goto('https://bot-detector.rebrowser.net/');
48
48
 
49
49
  - **playwright-core**: v1.57.0
50
50
  - **rebrowser-patches**: Latest stealth optimizations
51
- - **Brave optimization**: v1.57.0-patch.1
51
+ - **Brave optimization**: v1.57.0-patch.11
52
52
 
53
53
  ## 🔗 Links
54
54
 
@@ -5,7 +5,7 @@
5
5
  timingRange: '1-5ms',
6
6
  stealthLevel: 'professional',
7
7
  engine: 'playwright',
8
- braveVersion: '1.57.0-patch.1',
8
+ braveVersion: '1.57.0-patch.11',
9
9
  features: {
10
10
  performanceOptimization: true,
11
11
  navigatorSpoofing: true,
@@ -71,7 +71,7 @@
71
71
  return Promise.resolve({
72
72
  ok: true,
73
73
  json: () => Promise.resolve([{
74
- version: '129.0.0.0',
74
+ version: '144.0.7559.59',
75
75
  time: new Date().toISOString()
76
76
  }])
77
77
  });
@@ -107,16 +107,11 @@
107
107
  delete navigator.webdriver;
108
108
  }
109
109
 
110
- // Define webdriver as undefined and make it non-enumerable
111
- Object.defineProperty(navigator, 'webdriver', {
112
- get: () => undefined,
113
- set: () => {},
114
- configurable: false,
115
- enumerable: false
116
- });
110
+
111
+
117
112
 
118
113
  // Additional webdriver property variations
119
- const webdriverProps = ['webdriver', '__webdriver__', '_webdriver', 'webDriver'];
114
+ const webdriverProps = ['__webdriver__', '_webdriver', 'webDriver'];
120
115
  webdriverProps.forEach(prop => {
121
116
  if (prop in navigator) {
122
117
  delete navigator[prop];
@@ -485,29 +480,15 @@
485
480
 
486
481
  // 4. BULLETPROOF USER AGENT STEALTH
487
482
 
488
- // BULLETPROOF User Agent spoofing - BRAVE BROWSER DEFAULT
483
+ // BULLETPROOF User Agent spoofing - DYNAMIC VERSION: 144.0.7559.59
489
484
  (function() {
490
- // 🦁 AUTO-DETECT BROWSER TYPE FOR OPTIMIZED USER AGENT
491
- const isBraveOptimized = process.env.REBROWSER_STEALTH_BRAVE_OPTIMIZATIONS === '1' ||
492
- process.env.REBROWSER_AUTO_BROWSER_TYPE === 'brave';
493
- const isChromeOptimized = process.env.REBROWSER_STEALTH_CHROME_OPTIMIZATIONS === '1' ||
494
- process.env.REBROWSER_AUTO_BROWSER_TYPE === 'chrome';
485
+ // 🦁 DYNAMIC CHROME VERSION - Auto-synced with latest stable
486
+ const INJECTED_CHROME_VERSION = '144.0.7559.59';
487
+ const INJECTED_MAJOR_VERSION = '144';
495
488
 
496
- // Define optimized user agents based on detected browser
497
- let bulletproofUserAgent;
498
- if (isBraveOptimized) {
499
- // Brave-optimized user agent (maximum stealth)
500
- bulletproofUserAgent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36';
501
- console.log('[🦁 BRAVE-STEALTH] Brave browser optimizations active - maximum stealth mode');
502
- } else if (isChromeOptimized) {
503
- // Chrome-optimized user agent
504
- bulletproofUserAgent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36';
505
- console.log('[🔵 CHROME-STEALTH] Chrome browser optimizations active');
506
- } else {
507
- // Default fallback user agent
508
- bulletproofUserAgent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36';
509
- console.log('[⚙️ DEFAULT-STEALTH] Using default browser stealth mode');
510
- }
489
+ // Dynamic user agent with latest Chrome version
490
+ const bulletproofUserAgent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/144.0.7559.59 Safari/537.36';
491
+ console.log('[🎯 DYNAMIC-STEALTH] Using Chrome version: ' + INJECTED_CHROME_VERSION);
511
492
 
512
493
  // COMPLETELY override navigator.userAgent
513
494
  Object.defineProperty(navigator, 'userAgent', {
@@ -518,43 +499,11 @@
518
499
 
519
500
  // COMPLETELY override appVersion
520
501
  Object.defineProperty(navigator, 'appVersion', {
521
- get: () => '5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36',
502
+ get: () => '5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/144.0.7559.59 Safari/537.36',
522
503
  configurable: false,
523
504
  enumerable: true
524
505
  });
525
506
 
526
- // BULLETPROOF webdriver property elimination
527
- if ('webdriver' in navigator) {
528
- delete navigator.webdriver;
529
- }
530
-
531
- // PREVENT webdriver property from being redefined
532
- Object.defineProperty(navigator, 'webdriver', {
533
- get: () => undefined,
534
- set: () => {},
535
- configurable: false,
536
- enumerable: false
537
- });
538
-
539
- // OVERRIDE Object.getOwnPropertyDescriptor to hide our modifications
540
- const originalGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
541
- Object.getOwnPropertyDescriptor = function(obj, prop) {
542
- if (obj === navigator && prop === 'webdriver') {
543
- return undefined;
544
- }
545
- return originalGetOwnPropertyDescriptor.call(this, obj, prop);
546
- };
547
-
548
- // OVERRIDE Object.getOwnPropertyNames to hide webdriver
549
- const originalGetOwnPropertyNames = Object.getOwnPropertyNames;
550
- Object.getOwnPropertyNames = function(obj) {
551
- const props = originalGetOwnPropertyNames.call(this, obj);
552
- if (obj === navigator) {
553
- return props.filter(prop => prop !== 'webdriver');
554
- }
555
- return props;
556
- };
557
-
558
507
  // BULLETPROOF platform detection
559
508
  Object.defineProperty(navigator, 'platform', {
560
509
  get: () => 'Win32',
@@ -587,13 +536,31 @@
587
536
  });
588
537
  })();
589
538
 
590
- // Enhanced userAgentData with getHighEntropyValues method
591
- Object.defineProperty(navigator, 'userAgentData', {
592
- get: () => ({
539
+ // Enhanced userAgentData with getHighEntropyValues method - DYNAMIC VERSION
540
+ (function() {
541
+ const INJECTED_CHROME_VERSION = '144.0.7559.59';
542
+ const INJECTED_MAJOR_VERSION = '144';
543
+
544
+ // Aggressively delete existing userAgentData
545
+ try {
546
+ // Try to delete from prototype
547
+ if (Navigator.prototype.userAgentData) {
548
+ delete Navigator.prototype.userAgentData;
549
+ }
550
+ } catch (e) { console.log('[stealth] Failed to delete proto userAgentData:', e.message); }
551
+
552
+ try {
553
+ // Try to delete from instance
554
+ if (navigator.hasOwnProperty('userAgentData') || 'userAgentData' in navigator) {
555
+ delete navigator.userAgentData;
556
+ }
557
+ } catch (e) { console.log('[stealth] Failed to delete instance userAgentData:', e.message); }
558
+
559
+ const userAgentDataInstance = {
593
560
  brands: [
594
- { brand: 'Not_A Brand', version: '8' },
595
- { brand: 'Chromium', version: '140' },
596
- { brand: 'Google Chrome', version: '140' }
561
+ { brand: 'Not_A Brand', version: '24' },
562
+ { brand: 'Chromium', version: INJECTED_MAJOR_VERSION },
563
+ { brand: 'Google Chrome', version: INJECTED_MAJOR_VERSION }
597
564
  ],
598
565
  mobile: false,
599
566
  platform: 'Windows',
@@ -601,23 +568,76 @@
601
568
  return Promise.resolve({
602
569
  architecture: 'x86',
603
570
  bitness: '64',
604
- brands: this.brands,
571
+ brands: userAgentDataInstance.brands,
605
572
  fullVersionList: [
606
- { brand: 'Not_A Brand', version: '8.0.0.0' },
607
- { brand: 'Chromium', version: '140.0.7339.81' },
608
- { brand: 'Google Chrome', version: '140.0.7339.81' }
573
+ { brand: 'Not_A Brand', version: INJECTED_CHROME_VERSION },
574
+ { brand: 'Chromium', version: INJECTED_CHROME_VERSION },
575
+ { brand: 'Google Chrome', version: INJECTED_CHROME_VERSION }
609
576
  ],
610
577
  mobile: false,
611
578
  model: '',
612
579
  platform: 'Windows',
613
580
  platformVersion: '10.0.0',
614
- uaFullVersion: '140.0.7339.81'
581
+ uaFullVersion: INJECTED_CHROME_VERSION
615
582
  });
583
+ },
584
+ toJSON: function() {
585
+ return {
586
+ brands: this.brands,
587
+ mobile: this.mobile,
588
+ platform: this.platform
589
+ };
616
590
  }
617
- }),
618
- configurable: true,
619
- enumerable: false
620
- });
591
+ };
592
+
593
+ try {
594
+ // Define on INSTANCE directly (more reliable)
595
+ Object.defineProperty(navigator, 'userAgentData', {
596
+ get: () => userAgentDataInstance,
597
+ configurable: false,
598
+ enumerable: true
599
+ });
600
+ console.log('[stealth] userAgentData injected successfully on navigator instance');
601
+ } catch (e) {
602
+ console.error('[stealth] FAILED to inject userAgentData on instance:', e.message);
603
+
604
+ // Fallback to prototype
605
+ try {
606
+ Object.defineProperty(Navigator.prototype, 'userAgentData', {
607
+ get: () => userAgentDataInstance,
608
+ configurable: false,
609
+ enumerable: true
610
+ });
611
+ console.log('[stealth] userAgentData injected successfully on Navigator.prototype');
612
+ } catch (e2) {
613
+ console.error('[stealth] FAILED to inject userAgentData on prototype:', e2.message);
614
+ }
615
+ }
616
+
617
+ // AGGRESSIVE: Proxy navigator if possible
618
+ try {
619
+ // Only if direct injection failed or to be double sure
620
+ if (!navigator.userAgentData) {
621
+ const originalNavigator = navigator;
622
+ const proxyNavigator = new Proxy(originalNavigator, {
623
+ get(target, prop) {
624
+ if (prop === 'userAgentData') return userAgentDataInstance;
625
+ if (prop === 'userAgent') return bulletproofUserAgent;
626
+ return Reflect.get(target, prop);
627
+ }
628
+ });
629
+
630
+ try {
631
+ Object.defineProperty(window, 'navigator', {
632
+ get: () => proxyNavigator,
633
+ configurable: true,
634
+ enumerable: true
635
+ });
636
+ console.log('[stealth] Window.navigator proxied successfully');
637
+ } catch(e) {}
638
+ }
639
+ } catch(e) {}
640
+ })();
621
641
 
622
642
 
623
643
  console.log('[REBROWSER-STEALTH] ✅ Ultra-fast professional stealth mode activated');
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "brave-real-playwright-core",
3
- "version": "1.57.0-patch.1",
3
+ "version": "1.57.0-patch.11",
4
4
  "description": "Brave-optimized Playwright Core (v1.57.0) with comprehensive stealth patches and error stack sanitization",
5
5
  "keywords": [
6
6
  "playwright",
@@ -48,16 +48,16 @@
48
48
  ],
49
49
  "brave": {
50
50
  "optimized": true,
51
- "version": "1.57.0-patch.1",
51
+ "version": "1.57.0-patch.11",
52
52
  "basedOn": {
53
53
  "playwright-core": "1.57.0",
54
- "patches-version": "1.57.0-patch.1",
55
- "release-info": "Brave Playwright v1.57.0-patch.1 based on Playwright Core v1.57.0"
54
+ "patches-version": "1.57.0-patch.11",
55
+ "release-info": "Brave Playwright v1.57.0-patch.11 based on Playwright Core v1.57.0"
56
56
  },
57
57
  "versionInfo": {
58
- "braveVersion": "1.57.0-patch.1",
58
+ "braveVersion": "1.57.0-patch.11",
59
59
  "playwrightVersion": "1.57.0",
60
- "fullName": "Brave Playwright Core v1.57.0-patch.1 (Playwright 1.57.0)"
60
+ "fullName": "Brave Playwright Core v1.57.0-patch.11 (Playwright 1.57.0)"
61
61
  },
62
62
  "features": [
63
63
  "error-stack-sanitization",
@@ -35,7 +35,7 @@
35
35
  return Promise.resolve({
36
36
  ok: true,
37
37
  json: () => Promise.resolve([{
38
- version: '129.0.0.0',
38
+ version: '144.0.7559.59',
39
39
  time: new Date().toISOString()
40
40
  }])
41
41
  });
@@ -71,16 +71,11 @@
71
71
  delete navigator.webdriver;
72
72
  }
73
73
 
74
- // Define webdriver as undefined and make it non-enumerable
75
- Object.defineProperty(navigator, 'webdriver', {
76
- get: () => undefined,
77
- set: () => {},
78
- configurable: false,
79
- enumerable: false
80
- });
74
+
75
+
81
76
 
82
77
  // Additional webdriver property variations
83
- const webdriverProps = ['webdriver', '__webdriver__', '_webdriver', 'webDriver'];
78
+ const webdriverProps = ['__webdriver__', '_webdriver', 'webDriver'];
84
79
  webdriverProps.forEach(prop => {
85
80
  if (prop in navigator) {
86
81
  delete navigator[prop];
@@ -449,29 +444,15 @@
449
444
 
450
445
  // 4. BULLETPROOF USER AGENT STEALTH
451
446
 
452
- // BULLETPROOF User Agent spoofing - BRAVE BROWSER DEFAULT
447
+ // BULLETPROOF User Agent spoofing - DYNAMIC VERSION: 144.0.7559.59
453
448
  (function() {
454
- // 🦁 AUTO-DETECT BROWSER TYPE FOR OPTIMIZED USER AGENT
455
- const isBraveOptimized = process.env.REBROWSER_STEALTH_BRAVE_OPTIMIZATIONS === '1' ||
456
- process.env.REBROWSER_AUTO_BROWSER_TYPE === 'brave';
457
- const isChromeOptimized = process.env.REBROWSER_STEALTH_CHROME_OPTIMIZATIONS === '1' ||
458
- process.env.REBROWSER_AUTO_BROWSER_TYPE === 'chrome';
449
+ // 🦁 DYNAMIC CHROME VERSION - Auto-synced with latest stable
450
+ const INJECTED_CHROME_VERSION = '144.0.7559.59';
451
+ const INJECTED_MAJOR_VERSION = '144';
459
452
 
460
- // Define optimized user agents based on detected browser
461
- let bulletproofUserAgent;
462
- if (isBraveOptimized) {
463
- // Brave-optimized user agent (maximum stealth)
464
- bulletproofUserAgent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36';
465
- console.log('[🦁 BRAVE-STEALTH] Brave browser optimizations active - maximum stealth mode');
466
- } else if (isChromeOptimized) {
467
- // Chrome-optimized user agent
468
- bulletproofUserAgent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36';
469
- console.log('[🔵 CHROME-STEALTH] Chrome browser optimizations active');
470
- } else {
471
- // Default fallback user agent
472
- bulletproofUserAgent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36';
473
- console.log('[⚙️ DEFAULT-STEALTH] Using default browser stealth mode');
474
- }
453
+ // Dynamic user agent with latest Chrome version
454
+ const bulletproofUserAgent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/144.0.7559.59 Safari/537.36';
455
+ console.log('[🎯 DYNAMIC-STEALTH] Using Chrome version: ' + INJECTED_CHROME_VERSION);
475
456
 
476
457
  // COMPLETELY override navigator.userAgent
477
458
  Object.defineProperty(navigator, 'userAgent', {
@@ -482,43 +463,11 @@
482
463
 
483
464
  // COMPLETELY override appVersion
484
465
  Object.defineProperty(navigator, 'appVersion', {
485
- get: () => '5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36',
466
+ get: () => '5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/144.0.7559.59 Safari/537.36',
486
467
  configurable: false,
487
468
  enumerable: true
488
469
  });
489
470
 
490
- // BULLETPROOF webdriver property elimination
491
- if ('webdriver' in navigator) {
492
- delete navigator.webdriver;
493
- }
494
-
495
- // PREVENT webdriver property from being redefined
496
- Object.defineProperty(navigator, 'webdriver', {
497
- get: () => undefined,
498
- set: () => {},
499
- configurable: false,
500
- enumerable: false
501
- });
502
-
503
- // OVERRIDE Object.getOwnPropertyDescriptor to hide our modifications
504
- const originalGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
505
- Object.getOwnPropertyDescriptor = function(obj, prop) {
506
- if (obj === navigator && prop === 'webdriver') {
507
- return undefined;
508
- }
509
- return originalGetOwnPropertyDescriptor.call(this, obj, prop);
510
- };
511
-
512
- // OVERRIDE Object.getOwnPropertyNames to hide webdriver
513
- const originalGetOwnPropertyNames = Object.getOwnPropertyNames;
514
- Object.getOwnPropertyNames = function(obj) {
515
- const props = originalGetOwnPropertyNames.call(this, obj);
516
- if (obj === navigator) {
517
- return props.filter(prop => prop !== 'webdriver');
518
- }
519
- return props;
520
- };
521
-
522
471
  // BULLETPROOF platform detection
523
472
  Object.defineProperty(navigator, 'platform', {
524
473
  get: () => 'Win32',
@@ -551,13 +500,31 @@
551
500
  });
552
501
  })();
553
502
 
554
- // Enhanced userAgentData with getHighEntropyValues method
555
- Object.defineProperty(navigator, 'userAgentData', {
556
- get: () => ({
503
+ // Enhanced userAgentData with getHighEntropyValues method - DYNAMIC VERSION
504
+ (function() {
505
+ const INJECTED_CHROME_VERSION = '144.0.7559.59';
506
+ const INJECTED_MAJOR_VERSION = '144';
507
+
508
+ // Aggressively delete existing userAgentData
509
+ try {
510
+ // Try to delete from prototype
511
+ if (Navigator.prototype.userAgentData) {
512
+ delete Navigator.prototype.userAgentData;
513
+ }
514
+ } catch (e) { console.log('[stealth] Failed to delete proto userAgentData:', e.message); }
515
+
516
+ try {
517
+ // Try to delete from instance
518
+ if (navigator.hasOwnProperty('userAgentData') || 'userAgentData' in navigator) {
519
+ delete navigator.userAgentData;
520
+ }
521
+ } catch (e) { console.log('[stealth] Failed to delete instance userAgentData:', e.message); }
522
+
523
+ const userAgentDataInstance = {
557
524
  brands: [
558
- { brand: 'Not_A Brand', version: '8' },
559
- { brand: 'Chromium', version: '140' },
560
- { brand: 'Google Chrome', version: '140' }
525
+ { brand: 'Not_A Brand', version: '24' },
526
+ { brand: 'Chromium', version: INJECTED_MAJOR_VERSION },
527
+ { brand: 'Google Chrome', version: INJECTED_MAJOR_VERSION }
561
528
  ],
562
529
  mobile: false,
563
530
  platform: 'Windows',
@@ -565,23 +532,76 @@
565
532
  return Promise.resolve({
566
533
  architecture: 'x86',
567
534
  bitness: '64',
568
- brands: this.brands,
535
+ brands: userAgentDataInstance.brands,
569
536
  fullVersionList: [
570
- { brand: 'Not_A Brand', version: '8.0.0.0' },
571
- { brand: 'Chromium', version: '140.0.7339.81' },
572
- { brand: 'Google Chrome', version: '140.0.7339.81' }
537
+ { brand: 'Not_A Brand', version: INJECTED_CHROME_VERSION },
538
+ { brand: 'Chromium', version: INJECTED_CHROME_VERSION },
539
+ { brand: 'Google Chrome', version: INJECTED_CHROME_VERSION }
573
540
  ],
574
541
  mobile: false,
575
542
  model: '',
576
543
  platform: 'Windows',
577
544
  platformVersion: '10.0.0',
578
- uaFullVersion: '140.0.7339.81'
545
+ uaFullVersion: INJECTED_CHROME_VERSION
579
546
  });
547
+ },
548
+ toJSON: function() {
549
+ return {
550
+ brands: this.brands,
551
+ mobile: this.mobile,
552
+ platform: this.platform
553
+ };
580
554
  }
581
- }),
582
- configurable: true,
583
- enumerable: false
584
- });
555
+ };
556
+
557
+ try {
558
+ // Define on INSTANCE directly (more reliable)
559
+ Object.defineProperty(navigator, 'userAgentData', {
560
+ get: () => userAgentDataInstance,
561
+ configurable: false,
562
+ enumerable: true
563
+ });
564
+ console.log('[stealth] userAgentData injected successfully on navigator instance');
565
+ } catch (e) {
566
+ console.error('[stealth] FAILED to inject userAgentData on instance:', e.message);
567
+
568
+ // Fallback to prototype
569
+ try {
570
+ Object.defineProperty(Navigator.prototype, 'userAgentData', {
571
+ get: () => userAgentDataInstance,
572
+ configurable: false,
573
+ enumerable: true
574
+ });
575
+ console.log('[stealth] userAgentData injected successfully on Navigator.prototype');
576
+ } catch (e2) {
577
+ console.error('[stealth] FAILED to inject userAgentData on prototype:', e2.message);
578
+ }
579
+ }
580
+
581
+ // AGGRESSIVE: Proxy navigator if possible
582
+ try {
583
+ // Only if direct injection failed or to be double sure
584
+ if (!navigator.userAgentData) {
585
+ const originalNavigator = navigator;
586
+ const proxyNavigator = new Proxy(originalNavigator, {
587
+ get(target, prop) {
588
+ if (prop === 'userAgentData') return userAgentDataInstance;
589
+ if (prop === 'userAgent') return bulletproofUserAgent;
590
+ return Reflect.get(target, prop);
591
+ }
592
+ });
593
+
594
+ try {
595
+ Object.defineProperty(window, 'navigator', {
596
+ get: () => proxyNavigator,
597
+ configurable: true,
598
+ enumerable: true
599
+ });
600
+ console.log('[stealth] Window.navigator proxied successfully');
601
+ } catch(e) {}
602
+ }
603
+ } catch(e) {}
604
+ })();
585
605
 
586
606
 
587
607
  console.log('[REBROWSER-STEALTH] ✅ Ultra-fast professional stealth mode activated');