Jenis tugas
reCAPTCHA v2
Halaman ini diterjemahkan otomatis dari versi bahasa Mandarin dan mungkin mengandung kesalahan. Versi bahasa Mandarin menjadi acuan utama.
Tugas reCAPTCHA v2 mengembalikan sebuah token (gRecaptchaResponse). Kirim token itu ke situs target untuk lolos verifikasi, tanpa perlu mengklik gambar. Jenis yang paling umum, NoCaptchaTaskProxyless, berharga 15 poin (≈ $2.25 / 1k) per tugas dan bersifat asinkron: buat tugas dengan createTask, lalu panggil getTaskResult setiap 5 detik untuk mengambil hasilnya. Tugas yang gagal dikenali atau melewati batas waktu otomatis mendapat pengembalian poin.
https://api.yescaptcha.com/createTaskEndpoint globalhttps://cn.yescaptcha.com/createTaskEndpoint TiongkokIsi permintaan berupa JSON, diautentikasi dengan clientKey (ClientKey Anda, salin dari dasbor yescaptcha.com). Ambil hasil di endpoint yang sama dengan tempat Anda membuat tugas.
Kapan digunakan
Section titled “Kapan digunakan”- Halaman menampilkan kotak centang “Saya bukan robot” (I’m not a robot): versi biasa.
- Tidak ada kotak centang, dan soal gambar baru muncul setelah tombol kirim diklik: versi tak terlihat. Tambahkan
"isInvisible": true. - Halaman memuat
recaptcha/enterprise.js, atau alamat permintaannya mengandungenterprise: versi Enterprise. Gunakan jenis yang namanya memuatEnterprise.
Jika Anda tidak yakin termasuk yang mana, lihat Mengenali jenis captcha. Jika tingkat keberhasilan token kurang memuaskan, Anda bisa beralih ke pengenalan gambar reCAPTCHA v2: API memberi tahu gambar mana yang harus diklik, lalu Anda mengkliknya sendiri di browser.
Jenis tugas dan harga
Section titled “Jenis tugas dan harga”| Jenis tugas | Harga | Mode | Catatan |
|---|---|---|---|
NoCaptchaTaskProxyless | $2.25 / 1k; 15 poin/tugas · ¥15 / 1k | Asinkron | |
RecaptchaV2TaskProxyless | $3.00 / 1k; 20 poin/tugas · ¥20 / 1k | Asinkron | Parameter sama dengan NoCaptchaTaskProxyless tetapi lewat jalur berbeda; keduanya bisa dipakai sebagai cadangan satu sama lain |
NoCaptchaTask | $2.25 / 1k; 15 poin/tugas · ¥15 / 1k | Asinkron | Proxy sendiri |
RecaptchaV2EnterpriseTaskProxyless | $3.00 / 1k; 20 poin/tugas · ¥20 / 1k | Asinkron | |
RecaptchaV2EnterpriseTask | $3.00 / 1k; 20 poin/tugas · ¥20 / 1k | Asinkron | Proxy sendiri |
Harga dalam dolar AS adalah perkiraan dengan kurs US$1 ≈ ¥6.67; tugas ditagih dalam poin.
NoCaptchaTaskProxylessdanRecaptchaV2TaskProxylessmemiliki parameter yang sama tetapi jalur berbeda. Jika salah satu tingkat keberhasilannya kurang memuaskan, coba yang lain.- Jenis yang namanya tidak memuat
Proxyless(NoCaptchaTask,RecaptchaV2EnterpriseTask) memuat captcha melalui proxy Anda sendiri, sehingga perlu mengirimproxyType,proxyAddress,proxyPort, dan field terkait. Gunakan jenis ini jika situs target memeriksa IP pengunjung.
Parameter permintaan
Section titled “Parameter permintaan”Field pada objek task di createTask:
| 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 |
isInvisible | boolean | Tidak | Isi true untuk varian invisible; jangan diisi jika bukan |
proxyType | string | Beberapa jenis | Protokol proxy: http, https, socks4, atau socks5 (Wajib untuk NoCaptchaTask, RecaptchaV2EnterpriseTask) |
proxyAddress | string | Beberapa jenis | Alamat IP atau hostname proxy. Alamat lokal atau privat seperti 127.0.0.1 atau 192.168.x.x tidak akan berfungsi karena server kami tidak dapat menjangkaunya (Wajib untuk NoCaptchaTask, RecaptchaV2EnterpriseTask) |
proxyPort | integer | Beberapa jenis | Port proxy (Wajib untuk NoCaptchaTask, RecaptchaV2EnterpriseTask) |
proxyLogin | string | Tidak | Nama pengguna proxy, jika proxy memerlukan autentikasi (hanya NoCaptchaTask, RecaptchaV2EnterpriseTask) |
proxyPassword | string | Tidak | Kata sandi proxy, jika proxy memerlukan autentikasi (hanya NoCaptchaTask, RecaptchaV2EnterpriseTask) |
userAgent | string | Tidak | User-Agent browser. Jika hasil berisi userAgent, gunakan nilai tersebut saat Anda mengirimkan token (hanya NoCaptchaTask, RecaptchaV2EnterpriseTask) |
enterprisePayload | object | Tidak | Parameter tambahan untuk versi enterprise, misalnya nilai s reCAPTCHA Enterprise: {"s": "..."}. Jangan diisi jika halaman tidak menggunakannya (hanya RecaptchaV2EnterpriseTaskProxyless, RecaptchaV2EnterpriseTask) |
Cara menemukan websiteURL dan websiteKey ada di Mencari parameter reCAPTCHA.
Contoh permintaan
Section titled “Contoh permintaan”Menggunakan halaman demo resmi Google:
{ "clientKey": "YOUR_CLIENT_KEY", "task": { "type": "NoCaptchaTaskProxyless", "websiteURL": "https://www.google.com/recaptcha/api2/demo", "websiteKey": "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-" }}Kode lengkap (membuat tugas, memeriksa setiap 5 detik, mencetak token). Sebelum dijalankan, simpan ClientKey Anda di variabel lingkungan YESCAPTCHA_CLIENT_KEY:
curl -s https://api.yescaptcha.com/createTask \ -H 'Content-Type: application/json' \ -d '{ "clientKey": "YOUR_CLIENT_KEY", "task": { "type": "NoCaptchaTaskProxyless", "websiteURL": "https://www.google.com/recaptcha/api2/demo", "websiteKey": "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-" }}'
# 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": "NoCaptchaTaskProxyless", "websiteURL": "https://www.google.com/recaptcha/api2/demo", "websiteKey": "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-",})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: "NoCaptchaTaskProxyless", websiteURL: "https://www.google.com/recaptcha/api2/demo", websiteKey: "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-",});console.log(solution.gRecaptchaResponse);Untuk versi Enterprise, jika halaman mengirim nilai s ke reCAPTCHA, masukkan nilai itu ke enterprisePayload:
{ "clientKey": "YOUR_CLIENT_KEY", "task": { "type": "RecaptchaV2EnterpriseTaskProxyless", "websiteURL": "https://example.com/login", "websiteKey": "SITE_KEY_OF_THE_PAGE", "enterprisePayload": { "s": "S_VALUE_FROM_THE_PAGE" } }}Dengan proxy sendiri:
{ "clientKey": "YOUR_CLIENT_KEY", "task": { "type": "NoCaptchaTask", "websiteURL": "https://www.google.com/recaptcha/api2/demo", "websiteKey": "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-", "proxyType": "http", "proxyAddress": "proxy.example.com", "proxyPort": 8080, "proxyLogin": "user", "proxyPassword": "pass" }}createTask mengembalikan ID tugas:
{ "errorId": 0, "taskId": "61138bb6-19fb-11ec-a9c8-0242ac110006"}Gunakan ID itu untuk memanggil getTaskResult. Saat tugas masih diproses, responsnya {"errorId": 0, "status": "processing"}; periksa lagi 5 detik kemudian. Jika sudah selesai, responsnya:
{ "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 |
Sebuah tugas diproses paling lama sekitar 110 detik. Jika melewati batas itu, responsnya ERROR_TASK_TIMEOUT dan poin dikembalikan. Saat terjadi error, errorId bernilai 1; tangani berdasarkan errorCode, lihat Kode error. Cara mengirim token setelah Anda mendapatkannya ada di Menyelesaikan reCAPTCHA dengan token.
Pertanyaan umum
Section titled “Pertanyaan umum”Mengapa token untuk situs yang sama kadang lolos dan kadang tidak?
Section titled “Mengapa token untuk situs yang sama kadang lolos dan kadang tidak?”Situs target yang menentukan. Situs memberi skor pada setiap verifikasi dan menetapkan ambang batas yang bisa diubah kapan saja, sehingga tingkat keberhasilan berbeda di tiap situs dan tidak semua token lolos. Anda bisa membandingkan dengan jenis tugas lain untuk captcha yang sama, atau beralih ke pengenalan gambar.
Berapa lama token berlaku?
Section titled “Berapa lama token berlaku?”Token hanya bisa dipakai sekali dan berlaku sekitar 120 detik. Sebaiknya kirim dalam 60 detik setelah diterima. Masa berlaku ditentukan oleh Google.
Apakah poin dipotong jika pengenalan gagal?
Section titled “Apakah poin dipotong jika pengenalan gagal?”Tidak. Tugas yang mengembalikan ERROR_CAPTCHA_UNSOLVABLE atau melewati batas waktu otomatis mendapat pengembalian poin, lihat Penagihan dan pengembalian poin.