Parser_PayLoad_JVC_Html_Or_Str
Dit script moet niet direct worden geïnstalleerd - het is een bibliotheek voor andere scripts om op te nemen met de meta-richtlijn // @require https://update.greasyfork.org/scripts/588212/1908643/Parser_PayLoad_JVC.js
// Parser_JVC_PayLoad.js
// ASYNCH
async function getPayloadFromHtml(doc) {
//Test base64(gzip(JSON))
try {
const payload64 = [...doc.scripts].map(s => s.textContent.match(/jvc\.\w+Payload\s*=\s*["']([^"']+)["']/)).find(Boolean)?.[1];
if (payload64) {
const bytes = Uint8Array.from(atob(payload64), c => c.charCodeAt(0));
const decompressedStream = new Blob([bytes]).stream().pipeThrough(new DecompressionStream('gzip'));
return await new Response(decompressedStream).json();
}
} catch {}
//Test base64(JSON)
try {
const payload64 = [...doc.scripts].map(s => s.textContent.match(/jvc\.\w+Payload\s*=\s*["']([^"']+)["']/)).find(Boolean)?.[1];
if (payload64) return JSON.parse(atob(payload64));
} catch {}
//Test natif
try {
const payload = [...doc.scripts].map(s => s.textContent.match(/jvc\.\w*payload\s*=\s*(\{[\s\S]*?\})\s*;/i)).find(Boolean)?.[1];
if (payload) return JSON.parse(payload);
} catch {}
return null;
}
async function getPayloadFromRaw(rawData) {
//Test base64(gzip(JSON))
try {
const payload64 = rawData.match(/jvc\.\w+Payload\s*=\s*["']([^"']+)["']/)?.[1];
if (payload64) {
const bytes = Uint8Array.from(atob(payload64), c => c.charCodeAt(0));
const decompressedStream = new Blob([bytes]).stream().pipeThrough(new DecompressionStream('gzip'));
return await new Response(decompressedStream).json();
}
} catch {}
//Test base64(JSON)
try {
const payload64 = rawData.match(/jvc\.\w+Payload\s*=\s*["']([^"']+)["']/)?.[1];
if (payload64) return JSON.parse(atob(payload64));
} catch {}
//Test natif
try {
const scripts = rawData.match(/<script\b[^>]*>[\s\S]*?<\/script>/gi) || [];
const payload = scripts.map(s => s.match(/jvc\.\w*payload\s*=\s*(\{[\s\S]*?\})\s*;/i)).find(Boolean)?.[1];
if (payload) return JSON.parse(payload);
} catch {}
return null;
}