GeeTestTask
Этот тип задач используется для решения капчи GeeTest с использованием ваших прокси.
Ваше приложение должно прислать адрес сайта, публичный ключ домена (gt
), ключ (challenge
) и прокси.
Результатом решения задачи является три или пять токенов для сабмита формы.
Прокси с авторизацией по IP пока не поддерживаются.
- Параметры
gt
,challenge
иgeetestApiServerSubdomain
чаще всего находятся внутри JavaScript функцииinitGeetest
. - Также, эти параметры можно получить из HTML кода страницы. Их можно найти в блоке
<sсript>
, который появляется после полной загрузки страницы в браузере.
V3
V4 (captcha_id = gt)
GeeTest V3
Примеры заданий
- Intelligent mode
- Slide CAPTCHA
- Icon CAPTCHA
- Space CAPTCHA
Параметры запроса
- GeeTestTaskProxyless (без прокси)
- GeeTestTask (при использовании прокси)
type
<string>requiredGeeTestTaskProxyless
websiteURL
<string>requiredАдрес страницы, на которой решается капча.
gt
<string>requiredКлюч-идентификатор GeeTest gt
для домена. Статическое значение, редко обновляется.
challenge
<string>required only for V3Меняющийся ключ.
При каждом обращении к нашему API нужно получать новое значение ключа. Если капча загружена на странице, то значение challenge
уже недействительно и вы получите в ответ error ERROR_TOKEN_EXPIRED
.
За задачи с ошибкой ERROR_TOKEN_EXPIRED
плата взимается как за успешно решённые задачи.
Нужно изучить запросы и найти тот, в котором возвращается это значение и перед каждым созданием задачи на распозн авания выполнять этот запрос и парсить challenge
из него.
version
<integer>required only for V43
geetestApiServerSubdomain
<string>optionalПоддомен сервера Geetest API (должен отличаться от api.geetest.com).
Необязательный параметр. Может потребоваться для некоторых сайтов.
geetestGetLib
<string>optionalПуть к скрипту капчи для ее отображения на странице.
Необязательный параметр. Может потребоваться для некоторых сайтов.
Отправляйте JSON в виде строки.
userAgent
<string>optionalUser-Agent браузера, используемый для решения капчи.
type
<string>requiredGeeTestTask
websiteURL
<string>requiredАдрес страницы, на которой решается капча.
gt
<string>requiredКлюч-идентификатор GeeTest gt
для домена. Статическое значение, редко обновляется.
challenge
<string>required only for V3Меняющийся ключ.
При каждом обращении к нашему API нужно получать новое значение ключа. Если капча загружена на странице, то значение challenge
уже недействительно и вы получите в ответ error ERROR_TOKEN_EXPIRED
.
За задачи с ошибкой ERROR_TOKEN_EXPIRED
плата взимается как за успешно решённые задачи.
Нужно изучить запросы и найти тот, в котором возвращается это значение и перед каждым созданием задачи на распознавания выполнять этот запрос и парсить challenge
из него.
version
<integer>required only for V43
geetestApiServerSubdomain
<string>optionalПоддомен сервера Geetest API (должен отличаться от api.geetest.com).
Необязательный параметр. Может потребоваться для некоторых сайтов.
geetestGetLib
<string>optionalПуть к скрипту капчи для ее отображения на странице.
Необязательный параметр. Может потребоваться для некоторых сайтов.
Отправляйте JSON в виде строки.
proxyType
<string>requiredhttp - обычный http/https прокси;
https - попробуйте эту опцию только если "http" не работает (требуется для некоторых кастомных прокси);
socks4 - socks4 прокси;
socks5 - socks5 прокси.
proxyAddress
<string>requiredIP адрес прокси IPv4/IPv6. Не допускается:
- использование имен хостов;
- использование прозрачных прокси (там где можно видеть IP клиента);
- использование прокси на локальных машинах.
proxyPort
<integer>requiredПорт прокси.
proxyLogin
<string>optionalЛогин прокси-сервера.
proxyPassword
<string>optionalПароль прокси-сервера.
userAgent
<string>optionalUser-Agent браузера, используемый для решения капчи.
Метод создания задачи
- GeeTestTaskProxyless (без прокси)
- GeeTestTask (при использовании прокси)
https://api.capmonster.cloud/createTask
Запрос
{
"clientKey":"YOUR_CAPMONSTER_CLOUD_API_KEY",
"task":
{
"type":"GeeTestTaskProxyless",
"websiteURL":"https://www.geetest.com/en/demo",
"gt":"022397c99c9f646f6477822485f30404",
"challenge":"7f044f48bc951ecfbfc03842b5e1fe59"
}
}
Ответ
{
"errorId":0,
"taskId":407533072
}
https://api.capmonster.cloud/createTask
Запрос
{
"clientKey":"YOUR_CAPMONSTER_CLOUD_API_KEY",
"task": {
"type":"GeeTestTask",
"websiteURL":"https://www.geetest.com/en/demo",
"gt":"022397c99c9f646f6477822485f30404",
"challenge":"7f044f48bc951ecfbfc03842b5e1fe59",
"proxyType":"http",
"proxyAddress":"8.8.8.8",
"proxyPort":8080,
"proxyLogin":"proxyLoginHere",
"proxyPassword":"proxyPasswordHere",
"userAgent":"userAgentPlaceholder"
}
}
Ответ
{
"errorId":0,
"taskId":407533072
}
Используйте метод getTaskResult, чтобы получить решение GeeTest. В зависимости от загрузки системы вы получите ответ через время в диапазоне от 10 с до 30 с.
Метод получения результата задачи
https://api.capmonster.cloud/getTaskResult
Запрос
{
"clientKey":"API_KEY",
"taskId": 407533072
}
Ответ
{
"errorId":0,
"status":"ready",
"solution": {
"challenge":"0f759dd1ea6c4wc76cedc2991039ca4f23",
"validate":"6275e26419211d1f526e674d97110e15",
"seccode":"510cd9735583edcb158601067195a5eb|jordan"
}
}
Свойство | Тип | Описание |
---|---|---|
challenge | String | Все три параметра необходимы при отправке формы на це левом сайте. |
validate | String | |
seccode | String |
Используйте библиотеку SDK
- JavaScript
- Python
- C#
// https://github.com/ZennoLab/capmonstercloud-client-js
import { CapMonsterCloudClientFactory, ClientOptions, GeeTestProxylessRequest, /*GeeTestRequest*/ } from '@zennolab_com/capmonstercloud-client';
document.addEventListener('DOMContentLoaded', async () => {
const cmcClient = CapMonsterCloudClientFactory.Create(new ClientOptions({ clientKey: '<your capmonster.cloud API key>' }));
console.log(await cmcClient.getBalance());
const geetestV3Request = new GeeTestProxylessRequest({
websiteURL: 'https://example.com/geetest.php',
gt: '81dc9bdb52d04dc20036dbd8313ed055',
challenge: 'd93591bdf7860e1e4ee2fca799911215',
});
// const geetestV3Request = new GeeTestRequest({
// websiteURL: 'https://example.com/geetest.php',
// gt: '81dc9bdb52d04dc20036dbd8313ed055',
// challenge: 'd93591bdf7860e1e4ee2fca799911215',
// userAgent: 'userAgentPlaceholder',
// proxyType: 'https',
// proxyAddress: 'https://proxy.com',
// proxyPort: 6045,
// proxyLogin: 'login',
// proxyPassword: 'password',
// });
console.log(await cmcClient.Solve(geetestV3Request));
});
# https://github.com/ZennoLab/capmonstercloud-client-python
# GeeTestV3Proxyless:
import asyncio
from capmonstercloudclient import CapMonsterClient, ClientOptions
from capmonstercloudclient.requests import GeetestProxylessRequest
client_options = ClientOptions(api_key="your_api_key") # Replace with your CapMonsterCloud API key
cap_monster_client = CapMonsterClient(options=client_options)
geetest_request = GeetestProxylessRequest(
websiteUrl="https://example.com", # Website with the captcha
gt="your_gt_value", # Replace with the 'gt' parameter
challenge="your_challenge_value" # Replace with the 'challenge' parameter
)
async def solve_captcha():
return await cap_monster_client.solve_captcha(geetest_request)
responses = asyncio.run(solve_captcha())
print(responses)
# Geetest V3
import asyncio
from capmonstercloudclient import CapMonsterClient, ClientOptions
from capmonstercloudclient.requests import GeetestRequest
client_options = ClientOptions(api_key="your_api_key") # Replace with your CapMonsterCloud API key
cap_monster_client = CapMonsterClient(options=client_options)
geetest_request = GeetestRequest(
websiteUrl="https://example.com", # Website with the captcha
gt="your_gt_value",
challenge="your_challenge_value",
proxyType="http", # Type of proxy (http, https, socks4, socks5)
proxyAddress="8.8.8.8",
proxyPort=8080,
proxyLogin="proxyLoginHere",
proxyPassword="proxyPasswordHere",
user_agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36" # Use the current userAgent
)
async def solve_captcha():
return await cap_monster_client.solve_captcha(geetest_request)
responses = asyncio.run(solve_captcha())
print(responses)
// https://github.com/ZennoLab/capmonstercloud-client-dotnet
// GeeTestV3Proxyless:
using Zennolab.CapMonsterCloud.Requests;
using Zennolab.CapMonsterCloud;
class Program
{
static async Task Main(string[] args)
{
var clientOptions = new ClientOptions
{
ClientKey = "your_api_key" // Replace with your CapMonster Cloud API key
};
var cmCloudClient = CapMonsterCloudClientFactory.Create(clientOptions);
var geetestRequest = new GeeTestProxylessRequest
{
WebsiteUrl = "https://example.com/demo/geetest", // URL with the captcha
Gt = "your_gt_value", // Replace with the actual gt value
Challenge = "your_challenge_value" // Replace with the actual challenge value
};
var geetestResult = await cmCloudClient.SolveAsync(geetestRequest);
Console.WriteLine("Captcha Solution:");
Console.WriteLine($"Challenge: {geetestResult.Solution.Challenge}");
Console.WriteLine($"Validate: {geetestResult.Solution.Validate}");
Console.WriteLine($"SecCode: {geetestResult.Solution.SecCode}");
}
}
// Geetest V3
using Zennolab.CapMonsterCloud.Requests;
using Zennolab.CapMonsterCloud;
class Program
{
static async Task Main(string[] args)
{
var clientOptions = new ClientOptions
{
ClientKey = "your_api_key" // Replace with your CapMonster Cloud API key
};
var cmCloudClient = CapMonsterCloudClientFactory.Create(clientOptions);
var geetestRequest = new GeeTestRequest
{
WebsiteUrl = "https://example.com/demo/geetest", // URL with the captcha
Gt = "your_gt_value", // Replace with the actual gt value
Challenge = "your_challenge_value",
ProxyType = ProxyType.Http,
ProxyAddress = "8.8.8.8",
ProxyPort = 8080,
ProxyLogin = "proxyLoginHere",
ProxyPassword = "proxyPasswordHere"
};
var geetestResult = await cmCloudClient.SolveAsync(geetestRequest);
Console.WriteLine("Captcha Solution:");
Console.WriteLine($"Challenge: {geetestResult.Solution.Challenge}");
Console.WriteLine($"Validate: {geetestResult.Solution.Validate}");
Console.WriteLine($"SecCode: {geetestResult.Solution.SecCode}");
}
}