Loại tác vụ
reCAPTCHA v3
Trang này được dịch máy từ bản tiếng Trung và có thể có sai sót. Nội dung theo bản tiếng Trung.
reCAPTCHA v3 không có ô đánh dấu và không có hình ảnh; trang web chấm điểm người truy cập ở chế độ nền. YesCaptcha trả về một token (gRecaptchaResponse) để bạn gửi cho trang web đích. RecaptchaV3TaskProxyless có giá 20 điểm (≈ $3.00 / 1k) cho mỗi tác vụ, trả kết quả bất đồng bộ: gọi createTask trước, rồi cứ 5 giây gọi lại getTaskResult một lần. Nếu nhận dạng thất bại hoặc hết thời gian chờ, hệ thống tự động hoàn điểm.
https://api.yescaptcha.com/createTaskEndpoint quốc tếhttps://cn.yescaptcha.com/createTaskEndpoint Trung QuốcNội dung yêu cầu là JSON, xác thực bằng clientKey. Tạo tác vụ ở endpoint nào thì truy vấn kết quả ở endpoint đó.
Trường hợp áp dụng
Phần tiêu đề “Trường hợp áp dụng”- Mã nguồn trang web có
grecaptcha.execute(...), hoặc tảirecaptcha/api.js?render=SITE_KEY: reCAPTCHA v3 bản thường. - Trang gọi
grecaptcha.enterprise.execute(...), hoặc tảirecaptcha/enterprise.js: reCAPTCHA v3 Enterprise, dùngRecaptchaV3EnterpriseTaskhoặcRecaptchaV3EnterpriseTaskM1.
Cách phân biệt xem Xác định loại captcha.
Loại tác vụ và giá
Phần tiêu đề “Loại tác vụ và giá”| Loại tác vụ | Giá | Cách trả kết quả | Ghi chú |
|---|---|---|---|
RecaptchaV3TaskProxyless | $3.00 / 1k; 20 điểm/tác vụ · ¥20 / 1k | Bất đồng bộ | |
RecaptchaV3TaskProxylessM1 | $3.75 / 1k; 25 điểm/tác vụ · ¥25 / 1k | Bất đồng bộ | |
RecaptchaV3TaskProxylessM1S7 | $4.50 / 1k; 30 điểm/tác vụ · ¥30 / 1k | Bất đồng bộ | Yêu cầu điểm 0.7; không cần tham số bổ sung |
RecaptchaV3TaskProxylessM1S9 | $5.25 / 1k; 35 điểm/tác vụ · ¥35 / 1k | Bất đồng bộ | Yêu cầu điểm 0.9; không cần tham số bổ sung |
RecaptchaV3EnterpriseTask | $3.00 / 1k; 20 điểm/tác vụ · ¥20 / 1k | Bất đồng bộ | |
RecaptchaV3EnterpriseTaskM1 | $3.75 / 1k; 25 điểm/tác vụ · ¥25 / 1k | Bất đồng bộ |
Giá bằng đô la Mỹ chỉ là ước tính theo US$1 ≈ ¥6.67; tác vụ được trừ điểm.
RecaptchaV3TaskProxylessvàRecaptchaV3TaskProxylessM1có tham số giống nhau nhưng đi qua đường khác nhau, có thể dùng làm dự phòng cho nhau.- Khi trang web đích yêu cầu điểm cao, hãy dùng
RecaptchaV3TaskProxylessM1S7(0.7) hoặcRecaptchaV3TaskProxylessM1S9(0.9) với điểm cố định, không cần tham số bổ sung.
Tham số yêu cầu
Phần tiêu đề “Tham số yêu cầu”| Trường | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
type | string | Có | Loại tác vụ; xem "Loại tác vụ và giá" trên trang này |
websiteURL | string | Có | URL đầy đủ của trang hiển thị captcha. Điền trang web nơi bạn thấy captcha, không điền tên miền của nhà cung cấp captcha |
websiteKey | string | Có | Khóa trang web (sitekey), tìm trong mã nguồn trang hoặc trong các request mạng; thường không thay đổi |
pageAction | string | Không | Giá trị action của reCAPTCHA v3; phải khớp với giá trị trang truyền vào grecaptcha.execute, nếu không token có thể bị từ chối |
pageAction phải khớp với action mà trang web truyền vào khi gọi grecaptcha.execute(SITE_KEY, {action: '...'}); điền sai thì trang web có thể từ chối token. Cách tìm xem Tìm tham số reCAPTCHA.
Ví dụ yêu cầu
Phần tiêu đề “Ví dụ yêu cầu”{ "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);Thay websiteURL, websiteKey, pageAction bằng giá trị của trang web đích.
Kết quả trả về
Phần tiêu đề “Kết quả trả về”{ "errorId": 0, "status": "ready", "solution": { "gRecaptchaResponse": "03AGdBq25SxXT-pmSeBXjzScW-EiocHwwpwqtk1QXlJnGnU..." }}| Trường | Kiểu | Mô tả |
|---|---|---|
gRecaptchaResponse | string | Token cần gửi cho website đích. Chỉ dùng một lần, có hiệu lực khoảng 120 giây; nên dùng trong vòng 60 giây |
Khi đang xử lý, hệ thống trả về {"errorId": 0, "status": "processing"}; hãy truy vấn lại sau 5 giây. Khi có lỗi, xử lý theo errorCode, xem Mã lỗi. Cách gửi token sau khi nhận được xem Dùng token để vượt reCAPTCHA.
Câu hỏi thường gặp
Phần tiêu đề “Câu hỏi thường gặp”Vì sao đôi khi trang web không chấp nhận token?
Phần tiêu đề “Vì sao đôi khi trang web không chấp nhận token?”Với v3, trang web đích quyết định dựa trên điểm số, và ngưỡng do trang web đặt có thể thay đổi bất cứ lúc nào, nên không phải token nào cũng qua được. Hãy kiểm tra pageAction đã đúng chưa; nếu trang web yêu cầu điểm cao, thử M1S7, M1S9; cũng có thể so sánh với các loại tương tự khác.
Điền reCAPTCHA v3 Enterprise như thế nào?
Phần tiêu đề “Điền reCAPTCHA v3 Enterprise như thế nào?”Giống bản thường: điền websiteURL, websiteKey, pageAction, và đổi loại tác vụ thành RecaptchaV3EnterpriseTask hoặc RecaptchaV3EnterpriseTaskM1.
Token có hiệu lực trong bao lâu?
Phần tiêu đề “Token có hiệu lực trong bao lâu?”Chỉ dùng được một lần, có hiệu lực khoảng 120 giây; nên gửi trong vòng 60 giây.
Hướng dẫn liên quan
Phần tiêu đề “Hướng dẫn liên quan”- Xác định loại captcha
- Tìm tham số reCAPTCHA (gồm cách tìm
pageAction) - Dùng token để vượt reCAPTCHA