diff options
Diffstat (limited to 'g4f/Provider/npm/node_modules/funcaptcha/lib/session.js')
-rw-r--r-- | g4f/Provider/npm/node_modules/funcaptcha/lib/session.js | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/g4f/Provider/npm/node_modules/funcaptcha/lib/session.js b/g4f/Provider/npm/node_modules/funcaptcha/lib/session.js new file mode 100644 index 00000000..e2216d3b --- /dev/null +++ b/g4f/Provider/npm/node_modules/funcaptcha/lib/session.js @@ -0,0 +1,77 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Session = void 0; +const challenge_1 = require("./challenge"); +const http_1 = require("./http"); +const util_1 = require("./util"); +let parseToken = (token) => Object.fromEntries(token + .split("|") + .map((v) => v.split("=").map((v) => decodeURIComponent(v)))); +class Session { + constructor(token, sessionOptions) { + var _a; + if (typeof token === "string") { + this.token = token; + } + else { + this.token = token.token; + } + if (!this.token.startsWith("token=")) + this.token = "token=" + this.token; + this.tokenInfo = parseToken(this.token); + this.tokenInfo.mbio = typeof (token) !== "string" ? (_a = token.mbio) !== null && _a !== void 0 ? _a : false : false; + this.userAgent = (sessionOptions === null || sessionOptions === void 0 ? void 0 : sessionOptions.userAgent) || util_1.default.DEFAULT_USER_AGENT; + this.proxy = sessionOptions === null || sessionOptions === void 0 ? void 0 : sessionOptions.proxy; + } + async getChallenge() { + let res = await (0, http_1.default)(this.tokenInfo.surl, { + path: "/fc/gfct/", + method: "POST", + body: util_1.default.constructFormData({ + sid: this.tokenInfo.r, + render_type: "canvas", + token: this.tokenInfo.token, + analytics_tier: this.tokenInfo.at, + "data%5Bstatus%5D": "init", + lang: "en", + apiBreakerVersion: "green" + }), + headers: { + "User-Agent": this.userAgent, + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Language": "en-US,en;q=0.9", + "Sec-Fetch-Site": "same-origin", + "Referer": this.getEmbedUrl() + }, + }, this.proxy); + let data = JSON.parse(res.body.toString()); + data.token = this.token; + data.tokenInfo = this.tokenInfo; + if (data.game_data.gameType == 1) { + return new challenge_1.Challenge1(data, { + proxy: this.proxy, + userAgent: this.userAgent, + }); + } + else if (data.game_data.gameType == 3) { + return new challenge_1.Challenge3(data, { + proxy: this.proxy, + userAgent: this.userAgent, + }); + } + else if (data.game_data.gameType == 4) { + return new challenge_1.Challenge4(data, { + proxy: this.proxy, + userAgent: this.userAgent, + }); + } + else { + throw new Error("Unsupported game type: " + data.game_data.gameType); + } + //return res.body.toString() + } + getEmbedUrl() { + return `${this.tokenInfo.surl}/fc/gc/?${util_1.default.constructFormData(this.tokenInfo)}`; + } +} +exports.Session = Session; |