brave-real-puppeteer-core 24.33.0-patch.1 → 24.34.0-patch.1

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 (69) hide show
  1. package/README.md +5 -5
  2. package/advanced-stealth.js +46 -59
  3. package/lib/cjs/puppeteer/api/Page.d.ts +2 -3
  4. package/lib/cjs/puppeteer/api/Page.d.ts.map +1 -1
  5. package/lib/cjs/puppeteer/api/Page.js.map +1 -1
  6. package/lib/cjs/puppeteer/bidi/HTTPRequest.d.ts.map +1 -1
  7. package/lib/cjs/puppeteer/bidi/HTTPRequest.js +9 -0
  8. package/lib/cjs/puppeteer/bidi/HTTPRequest.js.map +1 -1
  9. package/lib/cjs/puppeteer/bidi/HTTPResponse.d.ts +3 -0
  10. package/lib/cjs/puppeteer/bidi/HTTPResponse.d.ts.map +1 -1
  11. package/lib/cjs/puppeteer/bidi/HTTPResponse.js +9 -0
  12. package/lib/cjs/puppeteer/bidi/HTTPResponse.js.map +1 -1
  13. package/lib/cjs/puppeteer/bidi/core/Request.d.ts +3 -0
  14. package/lib/cjs/puppeteer/bidi/core/Request.d.ts.map +1 -1
  15. package/lib/cjs/puppeteer/bidi/core/Request.js +10 -0
  16. package/lib/cjs/puppeteer/bidi/core/Request.js.map +1 -1
  17. package/lib/cjs/puppeteer/cdp/Browser.d.ts.map +1 -1
  18. package/lib/cjs/puppeteer/cdp/Browser.js +8 -4
  19. package/lib/cjs/puppeteer/cdp/Browser.js.map +1 -1
  20. package/lib/cjs/puppeteer/generated/injected.d.ts +1 -1
  21. package/lib/cjs/puppeteer/generated/injected.d.ts.map +1 -1
  22. package/lib/cjs/puppeteer/generated/injected.js +1 -1
  23. package/lib/cjs/puppeteer/generated/injected.js.map +1 -1
  24. package/lib/cjs/puppeteer/injected/injected.d.ts +1 -1
  25. package/lib/cjs/puppeteer/revisions.d.ts +3 -3
  26. package/lib/cjs/puppeteer/revisions.js +3 -3
  27. package/lib/cjs/puppeteer/revisions.js.map +1 -1
  28. package/lib/cjs/puppeteer/util/Mutex.d.ts +2 -2
  29. package/lib/cjs/puppeteer/util/version.d.ts +1 -1
  30. package/lib/cjs/puppeteer/util/version.js +1 -1
  31. package/lib/es5-iife/puppeteer-core-browser.d.ts +10 -1
  32. package/lib/es5-iife/puppeteer-core-browser.js +13 -7
  33. package/lib/esm/puppeteer/api/Page.d.ts +2 -3
  34. package/lib/esm/puppeteer/api/Page.d.ts.map +1 -1
  35. package/lib/esm/puppeteer/api/Page.js.map +1 -1
  36. package/lib/esm/puppeteer/bidi/HTTPRequest.d.ts.map +1 -1
  37. package/lib/esm/puppeteer/bidi/HTTPRequest.js +9 -0
  38. package/lib/esm/puppeteer/bidi/HTTPRequest.js.map +1 -1
  39. package/lib/esm/puppeteer/bidi/HTTPResponse.d.ts +3 -0
  40. package/lib/esm/puppeteer/bidi/HTTPResponse.d.ts.map +1 -1
  41. package/lib/esm/puppeteer/bidi/HTTPResponse.js +9 -0
  42. package/lib/esm/puppeteer/bidi/HTTPResponse.js.map +1 -1
  43. package/lib/esm/puppeteer/bidi/core/Request.d.ts +3 -0
  44. package/lib/esm/puppeteer/bidi/core/Request.d.ts.map +1 -1
  45. package/lib/esm/puppeteer/bidi/core/Request.js +10 -0
  46. package/lib/esm/puppeteer/bidi/core/Request.js.map +1 -1
  47. package/lib/esm/puppeteer/cdp/Browser.d.ts.map +1 -1
  48. package/lib/esm/puppeteer/cdp/Browser.js +8 -4
  49. package/lib/esm/puppeteer/cdp/Browser.js.map +1 -1
  50. package/lib/esm/puppeteer/generated/injected.d.ts +1 -1
  51. package/lib/esm/puppeteer/generated/injected.d.ts.map +1 -1
  52. package/lib/esm/puppeteer/generated/injected.js +1 -1
  53. package/lib/esm/puppeteer/generated/injected.js.map +1 -1
  54. package/lib/esm/puppeteer/revisions.d.ts +3 -3
  55. package/lib/esm/puppeteer/revisions.js +3 -3
  56. package/lib/esm/puppeteer/revisions.js.map +1 -1
  57. package/lib/esm/puppeteer/util/version.d.ts +1 -1
  58. package/lib/esm/puppeteer/util/version.js +1 -1
  59. package/lib/types.d.ts +10 -1
  60. package/package.json +13 -13
  61. package/src/api/Page.ts +2 -3
  62. package/src/bidi/HTTPRequest.ts +13 -0
  63. package/src/bidi/HTTPResponse.ts +10 -0
  64. package/src/bidi/core/Request.ts +15 -0
  65. package/src/cdp/Browser.ts +9 -4
  66. package/src/generated/injected.ts +1 -1
  67. package/src/revisions.ts +3 -3
  68. package/src/util/version.ts +1 -1
  69. package/stealth-injection.js +45 -58
@@ -19,11 +19,21 @@ import type {BidiHTTPRequest} from './HTTPRequest.js';
19
19
  * @internal
20
20
  */
21
21
  export class BidiHTTPResponse extends HTTPResponse {
22
+ /**
23
+ * Returns a new BidiHTTPResponse or updates the existing one if it already exists.
24
+ */
22
25
  static from(
23
26
  data: Bidi.Network.ResponseData,
24
27
  request: BidiHTTPRequest,
25
28
  cdpSupported: boolean,
26
29
  ): BidiHTTPResponse {
30
+ const existingResponse = request.response();
31
+ if (existingResponse) {
32
+ // Update existing response data with up-to-date data.
33
+ existingResponse.#data = data;
34
+ return existingResponse;
35
+ }
36
+
27
37
  const response = new BidiHTTPResponse(data, request, cdpSupported);
28
38
  response.#initialize();
29
39
  return response;
@@ -24,6 +24,9 @@ export class Request extends EventEmitter<{
24
24
  authenticate: void;
25
25
  /** Emitted when the request succeeds. */
26
26
  success: Bidi.Network.ResponseData;
27
+ /** Analog of WebDriver BiDi event `network.responseStarted`. Emitted when a
28
+ * response is received. */
29
+ response: Bidi.Network.ResponseData;
27
30
  /** Emitted when the request fails. */
28
31
  error: string;
29
32
  }> {
@@ -119,6 +122,18 @@ export class Request extends EventEmitter<{
119
122
  this.emit('error', this.#error);
120
123
  this.dispose();
121
124
  });
125
+ sessionEmitter.on('network.responseStarted', event => {
126
+ if (
127
+ event.context !== this.#browsingContext.id ||
128
+ event.request.request !== this.id ||
129
+ this.#event.redirectCount !== event.redirectCount
130
+ ) {
131
+ return;
132
+ }
133
+ this.#response = event.response;
134
+ this.#event.request.timings = event.request.timings;
135
+ this.emit('response', this.#response);
136
+ });
122
137
  sessionEmitter.on('network.responseCompleted', event => {
123
138
  if (
124
139
  event.context !== this.#browsingContext.id ||
@@ -42,6 +42,13 @@ import {
42
42
  import {TargetManagerEvent} from './TargetManageEvents.js';
43
43
  import {TargetManager} from './TargetManager.js';
44
44
 
45
+ /**
46
+ * @internal
47
+ */
48
+ function isDevToolsPageTarget(url: string): boolean {
49
+ return url.startsWith('devtools://devtools/bundled/devtools_app.html');
50
+ }
51
+
45
52
  /**
46
53
  * @internal
47
54
  */
@@ -200,9 +207,7 @@ export class CdpBrowser extends BrowserBase {
200
207
  target.type() === 'webview' ||
201
208
  (this.#handleDevToolsAsPage &&
202
209
  target.type() === 'other' &&
203
- target
204
- .url()
205
- .startsWith('devtools://devtools/bundled/devtools_app.html'))
210
+ isDevToolsPageTarget(target.url()))
206
211
  );
207
212
  });
208
213
  }
@@ -277,7 +282,7 @@ export class CdpBrowser extends BrowserBase {
277
282
  this.#targetManager,
278
283
  createSession,
279
284
  );
280
- if (targetInfo.url?.startsWith('devtools://')) {
285
+ if (targetInfo.url && isDevToolsPageTarget(targetInfo.url)) {
281
286
  return new DevToolsTarget(
282
287
  targetInfo,
283
288
  session,
@@ -5,4 +5,4 @@
5
5
  *
6
6
  * @internal
7
7
  */
8
- export const source = "\"use strict\";var g=Object.defineProperty;var X=Object.getOwnPropertyDescriptor;var B=Object.getOwnPropertyNames;var Y=Object.prototype.hasOwnProperty;var l=(t,e)=>{for(var r in e)g(t,r,{get:e[r],enumerable:!0})},G=(t,e,r,o)=>{if(e&&typeof e==\"object\"||typeof e==\"function\")for(let s of B(e))!Y.call(t,s)&&s!==r&&g(t,s,{get:()=>e[s],enumerable:!(o=X(e,s))||o.enumerable});return t};var J=t=>G(g({},\"__esModule\",{value:!0}),t);var pe={};l(pe,{default:()=>he});module.exports=J(pe);var N=class extends Error{constructor(e,r){super(e,r),this.name=this.constructor.name}get[Symbol.toStringTag](){return this.constructor.name}},p=class extends N{};var c=class t{static create(e){return new t(e)}static async race(e){let r=new Set;try{let o=e.map(s=>s instanceof t?(s.#s&&r.add(s),s.valueOrThrow()):s);return await Promise.race(o)}finally{for(let o of r)o.reject(new Error(\"Timeout cleared\"))}}#e=!1;#r=!1;#o;#t;#a=new Promise(e=>{this.#t=e});#s;#i;constructor(e){e&&e.timeout>0&&(this.#i=new p(e.message),this.#s=setTimeout(()=>{this.reject(this.#i)},e.timeout))}#l(e){clearTimeout(this.#s),this.#o=e,this.#t()}resolve(e){this.#r||this.#e||(this.#e=!0,this.#l(e))}reject(e){this.#r||this.#e||(this.#r=!0,this.#l(e))}resolved(){return this.#e}finished(){return this.#e||this.#r}value(){return this.#o}#n;valueOrThrow(){return this.#n||(this.#n=(async()=>{if(await this.#a,this.#r)throw this.#o;return this.#o})()),this.#n}};var L=new Map,W=t=>{let e=L.get(t);return e||(e=new Function(`return ${t}`)(),L.set(t,e),e)};var b={};l(b,{ariaQuerySelector:()=>z,ariaQuerySelectorAll:()=>x});var z=(t,e)=>globalThis.__ariaQuerySelector(t,e),x=async function*(t,e){yield*await globalThis.__ariaQuerySelectorAll(t,e)};var E={};l(E,{cssQuerySelector:()=>K,cssQuerySelectorAll:()=>Z});var K=(t,e)=>t.querySelector(e),Z=function(t,e){return t.querySelectorAll(e)};var A={};l(A,{customQuerySelectors:()=>P});var v=class{#e=new Map;register(e,r){if(!r.queryOne&&r.queryAll){let o=r.queryAll;r.queryOne=(s,i)=>{for(let n of o(s,i))return n;return null}}else if(r.queryOne&&!r.queryAll){let o=r.queryOne;r.queryAll=(s,i)=>{let n=o(s,i);return n?[n]:[]}}else if(!r.queryOne||!r.queryAll)throw new Error(\"At least one query method must be defined.\");this.#e.set(e,{querySelector:r.queryOne,querySelectorAll:r.queryAll})}unregister(e){this.#e.delete(e)}get(e){return this.#e.get(e)}clear(){this.#e.clear()}},P=new v;var R={};l(R,{pierceQuerySelector:()=>ee,pierceQuerySelectorAll:()=>te});var ee=(t,e)=>{let r=null,o=s=>{let i=document.createTreeWalker(s,NodeFilter.SHOW_ELEMENT);do{let n=i.currentNode;n.shadowRoot&&o(n.shadowRoot),!(n instanceof ShadowRoot)&&n!==s&&!r&&n.matches(e)&&(r=n)}while(!r&&i.nextNode())};return t instanceof Document&&(t=t.documentElement),o(t),r},te=(t,e)=>{let r=[],o=s=>{let i=document.createTreeWalker(s,NodeFilter.SHOW_ELEMENT);do{let n=i.currentNode;n.shadowRoot&&o(n.shadowRoot),!(n instanceof ShadowRoot)&&n!==s&&n.matches(e)&&r.push(n)}while(i.nextNode())};return t instanceof Document&&(t=t.documentElement),o(t),r};var u=(t,e)=>{if(!t)throw new Error(e)};var y=class{#e;#r;#o;#t;constructor(e,r){this.#e=e,this.#r=r}async start(){let e=this.#t=c.create(),r=await this.#e();if(r){e.resolve(r);return}this.#o=new MutationObserver(async()=>{let o=await this.#e();o&&(e.resolve(o),await this.stop())}),this.#o.observe(this.#r,{childList:!0,subtree:!0,attributes:!0})}async stop(){u(this.#t,\"Polling never started.\"),this.#t.finished()||this.#t.reject(new Error(\"Polling stopped\")),this.#o&&(this.#o.disconnect(),this.#o=void 0)}result(){return u(this.#t,\"Polling never started.\"),this.#t.valueOrThrow()}},w=class{#e;#r;constructor(e){this.#e=e}async start(){let e=this.#r=c.create(),r=await this.#e();if(r){e.resolve(r);return}let o=async()=>{if(e.finished())return;let s=await this.#e();if(!s){window.requestAnimationFrame(o);return}e.resolve(s),await this.stop()};window.requestAnimationFrame(o)}async stop(){u(this.#r,\"Polling never started.\"),this.#r.finished()||this.#r.reject(new Error(\"Polling stopped\"))}result(){return u(this.#r,\"Polling never started.\"),this.#r.valueOrThrow()}},T=class{#e;#r;#o;#t;constructor(e,r){this.#e=e,this.#r=r}async start(){let e=this.#t=c.create(),r=await this.#e();if(r){e.resolve(r);return}this.#o=setInterval(async()=>{let o=await this.#e();o&&(e.resolve(o),await this.stop())},this.#r)}async stop(){u(this.#t,\"Polling never started.\"),this.#t.finished()||this.#t.reject(new Error(\"Polling stopped\")),this.#o&&(clearInterval(this.#o),this.#o=void 0)}result(){return u(this.#t,\"Polling never started.\"),this.#t.valueOrThrow()}};var _={};l(_,{PCombinator:()=>H,pQuerySelector:()=>fe,pQuerySelectorAll:()=>$});var a=class{static async*map(e,r){for await(let o of e)yield await r(o)}static async*flatMap(e,r){for await(let o of e)yield*r(o)}static async collect(e){let r=[];for await(let o of e)r.push(o);return r}static async first(e){for await(let r of e)return r}};var C={};l(C,{textQuerySelectorAll:()=>m});var re=new Set([\"checkbox\",\"image\",\"radio\"]),oe=t=>t instanceof HTMLSelectElement||t instanceof HTMLTextAreaElement||t instanceof HTMLInputElement&&!re.has(t.type),se=new Set([\"SCRIPT\",\"STYLE\"]),f=t=>!se.has(t.nodeName)&&!document.head?.contains(t),I=new WeakMap,F=t=>{for(;t;)I.delete(t),t instanceof ShadowRoot?t=t.host:t=t.parentNode},j=new WeakSet,ne=new MutationObserver(t=>{for(let e of t)F(e.target)}),d=t=>{let e=I.get(t);if(e||(e={full:\"\",immediate:[]},!f(t)))return e;let r=\"\";if(oe(t))e.full=t.value,e.immediate.push(t.value),t.addEventListener(\"input\",o=>{F(o.target)},{once:!0,capture:!0});else{for(let o=t.firstChild;o;o=o.nextSibling){if(o.nodeType===Node.TEXT_NODE){e.full+=o.nodeValue??\"\",r+=o.nodeValue??\"\";continue}r&&e.immediate.push(r),r=\"\",o.nodeType===Node.ELEMENT_NODE&&(e.full+=d(o).full)}r&&e.immediate.push(r),t instanceof Element&&t.shadowRoot&&(e.full+=d(t.shadowRoot).full),j.has(t)||(ne.observe(t,{childList:!0,characterData:!0,subtree:!0}),j.add(t))}return I.set(t,e),e};var m=function*(t,e){let r=!1;for(let o of t.childNodes)if(o instanceof Element&&f(o)){let s;o.shadowRoot?s=m(o.shadowRoot,e):s=m(o,e);for(let i of s)yield i,r=!0}r||t instanceof Element&&f(t)&&d(t).full.includes(e)&&(yield t)};var k={};l(k,{checkVisibility:()=>le,pierce:()=>S,pierceAll:()=>O});var ie=[\"hidden\",\"collapse\"],le=(t,e)=>{if(!t)return e===!1;if(e===void 0)return t;let r=t.nodeType===Node.TEXT_NODE?t.parentElement:t,o=window.getComputedStyle(r),s=o&&!ie.includes(o.visibility)&&!ae(r);return e===s?t:!1};function ae(t){let e=t.getBoundingClientRect();return e.width===0||e.height===0}var ce=t=>\"shadowRoot\"in t&&t.shadowRoot instanceof ShadowRoot;function*S(t){ce(t)?yield t.shadowRoot:yield t}function*O(t){t=S(t).next().value,yield t;let e=[document.createTreeWalker(t,NodeFilter.SHOW_ELEMENT)];for(let r of e){let o;for(;o=r.nextNode();)o.shadowRoot&&(yield o.shadowRoot,e.push(document.createTreeWalker(o.shadowRoot,NodeFilter.SHOW_ELEMENT)))}}var D={};l(D,{xpathQuerySelectorAll:()=>q});var q=function*(t,e,r=-1){let s=(t.ownerDocument||document).evaluate(e,t,null,XPathResult.ORDERED_NODE_ITERATOR_TYPE),i=[],n;for(;(n=s.iterateNext())&&(i.push(n),!(r&&i.length===r)););for(let h=0;h<i.length;h++)n=i[h],yield n,delete i[h]};var ue=/[-\\w\\P{ASCII}*]/u,H=(r=>(r.Descendent=\">>>\",r.Child=\">>>>\",r))(H||{}),V=t=>\"querySelectorAll\"in t,Q=class{#e;#r=[];#o=void 0;elements;constructor(e,r){this.elements=[e],this.#e=r,this.#t()}async run(){if(typeof this.#o==\"string\")switch(this.#o.trimStart()){case\":scope\":this.#t();break}for(;this.#o!==void 0;this.#t()){let e=this.#o;typeof e==\"string\"?e[0]&&ue.test(e[0])?this.elements=a.flatMap(this.elements,async function*(r){V(r)&&(yield*r.querySelectorAll(e))}):this.elements=a.flatMap(this.elements,async function*(r){if(!r.parentElement){if(!V(r))return;yield*r.querySelectorAll(e);return}let o=0;for(let s of r.parentElement.children)if(++o,s===r)break;yield*r.parentElement.querySelectorAll(`:scope>:nth-child(${o})${e}`)}):this.elements=a.flatMap(this.elements,async function*(r){switch(e.name){case\"text\":yield*m(r,e.value);break;case\"xpath\":yield*q(r,e.value);break;case\"aria\":yield*x(r,e.value);break;default:let o=P.get(e.name);if(!o)throw new Error(`Unknown selector type: ${e.name}`);yield*o.querySelectorAll(r,e.value)}})}}#t(){if(this.#r.length!==0){this.#o=this.#r.shift();return}if(this.#e.length===0){this.#o=void 0;return}let e=this.#e.shift();switch(e){case\">>>>\":{this.elements=a.flatMap(this.elements,S),this.#t();break}case\">>>\":{this.elements=a.flatMap(this.elements,O),this.#t();break}default:this.#r=e,this.#t();break}}},M=class{#e=new WeakMap;calculate(e,r=[]){if(e===null)return r;e instanceof ShadowRoot&&(e=e.host);let o=this.#e.get(e);if(o)return[...o,...r];let s=0;for(let n=e.previousSibling;n;n=n.previousSibling)++s;let i=this.calculate(e.parentNode,[s]);return this.#e.set(e,i),[...i,...r]}},U=(t,e)=>{if(t.length+e.length===0)return 0;let[r=-1,...o]=t,[s=-1,...i]=e;return r===s?U(o,i):r<s?-1:1},de=async function*(t){let e=new Set;for await(let o of t)e.add(o);let r=new M;yield*[...e.values()].map(o=>[o,r.calculate(o)]).sort(([,o],[,s])=>U(o,s)).map(([o])=>o)},$=function(t,e){let r=JSON.parse(e);if(r.some(o=>{let s=0;return o.some(i=>(typeof i==\"string\"?++s:s=0,s>1))}))throw new Error(\"Multiple deep combinators found in sequence.\");return de(a.flatMap(r,o=>{let s=new Q(t,o);return s.run(),s.elements}))},fe=async function(t,e){for await(let r of $(t,e))return r;return null};var me=Object.freeze({...b,...A,...R,..._,...C,...k,...D,...E,Deferred:c,createFunction:W,createTextContent:d,IntervalPoller:T,isSuitableNodeForTextMatching:f,MutationPoller:y,RAFPoller:w}),he=me;\n";
8
+ export const source = "\"use strict\";var g=Object.defineProperty;var X=Object.getOwnPropertyDescriptor;var B=Object.getOwnPropertyNames;var Y=Object.prototype.hasOwnProperty;var l=(t,e)=>{for(var r in e)g(t,r,{get:e[r],enumerable:!0})},G=(t,e,r,o)=>{if(e&&typeof e==\"object\"||typeof e==\"function\")for(let s of B(e))!Y.call(t,s)&&s!==r&&g(t,s,{get:()=>e[s],enumerable:!(o=X(e,s))||o.enumerable});return t};var J=t=>G(g({},\"__esModule\",{value:!0}),t);var pe={};l(pe,{default:()=>he});module.exports=J(pe);var N=class extends Error{constructor(e,r){super(e,r),this.name=this.constructor.name}get[Symbol.toStringTag](){return this.constructor.name}},p=class extends N{};var c=class t{static create(e){return new t(e)}static async race(e){let r=new Set;try{let o=e.map(s=>s instanceof t?(s.#s&&r.add(s),s.valueOrThrow()):s);return await Promise.race(o)}finally{for(let o of r)o.reject(new Error(\"Timeout cleared\"))}}#e=!1;#r=!1;#o;#t;#a=new Promise(e=>{this.#t=e});#s;#i;constructor(e){e&&e.timeout>0&&(this.#i=new p(e.message),this.#s=setTimeout(()=>{this.reject(this.#i)},e.timeout))}#l(e){clearTimeout(this.#s),this.#o=e,this.#t()}resolve(e){this.#r||this.#e||(this.#e=!0,this.#l(e))}reject(e){this.#r||this.#e||(this.#r=!0,this.#l(e))}resolved(){return this.#e}finished(){return this.#e||this.#r}value(){return this.#o}#n;valueOrThrow(){return this.#n||(this.#n=(async()=>{if(await this.#a,this.#r)throw this.#o;return this.#o})()),this.#n}};var L=new Map,W=t=>{let e=L.get(t);return e||(e=new Function(`return ${t}`)(),L.set(t,e),e)};var b={};l(b,{ariaQuerySelector:()=>z,ariaQuerySelectorAll:()=>x});var z=(t,e)=>globalThis.__ariaQuerySelector(t,e),x=async function*(t,e){yield*await globalThis.__ariaQuerySelectorAll(t,e)};var E={};l(E,{cssQuerySelector:()=>K,cssQuerySelectorAll:()=>Z});var K=(t,e)=>t.querySelector(e),Z=function(t,e){return t.querySelectorAll(e)};var A={};l(A,{customQuerySelectors:()=>P});var v=class{#e=new Map;register(e,r){if(!r.queryOne&&r.queryAll){let o=r.queryAll;r.queryOne=(s,i)=>{for(let n of o(s,i))return n;return null}}else if(r.queryOne&&!r.queryAll){let o=r.queryOne;r.queryAll=(s,i)=>{let n=o(s,i);return n?[n]:[]}}else if(!r.queryOne||!r.queryAll)throw new Error(\"At least one query method must be defined.\");this.#e.set(e,{querySelector:r.queryOne,querySelectorAll:r.queryAll})}unregister(e){this.#e.delete(e)}get(e){return this.#e.get(e)}clear(){this.#e.clear()}},P=new v;var R={};l(R,{pierceQuerySelector:()=>ee,pierceQuerySelectorAll:()=>te});var ee=(t,e)=>{let r=null,o=s=>{let i=document.createTreeWalker(s,NodeFilter.SHOW_ELEMENT);do{let n=i.currentNode;n.shadowRoot&&o(n.shadowRoot),!(n instanceof ShadowRoot)&&n!==s&&!r&&n.matches(e)&&(r=n)}while(!r&&i.nextNode())};return t instanceof Document&&(t=t.documentElement),o(t),r},te=(t,e)=>{let r=[],o=s=>{let i=document.createTreeWalker(s,NodeFilter.SHOW_ELEMENT);do{let n=i.currentNode;n.shadowRoot&&o(n.shadowRoot),!(n instanceof ShadowRoot)&&n!==s&&n.matches(e)&&r.push(n)}while(i.nextNode())};return t instanceof Document&&(t=t.documentElement),o(t),r};var u=(t,e)=>{if(!t)throw new Error(e)};var y=class{#e;#r;#o;#t;constructor(e,r){this.#e=e,this.#r=r}async start(){let e=this.#t=c.create(),r=await this.#e();if(r){e.resolve(r);return}this.#o=new MutationObserver(async()=>{let o=await this.#e();o&&(e.resolve(o),await this.stop())}),this.#o.observe(this.#r,{childList:!0,subtree:!0,attributes:!0})}async stop(){u(this.#t,\"Polling never started.\"),this.#t.finished()||this.#t.reject(new Error(\"Polling stopped\")),this.#o&&(this.#o.disconnect(),this.#o=void 0)}result(){return u(this.#t,\"Polling never started.\"),this.#t.valueOrThrow()}},w=class{#e;#r;constructor(e){this.#e=e}async start(){let e=this.#r=c.create(),r=await this.#e();if(r){e.resolve(r);return}let o=async()=>{if(e.finished())return;let s=await this.#e();if(!s){window.requestAnimationFrame(o);return}e.resolve(s),await this.stop()};window.requestAnimationFrame(o)}async stop(){u(this.#r,\"Polling never started.\"),this.#r.finished()||this.#r.reject(new Error(\"Polling stopped\"))}result(){return u(this.#r,\"Polling never started.\"),this.#r.valueOrThrow()}},T=class{#e;#r;#o;#t;constructor(e,r){this.#e=e,this.#r=r}async start(){let e=this.#t=c.create(),r=await this.#e();if(r){e.resolve(r);return}this.#o=setInterval(async()=>{let o=await this.#e();o&&(e.resolve(o),await this.stop())},this.#r)}async stop(){u(this.#t,\"Polling never started.\"),this.#t.finished()||this.#t.reject(new Error(\"Polling stopped\")),this.#o&&(clearInterval(this.#o),this.#o=void 0)}result(){return u(this.#t,\"Polling never started.\"),this.#t.valueOrThrow()}};var _={};l(_,{PCombinator:()=>H,pQuerySelector:()=>fe,pQuerySelectorAll:()=>$});var a=class{static async*map(e,r){for await(let o of e)yield await r(o)}static async*flatMap(e,r){for await(let o of e)yield*r(o)}static async collect(e){let r=[];for await(let o of e)r.push(o);return r}static async first(e){for await(let r of e)return r}};var C={};l(C,{textQuerySelectorAll:()=>m});var re=new Set([\"checkbox\",\"image\",\"radio\"]),oe=t=>t instanceof HTMLSelectElement||t instanceof HTMLTextAreaElement||t instanceof HTMLInputElement&&!re.has(t.type),se=new Set([\"SCRIPT\",\"STYLE\"]),f=t=>!se.has(t.nodeName)&&!document.head?.contains(t),I=new WeakMap,F=t=>{for(;t;)I.delete(t),t instanceof ShadowRoot?t=t.host:t=t.parentNode},j=new WeakSet,ne=new MutationObserver(t=>{for(let e of t)F(e.target)}),d=t=>{let e=I.get(t);if(e||(e={full:\"\",immediate:[]},!f(t)))return e;let r=\"\";if(oe(t))e.full=t.value,e.immediate.push(t.value),t.addEventListener(\"input\",o=>{F(o.target)},{once:!0,capture:!0});else{for(let o=t.firstChild;o;o=o.nextSibling){if(o.nodeType===Node.TEXT_NODE){e.full+=o.nodeValue??\"\",r+=o.nodeValue??\"\";continue}r&&e.immediate.push(r),r=\"\",o.nodeType===Node.ELEMENT_NODE&&(e.full+=d(o).full)}r&&e.immediate.push(r),t instanceof Element&&t.shadowRoot&&(e.full+=d(t.shadowRoot).full),j.has(t)||(ne.observe(t,{childList:!0,characterData:!0,subtree:!0}),j.add(t))}return I.set(t,e),e};var m=function*(t,e){let r=!1;for(let o of t.childNodes)if(o instanceof Element&&f(o)){let s;o.shadowRoot?s=m(o.shadowRoot,e):s=m(o,e);for(let i of s)yield i,r=!0}r||t instanceof Element&&f(t)&&d(t).full.includes(e)&&(yield t)};var k={};l(k,{checkVisibility:()=>le,pierce:()=>S,pierceAll:()=>O});var ie=[\"hidden\",\"collapse\"],le=(t,e)=>{if(!t)return e===!1;if(e===void 0)return t;let r=t.nodeType===Node.TEXT_NODE?t.parentElement:t,o=window.getComputedStyle(r),s=o&&!ie.includes(o.visibility)&&!ae(r);return e===s?t:!1};function ae(t){let e=t.getBoundingClientRect();return e.width===0||e.height===0}var ce=t=>\"shadowRoot\"in t&&t.shadowRoot instanceof ShadowRoot;function*S(t){ce(t)?yield t.shadowRoot:yield t}function*O(t){t=S(t).next().value,yield t;let e=[document.createTreeWalker(t,NodeFilter.SHOW_ELEMENT)];for(let r of e){let o;for(;o=r.nextNode();)o.shadowRoot&&(yield o.shadowRoot,e.push(document.createTreeWalker(o.shadowRoot,NodeFilter.SHOW_ELEMENT)))}}var D={};l(D,{xpathQuerySelectorAll:()=>q});var q=function*(t,e,r=-1){let s=(t.ownerDocument||document).evaluate(e,t,null,XPathResult.ORDERED_NODE_ITERATOR_TYPE),i=[],n;for(;(n=s.iterateNext())&&(i.push(n),!(r&&i.length===r)););for(let h=0;h<i.length;h++)n=i[h],yield n,delete i[h]};var ue=/[-\\w\\P{ASCII}*]/u,H=(r=>(r.Descendent=\">>>\",r.Child=\">>>>\",r))(H||{}),V=t=>\"querySelectorAll\"in t,Q=class{#e;#r=[];#o=void 0;elements;constructor(e,r){this.elements=[e],this.#e=r,this.#t()}async run(){for(typeof this.#o==\"string\"&&this.#o.trimStart()===\":scope\"&&this.#t();this.#o!==void 0;this.#t()){let e=this.#o;typeof e==\"string\"?e[0]&&ue.test(e[0])?this.elements=a.flatMap(this.elements,async function*(r){V(r)&&(yield*r.querySelectorAll(e))}):this.elements=a.flatMap(this.elements,async function*(r){if(!r.parentElement){if(!V(r))return;yield*r.querySelectorAll(e);return}let o=0;for(let s of r.parentElement.children)if(++o,s===r)break;yield*r.parentElement.querySelectorAll(`:scope>:nth-child(${o})${e}`)}):this.elements=a.flatMap(this.elements,async function*(r){switch(e.name){case\"text\":yield*m(r,e.value);break;case\"xpath\":yield*q(r,e.value);break;case\"aria\":yield*x(r,e.value);break;default:let o=P.get(e.name);if(!o)throw new Error(`Unknown selector type: ${e.name}`);yield*o.querySelectorAll(r,e.value)}})}}#t(){if(this.#r.length!==0){this.#o=this.#r.shift();return}if(this.#e.length===0){this.#o=void 0;return}let e=this.#e.shift();switch(e){case\">>>>\":{this.elements=a.flatMap(this.elements,S),this.#t();break}case\">>>\":{this.elements=a.flatMap(this.elements,O),this.#t();break}default:this.#r=e,this.#t();break}}},M=class{#e=new WeakMap;calculate(e,r=[]){if(e===null)return r;e instanceof ShadowRoot&&(e=e.host);let o=this.#e.get(e);if(o)return[...o,...r];let s=0;for(let n=e.previousSibling;n;n=n.previousSibling)++s;let i=this.calculate(e.parentNode,[s]);return this.#e.set(e,i),[...i,...r]}},U=(t,e)=>{if(t.length+e.length===0)return 0;let[r=-1,...o]=t,[s=-1,...i]=e;return r===s?U(o,i):r<s?-1:1},de=async function*(t){let e=new Set;for await(let o of t)e.add(o);let r=new M;yield*[...e.values()].map(o=>[o,r.calculate(o)]).sort(([,o],[,s])=>U(o,s)).map(([o])=>o)},$=function(t,e){let r=JSON.parse(e);if(r.some(o=>{let s=0;return o.some(i=>(typeof i==\"string\"?++s:s=0,s>1))}))throw new Error(\"Multiple deep combinators found in sequence.\");return de(a.flatMap(r,o=>{let s=new Q(t,o);return s.run(),s.elements}))},fe=async function(t,e){for await(let r of $(t,e))return r;return null};var me=Object.freeze({...b,...A,...R,..._,...C,...k,...D,...E,Deferred:c,createFunction:W,createTextContent:d,IntervalPoller:T,isSuitableNodeForTextMatching:f,MutationPoller:y,RAFPoller:w}),he=me;\n";
package/src/revisions.ts CHANGED
@@ -8,7 +8,7 @@
8
8
  * @internal
9
9
  */
10
10
  export const PUPPETEER_REVISIONS = Object.freeze({
11
- chrome: '143.0.7499.42',
12
- 'chrome-headless-shell': '143.0.7499.42',
13
- firefox: 'stable_146.0',
11
+ chrome: '143.0.7499.169',
12
+ 'chrome-headless-shell': '143.0.7499.169',
13
+ firefox: 'stable_146.0.1',
14
14
  });
@@ -6,5 +6,5 @@
6
6
 
7
7
  // If moved update release-please config
8
8
  // x-release-please-start-version
9
- export const packageVersion = '24.33.0';
9
+ export const packageVersion = '24.34.0';
10
10
  // x-release-please-end
@@ -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: '143.0.7499.193',
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];
@@ -461,15 +456,15 @@
461
456
  let bulletproofUserAgent;
462
457
  if (isBraveOptimized) {
463
458
  // 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';
459
+ bulletproofUserAgent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.7499.193 Safari/537.36';
465
460
  console.log('[🦁 BRAVE-STEALTH] Brave browser optimizations active - maximum stealth mode');
466
461
  } else if (isChromeOptimized) {
467
462
  // 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';
463
+ bulletproofUserAgent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.7499.193 Safari/537.36';
469
464
  console.log('[🔵 CHROME-STEALTH] Chrome browser optimizations active');
470
465
  } else {
471
466
  // 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';
467
+ bulletproofUserAgent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.7499.193 Safari/537.36';
473
468
  console.log('[⚙️ DEFAULT-STEALTH] Using default browser stealth mode');
474
469
  }
475
470
 
@@ -482,42 +477,13 @@
482
477
 
483
478
  // COMPLETELY override appVersion
484
479
  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',
480
+ get: () => '5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.7499.193 Safari/537.36',
486
481
  configurable: false,
487
482
  enumerable: true
488
483
  });
489
484
 
490
- // BULLETPROOF webdriver property elimination
491
- if ('webdriver' in navigator) {
492
- delete navigator.webdriver;
493
- }
494
485
 
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
- };
486
+ // BULLETPROOF platform detection
521
487
 
522
488
  // BULLETPROOF platform detection
523
489
  Object.defineProperty(navigator, 'platform', {
@@ -551,13 +517,23 @@
551
517
  });
552
518
  })();
553
519
 
554
- // Enhanced userAgentData with getHighEntropyValues method
555
- Object.defineProperty(navigator, 'userAgentData', {
556
- get: () => ({
520
+ // Enhanced userAgentData with getHighEntropyValues method - Singleton & Prototype
521
+ (function() {
522
+ // Aggressively delete existing userAgentData
523
+ try {
524
+ delete Navigator.prototype.userAgentData;
525
+ } catch {}
526
+ try {
527
+ if (navigator.hasOwnProperty('userAgentData')) {
528
+ delete navigator.userAgentData;
529
+ }
530
+ } catch {}
531
+
532
+ const userAgentDataInstance = {
557
533
  brands: [
558
- { brand: 'Not_A Brand', version: '8' },
559
- { brand: 'Chromium', version: '140' },
560
- { brand: 'Google Chrome', version: '140' }
534
+ { brand: 'Not_A Brand', version: '24' },
535
+ { brand: 'Chromium', version: '131' },
536
+ { brand: 'Google Chrome', version: '131' }
561
537
  ],
562
538
  mobile: false,
563
539
  platform: 'Windows',
@@ -565,23 +541,34 @@
565
541
  return Promise.resolve({
566
542
  architecture: 'x86',
567
543
  bitness: '64',
568
- brands: this.brands,
544
+ brands: userAgentDataInstance.brands,
569
545
  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' }
546
+ { brand: 'Not_A Brand', version: '143.0.7499.193' },
547
+ { brand: 'Chromium', version: '143.0.7499.193' },
548
+ { brand: 'Google Chrome', version: '143.0.7499.193' }
573
549
  ],
574
550
  mobile: false,
575
551
  model: '',
576
552
  platform: 'Windows',
577
553
  platformVersion: '10.0.0',
578
- uaFullVersion: '140.0.7339.81'
554
+ uaFullVersion: '143.0.7499.193'
579
555
  });
556
+ },
557
+ toJSON: function() {
558
+ return {
559
+ brands: this.brands,
560
+ mobile: this.mobile,
561
+ platform: this.platform
562
+ };
580
563
  }
581
- }),
582
- configurable: true,
583
- enumerable: false
584
- });
564
+ };
565
+
566
+ Object.defineProperty(Navigator.prototype, 'userAgentData', {
567
+ get: () => userAgentDataInstance,
568
+ configurable: false,
569
+ enumerable: true
570
+ });
571
+ })();
585
572
 
586
573
 
587
574
  console.log('[REBROWSER-STEALTH] ✅ Ultra-fast professional stealth mode activated');