Jenis tugas
reCAPTCHA v3
Halaman ini diterjemahkan otomatis dari versi bahasa Mandarin dan mungkin mengandung kesalahan. Versi bahasa Mandarin menjadi acuan utama.
reCAPTCHA v3 tidak punya kotak centang dan tidak menampilkan gambar; halaman web memberi skor kepada pengunjung di latar belakang. YesCaptcha mengembalikan sebuah token (gRecaptchaResponse) yang Anda kirimkan ke situs target. RecaptchaV3TaskProxyless dikenai biaya 20 poin (≈ $3.00 / 1k) per tugas dan berjalan asinkron: panggil createTask, lalu getTaskResult setiap 5 detik. Jika gagal atau timeout, poin dikembalikan otomatis.
https://api.yescaptcha.com/createTaskEndpoint globalhttps://cn.yescaptcha.com/createTaskEndpoint TiongkokBody permintaan berupa JSON, dengan autentikasi memakai clientKey. Hasil tugas harus diperiksa di endpoint yang sama dengan tempat tugas dibuat.
Kapan digunakan
Section titled “Kapan digunakan”- Source halaman berisi
grecaptcha.execute(...), atau memuatrecaptcha/api.js?render=KUNCI_SITUS: reCAPTCHA v3 biasa. - Halaman memanggil
grecaptcha.enterprise.execute(...), atau memuatrecaptcha/enterprise.js: reCAPTCHA v3 Enterprise, gunakanRecaptchaV3EnterpriseTaskatauRecaptchaV3EnterpriseTaskM1.
Cara membedakannya ada di Mengenali jenis captcha.
Jenis tugas dan harga
Section titled “Jenis tugas dan harga”| Jenis tugas | Harga | Mode | Catatan |
|---|---|---|---|
RecaptchaV3TaskProxyless | $3.00 / 1k; 20 poin/tugas · ¥20 / 1k | Asinkron | |
RecaptchaV3TaskProxylessM1 | $3.75 / 1k; 25 poin/tugas · ¥25 / 1k | Asinkron | |
RecaptchaV3TaskProxylessM1S7 | $4.50 / 1k; 30 poin/tugas · ¥30 / 1k | Asinkron | Meminta skor 0.7; tidak perlu parameter tambahan |
RecaptchaV3TaskProxylessM1S9 | $5.25 / 1k; 35 poin/tugas · ¥35 / 1k | Asinkron | Meminta skor 0.9; tidak perlu parameter tambahan |
RecaptchaV3EnterpriseTask | $3.00 / 1k; 20 poin/tugas · ¥20 / 1k | Asinkron | |
RecaptchaV3EnterpriseTaskM1 | $3.75 / 1k; 25 poin/tugas · ¥25 / 1k | Asinkron |
Harga dalam dolar AS adalah perkiraan dengan kurs US$1 ≈ ¥6.67; tugas ditagih dalam poin.
RecaptchaV3TaskProxylessdanRecaptchaV3TaskProxylessM1memakai parameter yang sama tetapi jalur berbeda, jadi keduanya bisa saling menjadi cadangan.- Jika situs target meminta skor tinggi, gunakan
RecaptchaV3TaskProxylessM1S7(0.7) atauRecaptchaV3TaskProxylessM1S9(0.9); tidak perlu parameter tambahan.
Parameter permintaan
Section titled “Parameter permintaan”| Kolom | Tipe | Wajib | Deskripsi |
|---|---|---|---|
type | string | Ya | Jenis tugas; lihat "Jenis tugas dan harga" di halaman ini |
websiteURL | string | Ya | URL lengkap halaman yang menampilkan captcha. Isi dengan situs tempat Anda melihat captcha, bukan domain penyedia captcha |
websiteKey | string | Ya | Kunci situs (sitekey), ada di sumber halaman atau permintaan jaringan; biasanya tidak berubah |
pageAction | string | Tidak | Action reCAPTCHA v3; harus sama dengan nilai yang diteruskan halaman ke grecaptcha.execute, jika tidak token bisa ditolak |
pageAction harus sama dengan action yang dikirim halaman saat memanggil grecaptcha.execute(KUNCI_SITUS, {action: '...'}). Jika salah, token bisa ditolak situs. Cara menemukannya ada di Mencari parameter reCAPTCHA.
Contoh permintaan
Section titled “Contoh permintaan”{ "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);Ganti websiteURL, websiteKey, dan pageAction dengan nilai dari situs target.
Hasil yang dikembalikan
Section titled “Hasil yang dikembalikan”{ "errorId": 0, "status": "ready", "solution": { "gRecaptchaResponse": "03AGdBq25SxXT-pmSeBXjzScW-EiocHwwpwqtk1QXlJnGnU..." }}| Kolom | Tipe | Deskripsi |
|---|---|---|
gRecaptchaResponse | string | Token yang harus dikirim ke situs target. Sekali pakai, berlaku sekitar 120 detik; gunakan dalam 60 detik |
Saat masih diproses, responsnya {"errorId": 0, "status": "processing"}; periksa lagi 5 detik kemudian. Jika terjadi error, tangani berdasarkan errorCode, lihat Kode error. Cara mengirimkan token setelah didapat ada di Menyelesaikan reCAPTCHA dengan token.
Pertanyaan umum
Section titled “Pertanyaan umum”Mengapa token kadang tidak diterima situs?
Section titled “Mengapa token kadang tidak diterima situs?”Pada v3, situs target menilai berdasarkan skor, dan ambang batasnya bisa diubah kapan saja, sehingga tidak semua token lolos. Pastikan pageAction benar; jika situs meminta skor tinggi, coba M1S7 atau M1S9; Anda juga bisa membandingkan dengan jenis lain dalam kelompok yang sama.
Bagaimana mengisi reCAPTCHA v3 Enterprise?
Section titled “Bagaimana mengisi reCAPTCHA v3 Enterprise?”Sama seperti versi biasa: isi websiteURL, websiteKey, pageAction, dengan jenis tugas RecaptchaV3EnterpriseTask atau RecaptchaV3EnterpriseTaskM1.
Berapa lama token berlaku?
Section titled “Berapa lama token berlaku?”Sekali pakai, berlaku sekitar 120 detik. Sebaiknya kirim dalam 60 detik.
Tutorial terkait
Section titled “Tutorial terkait”- Mengenali jenis captcha
- Mencari parameter reCAPTCHA (termasuk cara menemukan
pageAction) - Menyelesaikan reCAPTCHA dengan token