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.
- package/README.md +5 -5
- package/advanced-stealth.js +46 -59
- package/lib/cjs/puppeteer/api/Page.d.ts +2 -3
- package/lib/cjs/puppeteer/api/Page.d.ts.map +1 -1
- package/lib/cjs/puppeteer/api/Page.js.map +1 -1
- package/lib/cjs/puppeteer/bidi/HTTPRequest.d.ts.map +1 -1
- package/lib/cjs/puppeteer/bidi/HTTPRequest.js +9 -0
- package/lib/cjs/puppeteer/bidi/HTTPRequest.js.map +1 -1
- package/lib/cjs/puppeteer/bidi/HTTPResponse.d.ts +3 -0
- package/lib/cjs/puppeteer/bidi/HTTPResponse.d.ts.map +1 -1
- package/lib/cjs/puppeteer/bidi/HTTPResponse.js +9 -0
- package/lib/cjs/puppeteer/bidi/HTTPResponse.js.map +1 -1
- package/lib/cjs/puppeteer/bidi/core/Request.d.ts +3 -0
- package/lib/cjs/puppeteer/bidi/core/Request.d.ts.map +1 -1
- package/lib/cjs/puppeteer/bidi/core/Request.js +10 -0
- package/lib/cjs/puppeteer/bidi/core/Request.js.map +1 -1
- package/lib/cjs/puppeteer/cdp/Browser.d.ts.map +1 -1
- package/lib/cjs/puppeteer/cdp/Browser.js +8 -4
- package/lib/cjs/puppeteer/cdp/Browser.js.map +1 -1
- package/lib/cjs/puppeteer/generated/injected.d.ts +1 -1
- package/lib/cjs/puppeteer/generated/injected.d.ts.map +1 -1
- package/lib/cjs/puppeteer/generated/injected.js +1 -1
- package/lib/cjs/puppeteer/generated/injected.js.map +1 -1
- package/lib/cjs/puppeteer/injected/injected.d.ts +1 -1
- package/lib/cjs/puppeteer/revisions.d.ts +3 -3
- package/lib/cjs/puppeteer/revisions.js +3 -3
- package/lib/cjs/puppeteer/revisions.js.map +1 -1
- package/lib/cjs/puppeteer/util/Mutex.d.ts +2 -2
- package/lib/cjs/puppeteer/util/version.d.ts +1 -1
- package/lib/cjs/puppeteer/util/version.js +1 -1
- package/lib/es5-iife/puppeteer-core-browser.d.ts +10 -1
- package/lib/es5-iife/puppeteer-core-browser.js +13 -7
- package/lib/esm/puppeteer/api/Page.d.ts +2 -3
- package/lib/esm/puppeteer/api/Page.d.ts.map +1 -1
- package/lib/esm/puppeteer/api/Page.js.map +1 -1
- package/lib/esm/puppeteer/bidi/HTTPRequest.d.ts.map +1 -1
- package/lib/esm/puppeteer/bidi/HTTPRequest.js +9 -0
- package/lib/esm/puppeteer/bidi/HTTPRequest.js.map +1 -1
- package/lib/esm/puppeteer/bidi/HTTPResponse.d.ts +3 -0
- package/lib/esm/puppeteer/bidi/HTTPResponse.d.ts.map +1 -1
- package/lib/esm/puppeteer/bidi/HTTPResponse.js +9 -0
- package/lib/esm/puppeteer/bidi/HTTPResponse.js.map +1 -1
- package/lib/esm/puppeteer/bidi/core/Request.d.ts +3 -0
- package/lib/esm/puppeteer/bidi/core/Request.d.ts.map +1 -1
- package/lib/esm/puppeteer/bidi/core/Request.js +10 -0
- package/lib/esm/puppeteer/bidi/core/Request.js.map +1 -1
- package/lib/esm/puppeteer/cdp/Browser.d.ts.map +1 -1
- package/lib/esm/puppeteer/cdp/Browser.js +8 -4
- package/lib/esm/puppeteer/cdp/Browser.js.map +1 -1
- package/lib/esm/puppeteer/generated/injected.d.ts +1 -1
- package/lib/esm/puppeteer/generated/injected.d.ts.map +1 -1
- package/lib/esm/puppeteer/generated/injected.js +1 -1
- package/lib/esm/puppeteer/generated/injected.js.map +1 -1
- package/lib/esm/puppeteer/revisions.d.ts +3 -3
- package/lib/esm/puppeteer/revisions.js +3 -3
- package/lib/esm/puppeteer/revisions.js.map +1 -1
- package/lib/esm/puppeteer/util/version.d.ts +1 -1
- package/lib/esm/puppeteer/util/version.js +1 -1
- package/lib/types.d.ts +10 -1
- package/package.json +13 -13
- package/src/api/Page.ts +2 -3
- package/src/bidi/HTTPRequest.ts +13 -0
- package/src/bidi/HTTPResponse.ts +10 -0
- package/src/bidi/core/Request.ts +15 -0
- package/src/cdp/Browser.ts +9 -4
- package/src/generated/injected.ts +1 -1
- package/src/revisions.ts +3 -3
- package/src/util/version.ts +1 -1
- package/stealth-injection.js +45 -58
package/src/bidi/HTTPResponse.ts
CHANGED
|
@@ -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;
|
package/src/bidi/core/Request.ts
CHANGED
|
@@ -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 ||
|
package/src/cdp/Browser.ts
CHANGED
|
@@ -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
|
|
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(){
|
|
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.
|
|
12
|
-
'chrome-headless-shell': '143.0.7499.
|
|
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
|
});
|
package/src/util/version.ts
CHANGED
package/stealth-injection.js
CHANGED
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
return Promise.resolve({
|
|
36
36
|
ok: true,
|
|
37
37
|
json: () => Promise.resolve([{
|
|
38
|
-
version: '
|
|
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
|
-
|
|
75
|
-
|
|
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 = ['
|
|
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/
|
|
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/
|
|
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/
|
|
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/
|
|
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
|
-
//
|
|
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
|
-
|
|
556
|
-
|
|
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: '
|
|
559
|
-
{ brand: 'Chromium', version: '
|
|
560
|
-
{ brand: 'Google Chrome', version: '
|
|
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:
|
|
544
|
+
brands: userAgentDataInstance.brands,
|
|
569
545
|
fullVersionList: [
|
|
570
|
-
{ brand: 'Not_A Brand', version: '
|
|
571
|
-
{ brand: 'Chromium', version: '
|
|
572
|
-
{ brand: 'Google Chrome', version: '
|
|
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: '
|
|
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
|
-
|
|
583
|
-
|
|
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');
|