# hCaptcha

> Dapatkan token hCaptcha dengan YesCaptcha: HCaptchaTaskProxyless, HCaptchaTaskProxylessM1, dan HCaptchaTask dengan proxy sendiri, cara mengisi userAgent dan rqdata, serta cara menggunakan respKey yang dikembalikan.

Source: https://docs.yescaptcha.com/id/tasks/hcaptcha/ · Last verified: 2026-10-15

> This page was machine-translated from the Chinese version. If anything differs, the Chinese version prevails: https://docs.yescaptcha.com/zh/tasks/hcaptcha/

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.

- POST `https://api.yescaptcha.com/createTask` (Endpoint global)
- POST `https://cn.yescaptcha.com/createTask` (Endpoint Tiongkok)

Body permintaan berupa JSON dan diautentikasi dengan `clientKey`. Cek hasil di endpoint yang sama dengan tempat Anda membuat tugas.

## 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](https://docs.yescaptcha.com/id/tasks/hcaptcha-classification.md).

> **Catatan:** Tingkat keberhasilan hCaptcha sangat bervariasi antar situs, sebaiknya uji dulu dengan jumlah kecil.

## 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.

-   `HCaptchaTaskProxyless` dan `HCaptchaTaskProxylessM1` memiliki parameter yang sama dengan jalur yang berbeda, sehingga bisa saling menjadi cadangan.
-   `HCaptchaTask` memuat captcha lewat proxy Anda sendiri, sehingga field proxy harus diisi. Gunakan jenis ini jika situs target memeriksa IP pengunjung.

## 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) |

-   `websiteURL` diisi dengan halaman tempat captcha muncul, **bukan** hcaptcha.com.
-   `userAgent` disarankan diisi, dan hanya boleh berisi nilai yang dikembalikan oleh [/useragent](https://docs.yescaptcha.com/id/api/useragent.md).
-   `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](https://docs.yescaptcha.com/id/guides/find-hcaptcha-parameters.md).

## Contoh permintaan

POST https://api.yescaptcha.com/createTask

```json
{
  "clientKey": "YOUR_CLIENT_KEY",
  "task": {
    "type": "HCaptchaTaskProxyless",
    "websiteURL": "https://accounts.hcaptcha.com/demo",
    "websiteKey": "a5f74b19-9e45-40e0-b45d-47ff91b7a6c2"
  }
}
```

**curl**

```bash
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"}'
```

**Python**

solve.py

```python
import os
import 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"])
```

**Node.js**

solve.mjs

```js
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:

POST https://api.yescaptcha.com/createTask

```json
{
  "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"
  }
}
```

## Hasil

```json
{
  "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:

1.  Isi token ke field `h-captcha-response` di halaman (dan `g-recaptcha-response`, jika ada), atau ke field yang diminta oleh API situs target.
2.  Saat mengirim permintaan, gunakan `userAgent` yang dikembalikan sebagai User-Agent.
3.  Jika `respKey` dikembalikan, 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](https://docs.yescaptcha.com/id/api/errors.md).

## Pertanyaan umum

### 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?

Token hanya bisa dipakai sekali dan berlaku sekitar 120 detik. Sebaiknya kirim secepat mungkin setelah diterima.

## Tutorial terkait

-   [Mencari parameter hCaptcha](https://docs.yescaptcha.com/id/guides/find-hcaptcha-parameters.md)
-   [Klik gambar hCaptcha dengan Selenium](https://docs.yescaptcha.com/id/guides/hcaptcha-click-selenium.md)
