Jenis tugas
hCaptcha
Halaman ini diterjemahkan otomatis dari versi bahasa Mandarin dan mungkin mengandung kesalahan. Versi bahasa Mandarin menjadi acuan utama.
Tugas hCaptcha mengembalikan sebuah token (gRecaptchaResponse). Kirim token tersebut ke situs target bersama userAgent yang dikembalikan (dan respKey, jika ada) agar verifikasi lolos. HCaptchaTaskProxyless berharga 30 poin (≈ $4.50 / 1k) per tugas, dan HCaptchaTask dengan proxy sendiri berharga 15 poin (≈ $2.25 / 1k) per tugas. Keduanya asinkron: panggil createTask, lalu getTaskResult setiap 5 detik. Jika pengenalan gagal atau waktu habis, poin dikembalikan otomatis.
https://api.yescaptcha.com/createTaskEndpoint globalhttps://cn.yescaptcha.com/createTaskEndpoint TiongkokBody permintaan berupa JSON dan diautentikasi dengan clientKey. Cek hasil di endpoint yang sama dengan tempat Anda membuat tugas.
Kapan digunakan
Section titled “Kapan digunakan”Halaman web menampilkan kotak centang “Saya manusia” dari hCaptcha, atau memunculkan soal gambar hCaptcha. Jika ingin mengambil token lalu langsung mengirimkannya, gunakan jenis tugas di halaman ini. Jika ingin mengklik gambar sendiri di browser, gunakan pengenalan gambar hCaptcha.
Jenis tugas dan harga
Section titled “Jenis tugas dan harga”| Jenis tugas | Harga | Mode | Catatan |
|---|---|---|---|
HCaptchaTaskProxyless | $4.50 / 1k; 30 poin/tugas · ¥30 / 1k | Asinkron | |
HCaptchaTaskProxylessM1 | $4.50 / 1k; 30 poin/tugas · ¥30 / 1k | Asinkron | Parameter sama dengan HCaptchaTaskProxyless tetapi lewat jalur berbeda; keduanya bisa dipakai sebagai cadangan satu sama lain |
HCaptchaTask | $2.25 / 1k; 15 poin/tugas · ¥15 / 1k | Asinkron | Proxy sendiri |
Harga dalam dolar AS adalah perkiraan dengan kurs US$1 ≈ ¥6.67; tugas ditagih dalam poin.
HCaptchaTaskProxylessdanHCaptchaTaskProxylessM1memiliki parameter yang sama dengan jalur yang berbeda, sehingga bisa saling menjadi cadangan.HCaptchaTaskmemuat captcha lewat proxy Anda sendiri, sehingga field proxy harus diisi. Gunakan jenis ini jika situs target memeriksa IP pengunjung.
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) hCaptcha, biasanya berformat UUID |
userAgent | string | Tidak | User-Agent browser. Disarankan diisi, tetapi hanya nilai yang dikembalikan oleh GET https://api.yescaptcha.com/useragent yang diterima; kirim token dengan userAgent dari hasil |
isInvisible | boolean | Tidak | Isi true untuk varian invisible; jangan diisi jika bukan |
rqdata | string | Tidak | rqdata untuk hCaptcha enterprise; dibutuhkan oleh beberapa situs dan biasanya ditemukan di permintaan yang memuat captcha |
proxyType | string | Beberapa jenis | Protokol proxy: http, https, socks4, atau socks5 (Wajib untuk HCaptchaTask) |
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 HCaptchaTask) |
proxyPort | integer | Beberapa jenis | Port proxy (Wajib untuk HCaptchaTask) |
proxyLogin | string | Tidak | Nama pengguna proxy, jika proxy memerlukan autentikasi (hanya HCaptchaTask) |
proxyPassword | string | Tidak | Kata sandi proxy, jika proxy memerlukan autentikasi (hanya HCaptchaTask) |
websiteURLdiisi dengan halaman tempat captcha muncul, bukan hcaptcha.com.userAgentdisarankan diisi, dan hanya boleh berisi nilai yang dikembalikan oleh /useragent.rqdata: diperlukan oleh hCaptcha Enterprise (misalnya sebagian situs sosial dan chat), biasanya ada di permintaan yang memuat captcha. Situs biasa tidak perlu mengirimkannya.
Cara menemukan parameter, lihat Mencari parameter hCaptcha.
Contoh permintaan
Section titled “Contoh permintaan”{ "clientKey": "YOUR_CLIENT_KEY", "task": { "type": "HCaptchaTaskProxyless", "websiteURL": "https://accounts.hcaptcha.com/demo", "websiteKey": "a5f74b19-9e45-40e0-b45d-47ff91b7a6c2" }}curl -s https://api.yescaptcha.com/createTask \ -H 'Content-Type: application/json' \ -d '{ "clientKey": "YOUR_CLIENT_KEY", "task": { "type": "HCaptchaTaskProxyless", "websiteURL": "https://accounts.hcaptcha.com/demo", "websiteKey": "a5f74b19-9e45-40e0-b45d-47ff91b7a6c2" }}'
# 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": "HCaptchaTaskProxyless", "websiteURL": "https://accounts.hcaptcha.com/demo", "websiteKey": "a5f74b19-9e45-40e0-b45d-47ff91b7a6c2",})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: "HCaptchaTaskProxyless", websiteURL: "https://accounts.hcaptcha.com/demo", websiteKey: "a5f74b19-9e45-40e0-b45d-47ff91b7a6c2",});console.log(solution.gRecaptchaResponse);Dengan proxy sendiri:
{ "clientKey": "YOUR_CLIENT_KEY", "task": { "type": "HCaptchaTask", "websiteURL": "https://accounts.hcaptcha.com/demo", "websiteKey": "a5f74b19-9e45-40e0-b45d-47ff91b7a6c2", "proxyType": "http", "proxyAddress": "proxy.example.com", "proxyPort": 8080, "proxyLogin": "user", "proxyPassword": "pass" }}{ "errorId": 0, "status": "ready", "solution": { "gRecaptchaResponse": "P1_eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9...", "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/155.0.0.0 Safari/537.36", "respKey": "E0_eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9..." }}| Kolom | Tipe | Deskripsi |
|---|---|---|
gRecaptchaResponse | string | Token yang harus dikirim ke situs target. Sekali pakai, berlaku sekitar 120 detik; gunakan dalam 60 detik |
userAgent | string | User-Agent yang digunakan untuk mendapatkan token. Gunakan nilai ini saat mengirim token, meskipun berbeda dari yang Anda kirim |
respKey | string | Nilai yang diperlukan beberapa situs bersama token; kirim jika ada |
Cara mengirimkan:
- Isi token ke field
h-captcha-responsedi halaman (dang-recaptcha-response, jika ada), atau ke field yang diminta oleh API situs target. - Saat mengirim permintaan, gunakan
userAgentyang dikembalikan sebagai User-Agent. - Jika
respKeydikembalikan, kirimkan juga sesuai kebutuhan situs.
Saat masih diproses, responsnya {"errorId": 0, "status": "processing"}; periksa lagi 5 detik kemudian. Jika terjadi error, tangani berdasarkan errorCode, lihat Kode error.
Pertanyaan umum
Section titled “Pertanyaan umum”Mengapa tingkat keberhasilannya tidak stabil?
Section titled “Mengapa tingkat keberhasilannya tidak stabil?”hCaptcha menilai berdasarkan pengaturan situs, IP pengunjung, dan lingkungan browser, sehingga tingkat keberhasilan berbeda di setiap situs. Pastikan Anda memakai userAgent yang dikembalikan. Untuk situs yang sensitif terhadap IP, gunakan HCaptchaTask dengan proxy sendiri dan kirim juga lewat proxy yang sama. Anda juga bisa membandingkannya dengan HCaptchaTaskProxylessM1.
Berapa lama token berlaku?
Section titled “Berapa lama token berlaku?”Token hanya bisa dipakai sekali dan berlaku sekitar 120 detik. Sebaiknya kirim secepat mungkin setelah diterima.