piped-proxy/sabr_test/utils.ts
2025-05-29 04:57:44 +05:30

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,
};
}