Типы капч
reCAPTCHA v2#
Типы RecaptchaV2TaskProxyless и RecaptchaV2Task.
| Параметр | Обязательный | Тип | Описание |
|---|---|---|---|
websiteURL |
да | string | Полный URL страницы, где размещена капча |
websiteKey |
да | string | Значение атрибута data-sitekey виджета reCAPTCHA |
isInvisible |
нет | bool | true для невидимой reCAPTCHA. По умолчанию false |
recaptchaDataSValue |
нет | string | Значение параметра data-s, которое может потребоваться на сервисах Google |
userAgent |
нет | string | User-Agent браузера, используемого для загрузки капчи |
cookies |
нет | string | Cookies в формате name1=value1; name2=value2, если для решения важна сессия |
apiDomain |
нет | string | Домен, с которого загружается reCAPTCHA: google.com или recaptcha.net. По умолчанию google.com |
Только для RecaptchaV2Task (решение через ваш прокси), дополнительно:
| Параметр | Обязательный | Тип | Описание |
|---|---|---|---|
proxyType |
да | string | http, socks4 или socks5 |
proxyAddress |
да | string | IP-адрес или хост прокси |
proxyPort |
да | int | Порт прокси |
proxyLogin |
нет | string | Логин для авторизации на прокси |
proxyPassword |
нет | string | Пароль для авторизации на прокси |
Примеры объекта task
// RecaptchaV2TaskProxyless
{
"type": "RecaptchaV2TaskProxyless",
"websiteURL": "https://example.com/login",
"websiteKey": "6Le-xxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"isInvisible": false
}
// RecaptchaV2Task (ваш прокси)
{
"type": "RecaptchaV2Task",
"websiteURL": "https://example.com/login",
"websiteKey": "6Le-xxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"proxyType": "http",
"proxyAddress": "1.2.3.4",
"proxyPort": 8080,
"proxyLogin": "user",
"proxyPassword": "password",
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) ..."
}
Пример ответа getTaskResult
Пока задача находится в обработке:
{
"errorId": 0,
"status": "processing"
}
После успешного решения:
{
"errorId": 0,
"status": "ready",
"solution": {
"gRecaptchaResponse": "03AGdBq..."
}
}
Значение solution.gRecaptchaResponse необходимо передать в виджет reCAPTCHA или в параметр g-recaptcha-response формы.
reCAPTCHA v2 Enterprise#
Типы RecaptchaV2EnterpriseTaskProxyless и RecaptchaV2EnterpriseTask.
| Параметр | Обязательный | Тип | Описание |
|---|---|---|---|
websiteURL |
да | string | Полный URL страницы, где размещена капча |
websiteKey |
да | string | Значение атрибута data-sitekey виджета reCAPTCHA Enterprise |
enterprisePayload |
нет | object | Дополнительные параметры вызова grecaptcha.enterprise.render, если сайт их передаёт, например значение s |
isInvisible |
нет | bool | true для невидимой reCAPTCHA. По умолчанию false |
apiDomain |
нет | string | Домен, с которого загружается reCAPTCHA: google.com или recaptcha.net. По умолчанию google.com |
userAgent |
нет | string | User-Agent браузера, используемого для загрузки капчи |
cookies |
нет | string | Cookies в формате name1=value1; name2=value2, если для решения важна сессия |
Только для RecaptchaV2EnterpriseTask (решение через ваш прокси), дополнительно:
| Параметр | Обязательный | Тип | Описание |
|---|---|---|---|
proxyType |
да | string | http, socks4 или socks5 |
proxyAddress |
да | string | IP-адрес или хост прокси |
proxyPort |
да | int | Порт прокси |
proxyLogin |
нет | string | Логин для авторизации на прокси |
proxyPassword |
нет | string | Пароль для авторизации на прокси |
Примеры объекта task
// RecaptchaV2EnterpriseTaskProxyless
{
"type": "RecaptchaV2EnterpriseTaskProxyless",
"websiteURL": "https://example.com/login",
"websiteKey": "6Le-xxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"isInvisible": false
}
// RecaptchaV2EnterpriseTask (ваш прокси)
{
"type": "RecaptchaV2EnterpriseTask",
"websiteURL": "https://example.com/login",
"websiteKey": "6Le-xxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"isInvisible": false,
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) ...",
"cookies": "foo=bar; baz=1",
"proxyType": "http",
"proxyAddress": "1.2.3.4",
"proxyPort": 8080,
"proxyLogin": "user",
"proxyPassword": "password"
}
Пример ответа getTaskResult
Пока задача находится в обработке:
{
"errorId": 0,
"status": "processing"
}
После успешного решения:
{
"errorId": 0,
"status": "ready",
"solution": {
"gRecaptchaResponse": "03AGdBq2kX9Lm...QpZr8vN3sT"
}
}
Значение solution.gRecaptchaResponse передаётся так же, как токен обычной reCAPTCHA v2, в виджет или в параметр g-recaptcha-response формы.
Метод Enterprise использует API reCAPTCHA Enterprise. Если сайт передаёт дополнительные параметры через enterprisePayload, включите их в запрос.
reCAPTCHA v3#
Тип RecaptchaV3TaskProxyless. Прокси для v3 не требуется. Задачи решаются с IP-адресов сервиса.
| Параметр | Обязательный | Тип | Описание |
|---|---|---|---|
websiteURL |
да | string | Полный URL страницы с капчей |
websiteKey |
да | string | Site key виджета reCAPTCHA v3 |
minScore |
да | float | Требуемый score. Поддерживаются значения 0.3, 0.7 и 0.9 |
pageAction |
нет | string | Значение параметра action, которое сайт передаёт при вызове grecaptcha.execute() |
isEnterprise |
нет | bool | true, если на сайте используется reCAPTCHA v3 Enterprise |
apiDomain |
нет | string | Домен, с которого загружается скрипт reCAPTCHA: google.com или recaptcha.net. По умолчанию google.com |
Пример объекта task
// RecaptchaV3TaskProxyless
{
"type": "RecaptchaV3TaskProxyless",
"websiteURL": "https://example.com/login",
"websiteKey": "6Le-xxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"minScore": 0.3,
"pageAction": "login",
"isEnterprise": false
}
Пример ответа getTaskResult
Пока задача находится в обработке:
{
"errorId": 0,
"status": "processing"
}
После успешного решения:
{
"errorId": 0,
"status": "ready",
"solution": {
"gRecaptchaResponse": "03AGdBq..."
}
}
Полученный токен (solution.gRecaptchaResponse) используется так же, как обычный токен reCAPTCHA v3.
Поиск sitekey и callback-функции reCAPTCHA на странице#
Если на странице несколько виджетов reCAPTCHA или callback не виден напрямую в разметке, найти sitekey и функцию обратного вызова можно через объект ___grecaptcha_cfg, в котором Google хранит конфигурацию отрендеренных виджетов. Выполните следующий код в консоли разработчика или встроите его в скрипт автоматизации. Он вернёт массив найденных клиентов reCAPTCHA вместе с их sitekey, pageurl и ссылкой на callback.
function findRecaptchaClients() {
// eslint-disable-next-line camelcase
if (typeof (___grecaptcha_cfg) !== 'undefined') {
// eslint-disable-next-line camelcase, no-undef
return Object.entries(___grecaptcha_cfg.clients).map(([cid, client]) => {
const data = { id: cid, version: cid >= 10000 ? 'V3' : 'V2' };
const objects = Object.entries(client).filter(([_, value]) => value && typeof value === 'object');
objects.forEach(([toplevelKey, toplevel]) => {
const found = Object.entries(toplevel).find(([_, value]) => (
value && typeof value === 'object' && 'sitekey' in value && 'size' in value
));
if (typeof toplevel === 'object' && toplevel instanceof HTMLElement && toplevel['tagName'] === 'DIV') {
data.pageurl = toplevel.baseURI;
}
if (found) {
const [sublevelKey, sublevel] = found;
data.sitekey = sublevel.sitekey;
const callbackKey = data.version === 'V2' ? 'callback' : 'promise-callback';
const callback = sublevel[callbackKey];
if (!callback) {
data.callback = null;
data.function = null;
} else {
data.function = callback;
const keys = [cid, toplevelKey, sublevelKey, callbackKey]
.map((key) => `['${key}']`)
.join('');
data.callback = `___grecaptcha_cfg.clients${keys}`;
}
}
});
return data;
});
}
return [];
}
Использование:
let res = findRecaptchaClients()
console.log(res)
Для каждого найденного клиента data.version указывает, используется ли v2 или v3. data.sitekey содержит значение для поля websiteKey в запросе createTask. data.callback содержит путь к функции обратного вызова, которую нужно выполнить с токеном после получения решения.
Cloudflare Turnstile#
Типы TurnstileTaskProxyless и TurnstileTask.
| Параметр | Обязательный | Тип | Описание |
|---|---|---|---|
websiteURL |
да | string | Полный URL страницы, где расположен виджет Turnstile |
websiteKey |
да | string | Значение атрибута data-sitekey виджета Turnstile |
action |
нет* | string | Значение параметра action из вызова turnstile.render. Обязательно для страниц Cloudflare Challenge |
data |
нет* | string | Значение параметра cData из вызова turnstile.render. Обязательно для страниц Cloudflare Challenge |
pagedata |
нет* | string | Значение параметра chlPageData из вызова turnstile.render. Обязательно для страниц Cloudflare Challenge |
Только для TurnstileTask (решение через ваш прокси), дополнительно:
| Параметр | Обязательный | Тип | Описание |
|---|---|---|---|
proxyType |
да | string | http, socks4 или socks5 |
proxyAddress |
да | string | IP-адрес или хост прокси |
proxyPort |
да | int | Порт прокси |
proxyLogin |
нет | string | Логин для авторизации на прокси |
proxyPassword |
нет | string | Пароль для авторизации на прокси |
Примеры объекта task
// TurnstileTaskProxyless
{
"type": "TurnstileTaskProxyless",
"websiteURL": "https://example.com/login",
"websiteKey": "0x4AAAAAAAxxxxxxxxxxxxxxxx"
}
// TurnstileTask (ваш прокси)
{
"type": "TurnstileTask",
"websiteURL": "https://example.com/login",
"websiteKey": "0x4AAAAAAAxxxxxxxxxxxxxxxx",
"proxyType": "http",
"proxyAddress": "1.2.3.4",
"proxyPort": 8080
}
Пример ответа getTaskResult
Пока задача находится в обработке:
{
"errorId": 0,
"status": "processing"
}
После успешного решения:
{
"errorId": 0,
"status": "ready",
"solution": {
"token": "0.zxcv..."
}
}
Полученный токен (solution.token) необходимо передать в callback-функцию виджета или в поле cf-turnstile-response, в зависимости от способа интеграции Turnstile на вашем сайте.
Сложный случай: Cloudflare Challenge page#
Отдельная и более сложная ситуация — страница Cloudflare Challenge. Помимо websiteKey, виджету передаются дополнительные параметры cData, chlPageData и action. В этом случае необходимо перехватить вызов turnstile.render, чтобы получить эти значения. Также необходимо перехватить определение callback-функции.
Для перехвата параметров встроите следующий JavaScript на страницу до загрузки самого виджета Cloudflare Turnstile:
const i = setInterval(() => {
if (window.turnstile) {
clearInterval(i)
window.turnstile.render = (a, b) => {
let p = {
type: "TurnstileTaskProxyless",
websiteKey: b.sitekey,
websiteURL: window.location.href,
data: b.cData,
pagedata: b.chlPageData,
action: b.action
}
console.log(JSON.stringify(p))
window.tsCallback = b.callback
return 'foo'
}
}
}, 10)
Скрипт заменяет turnstile.render собственной функцией. Она перехватывает объект конфигурации b, в котором Cloudflare передаёт sitekey, cData, chlPageData, action и callback. Скрипт выводит объект task для createTask и сохраняет ссылку на исходную callback-функцию в window.tsCallback, чтобы вызвать её позже с токеном.
Альтернативный подход — перехватить сетевой запрос к скрипту api.js и заменить его собственным скриптом. Этот скрипт возвращает необходимые параметры и делает callback-функцию глобально доступной.
Когда решение получено от getTaskResult, выполните сохранённую callback-функцию, передав токен в качестве аргумента:
window.tsCallback('ТОКЕН_ИЗ_SOLUTION');
Yandex SmartCaptcha#
Есть два способа решения Yandex SmartCaptcha: по токену и по изображению.
YandexSmartCaptchaTaskProxyless— решение токеном через наши проксиYandexSmartCaptchaTask— решение токеном через ваши проксиCoordinatesTask— решение по изображению, возвращает координаты кликов
Token-based solving#
Типы YandexSmartCaptchaTaskProxyless и YandexSmartCaptchaTask.
| Параметр | Обязательный | Тип | Описание |
|---|---|---|---|
websiteURL |
да | string | Полный URL страницы, где загружена капча |
websiteKey |
да | string | Значение sitekey из кода страницы или iframe капчи |
userAgent |
нет | string | User-Agent, под которым решается капча |
cookies |
нет | string | Cookies в формате name1=value1;name2=value2 |
Только для YandexSmartCaptchaTask (решение через ваш прокси), дополнительно:
| Параметр | Обязательный | Тип | Описание |
|---|---|---|---|
proxyType |
да | string | http, https, socks4 или socks5 |
proxyAddress |
да | string | IP-адрес или хост прокси |
proxyPort |
да | int | Порт прокси |
proxyLogin |
нет | string | Логин для авторизации на прокси |
proxyPassword |
нет | string | Пароль для авторизации на прокси |
Примеры объекта task
// YandexSmartCaptchaTaskProxyless
{
"type": "YandexSmartCaptchaTaskProxyless",
"websiteURL": "https://example.com/login",
"websiteKey": "Y5Lh0ti..."
}
// YandexSmartCaptchaTask (ваш прокси)
{
"type": "YandexSmartCaptchaTask",
"websiteURL": "https://example.com/login",
"websiteKey": "Y5Lh0ti...",
"proxyType": "http",
"proxyAddress": "1.2.3.4",
"proxyPort": 8080
}
Пример ответа getTaskResult
Пока задача находится в обработке:
{
"errorId": 0,
"status": "processing"
}
После успешного решения:
{
"errorId": 0,
"status": "ready",
"solution": {
"token": "dV9xNjYyNTU3NjkxO4k9OTQuNVMuMjkuMjM9..."
}
}
solution.token необходимо использовать в поле smart-token или передать на бэкенд вашего сайта так же, как при ручном решении капчи.
Image-based Yandex SmartCaptcha#
Картиночный вариант решается с помощью CoordinatesTask и возвращает координаты кликов.
| Параметр | Обязательный | Тип | Описание |
|---|---|---|---|
body |
да | string | Изображение капчи в Base64. Также поддерживается формат Data URI |
imgType |
да | string | Режим капчи: smart_captcha |
imgInstructions |
нет* | string | Изображение-инструкция в Base64. Обязательно при imgType=smart_captcha |
comment |
нет* | string | Текстовая подсказка воркеру. Рекомендуется при imgType=smart_captcha, например select objects in the order of the instruction |
Пример объекта task
{
"type": "CoordinatesTask",
"body": "BASE64_IMAGE",
"imgType": "smart_captcha",
"imgInstructions": "BASE64_INSTRUCTION_IMAGE",
"comment": "select objects in the order of the instruction"
}
Пример ответа getTaskResult
Пока задача находится в обработке:
{
"errorId": 0,
"status": "processing"
}
После успешного решения:
{
"errorId": 0,
"status": "ready",
"solution": {
"coordinates": [
{ "x": 57, "y": 82 },
{ "x": 239, "y": 75 },
{ "x": 138, "y": 113 }
]
}
}
Для smart_captcha передавайте imgInstructions с визуальной инструкцией. Используйте comment, чтобы при необходимости уточнить требуемое действие.
Остальные опциональные поля CoordinatesTask, такие как minClicks и maxClicks, описаны в секции Coordinates ниже.
Изображение в текст (Image to Text)#
Тип ImageToTextTask. Прокси не требуется. Изображение капчи отправляется напрямую.
| Параметр | Обязателен | Тип | Описание |
|---|---|---|---|
body |
да | string | Изображение капчи в Base64. Также поддерживается формат Data URI |
phrase |
нет | bool | true, если ответ должен содержать как минимум два слова, разделённых пробелом. По умолчанию false |
case |
нет | bool | true, если результат чувствителен к регистру. По умолчанию false |
numeric |
нет | int | Подсказка по набору символов: 0 — без ограничений, 1 — только цифры, 2 — только буквы, 3 — только цифры или буквы, 4 — обязательно должны присутствовать и цифры, и буквы |
math |
нет | bool | true, если капча требует выполнить вычисление. По умолчанию false |
minLength |
нет | int | Минимальная длина ответа. 0 означает отсутствие минимального ограничения |
maxLength |
нет | int | Максимальная длина ответа. 0 означает отсутствие максимального ограничения |
comment |
нет | string | Подсказка воркеру, который решает изображение |
imgInstructions |
нет | string | Опциональное изображение-инструкция в Base64, которое показывается воркеру вместе с изображением капчи |
Пример объекта task
{
"type": "ImageToTextTask",
"body": "iVBORw0KGgoAAAANSUhEUgAA...",
"numeric": 1,
"minLength": 4,
"maxLength": 6
}
Пример ответа getTaskResult
Пока задача находится в обработке:
{
"errorId": 0,
"status": "processing"
}
После успешного решения:
{
"errorId": 0,
"status": "ready",
"solution": {
"text": "aB3fX9"
}
}
solution.text — распознанный текст. Передайте его в целевое поле формы так же, как ответ, введённый вручную.
Coordinates#
Тип CoordinatesTask. Прокси не требуется. Изображение капчи отправляется напрямую. Воркер определяет нужные точки на изображении, а API возвращает их координаты.
| Параметр | Обязателен | Тип | Описание |
|---|---|---|---|
body |
да | string | Изображение капчи в Base64. Также поддерживается формат Data URI |
comment |
нет | string | Подсказка воркеру, который решает изображение, например click on the green apple |
imgInstructions |
нет | string | Опциональное изображение-инструкция в Base64, которое показывается воркеру вместе с изображением капчи |
minClicks |
нет | int | Минимальное количество кликов по изображению. По умолчанию 1 |
maxClicks |
нет | int | Максимальное количество кликов по изображению |
Пример объекта task
{
"type": "CoordinatesTask",
"body": "iVBORw0KGgoAAAANSUhEUgAA...",
"comment": "click on the green apple"
}
Пример ответа getTaskResult
Пока задача находится в обработке:
{
"errorId": 0,
"status": "processing"
}
После успешного решения:
{
"errorId": 0,
"status": "ready",
"solution": {
"coordinates": [
{
"x": 358,
"y": 268
}
]
}
}
solution.coordinates — массив позиций {x, y} в пикселях. Кликните по каждой позиции в возвращённом порядке или используйте координаты в соответствии с вашей интеграцией.
CoordinatesTask также используется для картиночного варианта Yandex SmartCaptcha. См. раздел Image-based Yandex SmartCaptcha выше.
GeeTest v3#
Типы GeeTestTaskProxyless и GeeTestTask. Эти же типы используются для GeeTest v4. Версия выбирается с помощью поля version. По умолчанию используется версия 3.
| Параметр | Обязательный | Тип | Описание |
|---|---|---|---|
websiteURL |
да | string | Полный URL страницы, где расположен виджет GeeTest |
version |
нет | int | Версия GeeTest: 3 или 4. По умолчанию 3 |
gt |
да | string | Публичное значение gt виджета GeeTest |
challenge |
да | string | Значение challenge для текущей сессии, полученное со страницы. Получайте новое значение для каждой задачи |
geetestApiServerSubdomain |
нет | string | Пользовательский поддомен API-сервера GeeTest, если страница его использует |
initParameters |
нет | object | Дополнительные параметры, передаваемые при инициализации GeeTest |
userAgent |
нет | string | User-Agent браузера, используемого для загрузки капчи |
risk_type |
нет | string | Динамическое значение risk_type, передаваемое в запросе загрузки капчи |
Только для GeeTestTask (решение через ваш прокси), дополнительно:
| Параметр | Обязательный | Тип | Описание |
|---|---|---|---|
proxyType |
да | string | http, socks4 или socks5 |
proxyAddress |
да | string | IP-адрес или хост прокси |
proxyPort |
да | int | Порт прокси |
proxyLogin |
нет | string | Логин для авторизации на прокси |
proxyPassword |
нет | string | Пароль для авторизации на прокси |
Примеры объекта task
// GeeTestTaskProxyless
{
"type": "GeeTestTaskProxyless",
"websiteURL": "https://example.com/login",
"gt": "f2ae6cadcf7886856696c46d84d109d1",
"challenge": "12345678abc90123d45678e90123f45g6"
}
// GeeTestTask (ваш прокси)
{
"type": "GeeTestTask",
"websiteURL": "https://example.com/login",
"gt": "f2ae6cadcf7886856696c46d84d109d1",
"challenge": "12345678abc90123d45678e90123f45g6",
"proxyType": "http",
"proxyAddress": "1.2.3.4",
"proxyPort": 8080
}
Пример ответа getTaskResult
Пока задача находится в обработке:
{
"errorId": 0,
"status": "processing"
}
После успешного решения:
{
"errorId": 0,
"status": "ready",
"solution": {
"challenge": "12345678abc90123d45678e90123f45g6",
"validate": "0a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p",
"seccode": "0a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p|jordan"
}
}
Передайте solution.validate и solution.seccode в callback GeeTest на странице в соответствии с интеграцией целевого сайта.
GeeTest v4#
Те же типы, что и для GeeTest v3: GeeTestTaskProxyless и GeeTestTask. Установите version в 4, чтобы использовать GeeTest v4.
| Параметр | Обязательный | Тип | Описание |
|---|---|---|---|
websiteURL |
да | string | Полный URL страницы, где расположен виджет GeeTest v4 |
version |
да | int | Должно быть 4 |
initParameters |
да | object | Должен содержать captcha_id, статический идентификатор капчи виджета |
userAgent |
нет | string | User-Agent браузера, используемого для загрузки капчи |
risk_type |
нет | string | Динамическое значение risk_type, передаваемое в запросе загрузки капчи |
Только для GeeTestTask (решение через ваш прокси), дополнительно:
| Параметр | Обязательный | Тип | Описание |
|---|---|---|---|
proxyType |
да | string | http, socks4 или socks5 |
proxyAddress |
да | string | IP-адрес или хост прокси |
proxyPort |
да | int | Порт прокси |
proxyLogin |
нет | string | Логин для авторизации на прокси |
proxyPassword |
нет | string | Пароль для авторизации на прокси |
Примеры объекта task
// GeeTestTaskProxyless (v4)
{
"type": "GeeTestTaskProxyless",
"websiteURL": "https://example.com/login",
"version": 4,
"initParameters": {
"captcha_id": "e392e65f912c780f2c3ebac7702651de"
}
}
// GeeTestTask (v4, ваш прокси)
{
"type": "GeeTestTask",
"websiteURL": "https://example.com/login",
"version": 4,
"initParameters": {
"captcha_id": "e392e65f912c780f2c3ebac7702651de"
},
"proxyType": "http",
"proxyAddress": "1.2.3.4",
"proxyPort": 8080
}
Пример ответа getTaskResult
Пока задача находится в обработке:
{
"errorId": 0,
"status": "processing"
}
После успешного решения:
{
"errorId": 0,
"status": "ready",
"solution": {
"captcha_id": "e392e65f912c780f2c3ebac7702651de",
"lot_number": "...",
"pass_token": "...",
"gen_time": "...",
"captcha_output": "..."
}
}
solution.lot_number, pass_token, gen_time и captcha_output вместе образуют результат GeeTest v4. Передайте их в callback GeeTest на странице без изменений.
Tencent#
Типы TencentTaskProxyless и TencentTask.
| Параметр | Обязательный | Тип | Описание |
|---|---|---|---|
websiteURL |
да | string | Полный URL страницы, где загружена капча |
appId |
да | string | Значение параметра appId из исходного кода страницы |
captchaScript |
нет | string | URL скрипта капчи из исходного кода страницы. По умолчанию: https://turing.captcha.qcloud.com/TCaptcha.js |
Только для TencentTask (решение через ваш прокси), дополнительно:
| Параметр | Обязательный | Тип | Описание |
|---|---|---|---|
proxyType |
да | string | http, socks4 или socks5 |
proxyAddress |
да | string | IP-адрес или хост прокси |
proxyPort |
да | int | Порт прокси |
proxyLogin |
нет | string | Логин для авторизации на прокси |
proxyPassword |
нет | string | Пароль для авторизации на прокси |
Примеры объекта task
// TencentTaskProxyless
{
"type": "TencentTaskProxyless",
"websiteURL": "https://example.com/login",
"appId": "190014885"
}
// TencentTask (ваш прокси)
{
"type": "TencentTask",
"websiteURL": "https://example.com/login",
"appId": "190014885",
"proxyType": "http",
"proxyAddress": "1.2.3.4",
"proxyPort": 8080
}
Пример ответа getTaskResult
Пока задача находится в обработке:
{
"errorId": 0,
"status": "processing"
}
После успешного решения:
{
"errorId": 0,
"status": "ready",
"solution": {
"appid": "190014885",
"ret": 0,
"ticket": "tr0344YjJASGmJGtohyWS_y6tJKiqVPIdFgl87vWlVaQoueR8D6DH28go-i-VjeassM31SXO7D0*",
"randstr": "@KVN"
}
}
solution.appid, ret, ticket и randstr вместе образуют результат Tencent. Передайте их в callback капчи на странице без изменений.