Skip to content

Commit

Permalink
Geetest V4
Browse files Browse the repository at this point in the history
  • Loading branch information
Furry committed Mar 29, 2024
1 parent 74799c4 commit 825fe92
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 4 deletions.
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "2captcha",
"version": "4.0.0@next",
"version": "4.0.0",
"description": "An asynchronous wrapper around the 2captcha API.",
"main": "dist/index.js",
"repository": "https://github.com/furry/2captcha",
Expand Down
31 changes: 30 additions & 1 deletion src/structs/solver.ts
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ import {
Task,
TurnstileDefault,
TurnstileResult,
GeetestV4Result,
} from "../types.js";

import { toBase64, toQueryString } from "../utils/conversions.js";
Expand Down Expand Up @@ -475,6 +476,31 @@ export class Solver {
return this.registerPollEntry(cid);
}


/**
* Solves a GeeTest v4 captcha
* @param pageurl The URL of the page the captcha appears on.
* @param proxied Whether to use a user provied proxy to solve this captcha.
* @param extra Any extra parameters to send to the solver.
* @throws {SolverError}
* @returns {Promise<CaptchaResult<GeetestV4Result>>}
*/
public async geetestV4<T extends boolean>(
pageurl: string, proxied: T = false as T,
extra: T extends false ? GeetestExtrasV4 : GeetestExtrasV4 | ProxiedCaptchaExtras
): Promise<CaptchaResult<GeetestV4Result>> {
const cid = await this.newTask({
task: {
type: proxied ? "GeeTestTask" : "GeeTestTaskProxyless",
websiteURL: pageurl,
version: 4,
...extra
}
})

return this.registerPollEntry(cid);
}

/**
* Solves a GeeTest captcha.
* @param pageurl URL of the page the captcha appears on.
Expand All @@ -485,7 +511,10 @@ export class Solver {
* @throws {SolverError}
* @returns {Promise<CaptchaResult<GeetestResult>>}
*/
public async geetest(pageurl: string, gt: string, challenge: string, proxied = false, extra: GeetestExtrasV3 | GeetestExtrasV4): Promise<CaptchaResult<GeetestResult>> {
public async geetest<T extends boolean>(
pageurl: string, gt: string, challenge: string,
proxied: T = false as T,
extra: T extends false ? GeetestExtrasV3 : GeetestExtrasV3 | ProxiedCaptchaExtras): Promise<CaptchaResult<GeetestResult>> {
const cid = await this.newTask({
task: {
type: proxied ? "GeeTestTask" : "GeeTestTaskProxyless",
Expand Down
2 changes: 0 additions & 2 deletions src/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -174,7 +174,6 @@ export interface TurnstileExtras {
}

export interface GeetestExtrasV4 {
version: 4
initParameters?: {
captcha_id: string
}
Expand All @@ -183,7 +182,6 @@ export interface GeetestExtrasV4 {
export interface GeetestExtrasV3 {
geetestApiServerSubdomain: string,
useragent: string,
version: 3
}


Expand Down

0 comments on commit 825fe92

Please sign in to comment.