mirror of
https://github.com/TeamPiped/piped-proxy.git
synced 2026-06-23 05:15:59 +00:00
46 lines
1.1 KiB
TypeScript
46 lines
1.1 KiB
TypeScript
import { BG, type BgConfig } from "bgutils-js";
|
|
import { JSDOM } from "jsdom";
|
|
|
|
export async function generateWebPoToken(visitorData: string) {
|
|
const requestKey = "O43z0dpjhgX20SCx4KAo";
|
|
|
|
if (!visitorData) throw new Error("Could not get visitor data");
|
|
|
|
const dom = new JSDOM();
|
|
|
|
Object.assign(globalThis, {
|
|
window: dom.window,
|
|
document: dom.window.document,
|
|
});
|
|
|
|
const bgConfig: BgConfig = {
|
|
fetch: fetch as any,
|
|
globalObj: globalThis,
|
|
identifier: visitorData,
|
|
requestKey,
|
|
};
|
|
|
|
const bgChallenge = await BG.Challenge.create(bgConfig);
|
|
|
|
if (!bgChallenge) throw new Error("Could not get challenge");
|
|
|
|
const interpreterJavascript = bgChallenge.interpreterJavascript.privateDoNotAccessOrElseSafeScriptWrappedValue;
|
|
|
|
if (interpreterJavascript) {
|
|
new Function(interpreterJavascript)();
|
|
} else throw new Error("Could not load VM");
|
|
|
|
const poTokenResult = await BG.PoToken.generate({
|
|
program: bgChallenge.program,
|
|
globalName: bgChallenge.globalName,
|
|
bgConfig,
|
|
});
|
|
|
|
const placeholderPoToken = BG.PoToken.generateColdStartToken(visitorData);
|
|
|
|
return {
|
|
visitorData,
|
|
placeholderPoToken,
|
|
poToken: poTokenResult.poToken,
|
|
};
|
|
}
|