mirror of
https://github.com/QuiteAFancyEmerald/Holy-Unblocker.git
synced 2025-05-12 19:40:02 -04:00
Updated a few more things
This commit is contained in:
parent
c827e9f7e1
commit
73cdcb3186
47 changed files with 35805 additions and 1102 deletions
|
@ -1,32 +1,52 @@
|
|||
function createWorkerRewriter(ctx = {}) {
|
||||
return function rewriteWorker() {
|
||||
if (ctx.window.Worker) {
|
||||
ctx.window.Worker = new Proxy(ctx.window.Worker, {
|
||||
construct: (target, args) => {
|
||||
if (args[0]) {
|
||||
if (args[0].trim().startsWith(`blob:${ctx.window.location.origin}`)) {
|
||||
const xhr = new ctx.originalXhr();
|
||||
xhr.open('GET', args[0], false);
|
||||
xhr.send();
|
||||
const script = ctx.js.process(xhr.responseText, ctx.location.origin + args[0].trim().slice(`blob:${ctx.window.location.origin}`.length));
|
||||
const blob = new Blob([ script ], { type: 'application/javascript' });
|
||||
args[0] = URL.createObjectURL(blob);
|
||||
} else {
|
||||
args[0] = ctx.url.wrap(args[0], ctx.meta);
|
||||
};
|
||||
const { overrideFunction, overrideConstructor } = require("./utils");
|
||||
|
||||
function createWorkerRewriter(ctx) {
|
||||
if (ctx.window.Worker) ctx.originalFn.Worker = ctx.window.Worker;
|
||||
if (ctx.serviceWorker && ctx.window.importScripts) ctx.originalFn.importScripts = ctx.window.importScripts;
|
||||
if (ctx.window.Worklet) ctx.originalFn.WorkletAddModule = ctx.window.Worklet.prototype.addModule;
|
||||
function rewriteWorkerConstruct() {
|
||||
if (ctx.originalFn.Worker) {
|
||||
overrideConstructor(ctx.window, 'Worker', (target, args) => {
|
||||
if (args[0]) {
|
||||
if (args[0].trim().startsWith(`blob:${ctx.window.location.origin}`)) {
|
||||
const xhr = new ctx.window.XMLHttpRequest();
|
||||
ctx.proxyToOriginal(ctx.window.XMLHttpRequest.prototype.open).call(xhr, 'GET', args[0], false)
|
||||
xhr.send();
|
||||
const script = ctx.js.process(xhr.responseText, ctx.location.origin + args[0].trim().slice(`blob:${ctx.window.location.origin}`.length));
|
||||
const blob = new Blob([ script ], { type: 'application/javascript' });
|
||||
args[0] = URL.createObjectURL(blob);
|
||||
} else {
|
||||
args[0] = ctx.url.wrap(args[0], ctx.meta);
|
||||
};
|
||||
return Reflect.construct(target, args);
|
||||
},
|
||||
});
|
||||
};
|
||||
if (ctx.serviceWorker && ctx.window.importScripts) {
|
||||
ctx.window.importScripts = new Proxy(ctx.window.importScripts, {
|
||||
apply: (target, that, args) => {
|
||||
if (args[0]) args[0] = ctx.url.wrap(args[0], ctx.meta);
|
||||
return Reflect.apply(target, that, args);
|
||||
},
|
||||
};
|
||||
return new target(...args);
|
||||
});
|
||||
return true;
|
||||
};
|
||||
};
|
||||
function rewriteImportScripts() {
|
||||
if (ctx.originalFn.importScripts) {
|
||||
overrideFunction(ctx.window, 'importScripts', (target, that, args) => {
|
||||
if (args[0]) args[0] = ctx.url.wrap(args[0], ctx.meta);
|
||||
return target.apply(that, args);
|
||||
});
|
||||
};
|
||||
return true;
|
||||
};
|
||||
function rewriteWorklet() {
|
||||
if (ctx.originalFn.WorkletAddModule) {
|
||||
overrideFunction(ctx.window.Worklet.prototype, 'addModule', (target, that, args) => {
|
||||
console.log(args[0]);
|
||||
if (args[0]) args[0] = ctx.url.wrap(args[0], ctx.meta);
|
||||
return target.apply(that, args);
|
||||
});
|
||||
};
|
||||
};
|
||||
return function rewriteWorker() {
|
||||
rewriteWorkerConstruct();
|
||||
rewriteImportScripts();
|
||||
rewriteWorklet();
|
||||
return true;
|
||||
};
|
||||
};
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue