diff --git a/src/client/shared/event.ts b/src/client/shared/event.ts index 0af9330..0e60b32 100644 --- a/src/client/shared/event.ts +++ b/src/client/shared/event.ts @@ -15,6 +15,17 @@ export default function (client: ScramjetClient, self: Self) { return true; }, + ports() { + // don't know why i have to do this? + return this.ports; + }, + source() { + let scram: ScramjetClient = this.source[ScramjetClient.SCRAMJET]; + + if (scram) return scram.windowProxy; + + return this.source; + }, origin() { if (typeof this.data === "object" && "$scramjet$origin" in this.data) return this.data.$scramjet$origin; diff --git a/src/shared/rewriters/js.ts b/src/shared/rewriters/js.ts index 0be28da..c77218c 100644 --- a/src/shared/rewriters/js.ts +++ b/src/shared/rewriters/js.ts @@ -39,6 +39,11 @@ export function rewriteJs(js: string | ArrayBuffer, origin?: URL) { // dbg.debug("Rewrite took", Math.floor((after - before) * 10) / 10, "ms"); + if (typeof js !== "string") js = new TextDecoder().decode(js); + js = js.replaceAll( + `(c=H[36](57,T,(F=(d=["contentWindow","ports",(S=p.dH,"recaptcha-setup")],S).data==d[2],S).origin)==H[36](59,T,A),b=!E||S.source==E[d[0]],F&&c&&b&&S[d[1]].length>M)?S[d[1]][M]:null`, + " p.dH.ports[0]" + ); return js; } diff --git a/src/worker/fetch.ts b/src/worker/fetch.ts index d8caf59..11e0407 100644 --- a/src/worker/fetch.ts +++ b/src/worker/fetch.ts @@ -24,11 +24,7 @@ export async function swfetch( decodeURIComponent(new URL(request.url).searchParams.get("origin")) ); - const rewritten = rewriteWorkers( - ab, - new URL(request.url).searchParams.get("type"), - new URL(origin) - ); + const rewritten = rewriteWorkers(ab, new URL(origin)); return new Response(rewritten, { headers: { @@ -184,11 +180,7 @@ async function handleResponse( break; case "sharedworker": case "worker": - responseBody = rewriteWorkers( - await response.arrayBuffer(), - workertype, - url - ); + responseBody = rewriteWorkers(await response.arrayBuffer(), url); break; default: responseBody = response.body;