Типы задач
reCAPTCHA v3
Эта страница переведена с китайской версии машинным переводом и может содержать ошибки. Приоритет имеет китайская версия.
У reCAPTCHA v3 нет ни флажка, ни изображений: страница оценивает посетителя в фоновом режиме. YesCaptcha возвращает токен (gRecaptchaResponse), который нужно отправить на целевой сайт. RecaptchaV3TaskProxyless стоит 20 pts (≈ $3.00 / 1k) за задачу и работает асинхронно: сначала createTask, затем getTaskResult каждые 5 секунд. При ошибке распознавания или тайм-ауте баллы возвращаются автоматически.
https://api.yescaptcha.com/createTaskГлобальный endpointhttps://cn.yescaptcha.com/createTaskEndpoint для КитаяТело запроса — JSON, авторизация через clientKey. Результат запрашивайте на том же endpoint, где была создана задача.
Когда использовать
Заголовок раздела «Когда использовать»- В исходном коде страницы есть
grecaptcha.execute(...)или загружаетсяrecaptcha/api.js?render=КЛЮЧ_САЙТА: обычная версия v3. - Вызывается
grecaptcha.enterprise.execute(...)или загружаетсяrecaptcha/enterprise.js: Enterprise-версия v3, используйтеRecaptchaV3EnterpriseTaskилиRecaptchaV3EnterpriseTaskM1.
Как определить тип: Определение типа капчи.
Типы и цены
Заголовок раздела «Типы и цены»| Тип задачи | Цена | Режим | Примечания |
|---|---|---|---|
RecaptchaV3TaskProxyless | $3.00 / 1k; 20 pts/задача · ¥20 / 1k | Асинхронный | |
RecaptchaV3TaskProxylessM1 | $3.75 / 1k; 25 pts/задача · ¥25 / 1k | Асинхронный | |
RecaptchaV3TaskProxylessM1S7 | $4.50 / 1k; 30 pts/задача · ¥30 / 1k | Асинхронный | Запрашивает оценку 0.7; дополнительные параметры не нужны |
RecaptchaV3TaskProxylessM1S9 | $5.25 / 1k; 35 pts/задача · ¥35 / 1k | Асинхронный | Запрашивает оценку 0.9; дополнительные параметры не нужны |
RecaptchaV3EnterpriseTask | $3.00 / 1k; 20 pts/задача · ¥20 / 1k | Асинхронный | |
RecaptchaV3EnterpriseTaskM1 | $3.75 / 1k; 25 pts/задача · ¥25 / 1k | Асинхронный |
Цены в долларах США являются оценочными и рассчитаны по курсу 1 USD ≈ ¥6.67; списание за задачи производится в баллах.
- У
RecaptchaV3TaskProxylessиRecaptchaV3TaskProxylessM1одинаковые параметры, но разные маршруты, поэтому они могут служить резервом друг для друга. - Если целевой сайт требует высокую оценку, используйте
RecaptchaV3TaskProxylessM1S7(0.7) илиRecaptchaV3TaskProxylessM1S9(0.9): дополнительные параметры не нужны.
Параметры запроса
Заголовок раздела «Параметры запроса»| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
type | string | Да | Тип задачи; см. «Типы задач и цены» на этой странице |
websiteURL | string | Да | Полный URL страницы, на которой показывается капча. Укажите сайт, на котором вы видите капчу, а не домен поставщика капчи |
websiteKey | string | Да | Ключ сайта (sitekey), его можно найти в исходном коде страницы или в сетевых запросах; обычно не меняется |
pageAction | string | Нет | Значение action для reCAPTCHA v3; оно должно совпадать со значением, которое страница передаёт в grecaptcha.execute, иначе токен может быть отклонён |
pageAction должен совпадать со значением action, которое страница передаёт в grecaptcha.execute(КЛЮЧ_САЙТА, {action: '...'}). Если указать неверное значение, сайт может отклонить токен. Как его найти: Поиск параметров reCAPTCHA.
Пример запроса
Заголовок раздела «Пример запроса»{ "clientKey": "YOUR_CLIENT_KEY", "task": { "type": "RecaptchaV3TaskProxyless", "websiteURL": "https://example.com/login", "websiteKey": "SITE_KEY_OF_THE_PAGE", "pageAction": "login" }}curl -s https://api.yescaptcha.com/createTask \ -H 'Content-Type: application/json' \ -d '{ "clientKey": "YOUR_CLIENT_KEY", "task": { "type": "RecaptchaV3TaskProxyless", "websiteURL": "https://example.com/login", "websiteKey": "SITE_KEY_OF_THE_PAGE", "pageAction": "login" }}'
# Returns {"errorId":0,"taskId":"..."}; then poll every 5 seconds:curl -s https://api.yescaptcha.com/getTaskResult \ -H 'Content-Type: application/json' \ -d '{"clientKey": "YOUR_CLIENT_KEY", "taskId": "TASK_ID"}'import osimport time
import requests
API = "https://api.yescaptcha.com"CLIENT_KEY = os.environ["YESCAPTCHA_CLIENT_KEY"] # Read the clientKey from an environment variable
def call(method, payload): r = requests.post(f"{API}/{method}", json={"clientKey": CLIENT_KEY, **payload}, timeout=30) data = r.json() if data.get("errorId"): raise RuntimeError(f"{data.get('errorCode')}: {data.get('errorDescription')}") return data
def solve(task): task_id = call("createTask", {"task": task})["taskId"] for _ in range(36): # Poll every 5 seconds, for up to about 3 minutes time.sleep(5) result = call("getTaskResult", {"taskId": task_id}) if result.get("status") == "ready": return result["solution"] raise TimeoutError(task_id)
solution = solve({ "type": "RecaptchaV3TaskProxyless", "websiteURL": "https://example.com/login", "websiteKey": "SITE_KEY_OF_THE_PAGE", "pageAction": "login",})print(solution["gRecaptchaResponse"])const API = 'https://api.yescaptcha.com';const CLIENT_KEY = process.env.YESCAPTCHA_CLIENT_KEY; // Read the clientKey from an environment variable
async function call(method, payload) { const res = await fetch(`${API}/${method}`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ clientKey: CLIENT_KEY, ...payload }), }); const data = await res.json(); if (data.errorId) throw new Error(`${data.errorCode}: ${data.errorDescription}`); return data;}
async function solve(task) { const { taskId } = await call('createTask', { task }); for (let i = 0; i < 36; i++) { // Poll every 5 seconds, for up to about 3 minutes await new Promise((r) => setTimeout(r, 5000)); const result = await call('getTaskResult', { taskId }); if (result.status === 'ready') return result.solution; } throw new Error(`timeout: ${taskId}`);}
const solution = await solve({ type: "RecaptchaV3TaskProxyless", websiteURL: "https://example.com/login", websiteKey: "SITE_KEY_OF_THE_PAGE", pageAction: "login",});console.log(solution.gRecaptchaResponse);Замените websiteURL, websiteKey и pageAction значениями целевого сайта.
Результат
Заголовок раздела «Результат»{ "errorId": 0, "status": "ready", "solution": { "gRecaptchaResponse": "03AGdBq25SxXT-pmSeBXjzScW-EiocHwwpwqtk1QXlJnGnU..." }}| Поле | Тип | Описание |
|---|---|---|
gRecaptchaResponse | string | Токен, который нужно отправить на целевой сайт. Одноразовый, действителен около 120 секунд; используйте его в течение 60 секунд |
Пока задача выполняется, возвращается {"errorId": 0, "status": "processing"}: повторите запрос через 5 секунд. При ошибке действуйте по errorCode, см. Коды ошибок. Как отправить полученный токен, см. Прохождение reCAPTCHA с помощью токена.
Частые вопросы
Заголовок раздела «Частые вопросы»Почему сайт иногда не принимает токен?
Заголовок раздела «Почему сайт иногда не принимает токен?»В v3 решение принимает целевой сайт на основе оценки, а порог он может менять в любой момент, поэтому проходит не каждый токен. Убедитесь, что pageAction указан верно; если сайт требует высокую оценку, попробуйте M1S7 или M1S9; можно также сравнить другие типы из этого семейства.
Как заполнять Enterprise-версию v3?
Заголовок раздела «Как заполнять Enterprise-версию v3?»Так же, как обычную: websiteURL, websiteKey, pageAction, только тип нужно заменить на RecaptchaV3EnterpriseTask или RecaptchaV3EnterpriseTaskM1.
Как долго токен действителен?
Заголовок раздела «Как долго токен действителен?»Токен одноразовый и действует около 120 секунд; отправляйте его в течение 60 секунд.
Связанные руководства
Заголовок раздела «Связанные руководства»- Определение типа капчи
- Поиск параметров reCAPTCHA (в том числе как найти
pageAction) - Прохождение reCAPTCHA с помощью токена