# hCaptcha

> รับ token ของ hCaptcha ด้วย YesCaptcha ครอบคลุม HCaptchaTaskProxyless, HCaptchaTaskProxylessM1 และ HCaptchaTask ที่ใช้พร็อกซีของคุณเอง วิธีกรอก userAgent และ rqdata และวิธีใช้ respKey ที่ส่งกลับมา

Source: https://docs.yescaptcha.com/th/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/

งาน hCaptcha จะคืนค่า token (`gRecaptchaResponse`) ส่ง token นี้ไปยังเว็บไซต์เป้าหมายพร้อมกับ `userAgent` ที่ได้รับกลับมา (และ `respKey` ในกรณีที่มี) ก็จะผ่านการตรวจสอบได้ `HCaptchaTaskProxyless` คิดงานละ 30 พอยต์ (≈ $4.50 / 1k) ส่วน `HCaptchaTask` ที่ใช้พร็อกซีของคุณเองคิดงานละ 15 พอยต์ (≈ $2.25 / 1k) ทั้งสองแบบเป็นแบบอะซิงโครนัส: เรียก `createTask` ก่อน แล้วเรียก `getTaskResult` ทุก 5 วินาที หากการจดจำล้มเหลวหรือหมดเวลา ระบบจะคืนพอยต์ให้อัตโนมัติ

- POST `https://api.yescaptcha.com/createTask` (endpoint ทั่วโลก)
- POST `https://cn.yescaptcha.com/createTask` (endpoint จีน)

เนื้อหาคำขอเป็น JSON และยืนยันตัวตนด้วย `clientKey` สร้างงานที่ endpoint ใด ให้ตรวจสอบผลลัพธ์ที่ endpoint เดียวกัน

## กรณีที่ควรใช้

หน้าเว็บมีช่องทำเครื่องหมาย “ฉันเป็นมนุษย์” ของ hCaptcha หรือมีโจทย์ภาพของ hCaptcha ปรากฏขึ้น หากต้องการรับ token ไปส่งโดยตรง ให้ใช้ประเภทงานในหน้านี้ หากต้องการคลิกภาพเองในเบราว์เซอร์ ให้ใช้ [การจดจำภาพของ hCaptcha](https://docs.yescaptcha.com/th/tasks/hcaptcha-classification.md)

> **หมายเหตุ:** อัตราการผ่านของ hCaptcha ต่างกันมากในแต่ละเว็บไซต์ ขอแนะนำให้ทดสอบกับงานจำนวนน้อยก่อน

## ประเภทงานและราคา

| ประเภทงาน | ราคา | รูปแบบการคืนผลลัพธ์ | หมายเหตุ |
| --- | --- | --- | --- |
| `HCaptchaTaskProxyless` | $4.50 / 1k; 30 พอยต์/งาน · ¥30 / 1k | แบบอะซิงโครนัส |  |
| `HCaptchaTaskProxylessM1` | $4.50 / 1k; 30 พอยต์/งาน · ¥30 / 1k | แบบอะซิงโครนัส | พารามิเตอร์เหมือนกับ HCaptchaTaskProxyless แต่ใช้เส้นทางต่างกัน สามารถใช้สลับเป็นตัวสำรองของกันและกันได้ |
| `HCaptchaTask` | $2.25 / 1k; 15 พอยต์/งาน · ¥15 / 1k | แบบอะซิงโครนัส | ใช้พร็อกซีของคุณเอง |

ราคาเป็นดอลลาร์สหรัฐเป็นเพียงค่าประมาณที่ US$1 ≈ ¥6.67 งานจะถูกหักเป็นพอยต์

-   `HCaptchaTaskProxyless` และ `HCaptchaTaskProxylessM1` ใช้พารามิเตอร์เหมือนกันแต่ใช้เส้นทางต่างกัน จึงใช้สำรองให้กันได้
-   `HCaptchaTask` โหลด CAPTCHA ผ่านพร็อกซีของคุณเอง จึงต้องส่งฟิลด์พร็อกซี ใช้เมื่อเว็บไซต์เป้าหมายตรวจสอบ IP ของผู้เข้าชม

## พารามิเตอร์ของคำขอ

| ฟิลด์ | ประเภท | จำเป็น | คำอธิบาย |
| --- | --- | --- | --- |
| `type` | string | ใช่ | ประเภทงาน ดูค่าที่ใช้ได้ในหัวข้อ "ประเภทงานและราคา" ของหน้านี้ |
| `websiteURL` | string | ใช่ | URL แบบเต็มของหน้าเว็บที่แสดง CAPTCHA ให้ระบุเว็บไซต์ที่คุณเห็น CAPTCHA ไม่ใช่โดเมนของผู้ให้บริการ CAPTCHA |
| `websiteKey` | string | ใช่ | คีย์ของเว็บไซต์ (sitekey) สำหรับ hCaptcha โดยทั่วไปอยู่ในรูปแบบ UUID |
| `userAgent` | string | ไม่ | User-Agent ของเบราว์เซอร์ แนะนำให้ระบุ แต่รับเฉพาะค่าที่ `GET https://api.yescaptcha.com/useragent` คืนมาเท่านั้น เมื่อส่ง token ให้ใช้ `userAgent` จากผลลัพธ์ |
| `isInvisible` | boolean | ไม่ | ส่ง true เมื่อเป็นเวอร์ชัน invisible หากไม่ใช่ไม่ต้องส่ง |
| `rqdata` | string | ไม่ | rqdata ของ hCaptcha เวอร์ชัน Enterprise บางเว็บไซต์ต้องใช้ โดยทั่วไปหาได้จากคำขอที่โหลด CAPTCHA |
| `proxyType` | string | บางประเภท | โปรโตคอลของพร็อกซี: `http`, `https`, `socks4` หรือ `socks5` (จำเป็นสำหรับ HCaptchaTask) |
| `proxyAddress` | string | บางประเภท | IP แอดเดรสหรือชื่อโฮสต์ของพร็อกซี ไม่สามารถใช้แอดเดรสภายในเครื่องหรือภายในเครือข่าย เช่น 127.0.0.1 หรือ 192.168.x.x ได้ เพราะเซิร์ฟเวอร์ของเราเข้าถึงไม่ได้ (จำเป็นสำหรับ HCaptchaTask) |
| `proxyPort` | integer | บางประเภท | พอร์ตของพร็อกซี (จำเป็นสำหรับ HCaptchaTask) |
| `proxyLogin` | string | ไม่ | ชื่อผู้ใช้ของพร็อกซี (เมื่อพร็อกซีต้องมีการยืนยันตัวตน) (เฉพาะ HCaptchaTask) |
| `proxyPassword` | string | ไม่ | รหัสผ่านของพร็อกซี (เมื่อพร็อกซีต้องมีการยืนยันตัวตน) (เฉพาะ HCaptchaTask) |

-   `websiteURL` ให้กรอกหน้าเว็บที่มี CAPTCHA แสดงอยู่ **ไม่ใช่** hcaptcha.com
-   แนะนำให้กรอก `userAgent` และกรอกได้เฉพาะค่าที่ [/useragent](https://docs.yescaptcha.com/th/api/useragent.md) ส่งกลับมาเท่านั้น
-   `rqdata`: hCaptcha รุ่นองค์กร (เช่น เว็บไซต์โซเชียลและแชตบางแห่ง) จะต้องใช้ มักพบได้ในคำขอที่โหลด CAPTCHA เว็บไซต์ทั่วไปไม่ต้องส่ง

วิธีค้นหาพารามิเตอร์ ดูที่ [ค้นหาพารามิเตอร์ของ hCaptcha](https://docs.yescaptcha.com/th/guides/find-hcaptcha-parameters.md)

## ตัวอย่างคำขอ

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);
```

ใช้พร็อกซีของคุณเอง:

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

## ผลลัพธ์

```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..."
  }
}
```

| ฟิลด์ | ประเภท | คำอธิบาย |
| --- | --- | --- |
| `gRecaptchaResponse` | string | token ที่ได้ ใช้ส่งให้เว็บไซต์เป้าหมาย ใช้ได้ครั้งเดียว มีผลประมาณ 120 วินาที แนะนำให้ใช้ภายใน 60 วินาที |
| `userAgent` | string | User-Agent ที่ใช้ในการสร้าง token ให้ใช้ค่านี้เมื่อส่ง token แม้จะต่างจากค่าที่คุณส่งมา |
| `respKey` | string | ค่าที่บางเว็บไซต์ต้องการให้ส่งพร้อมกับ token หากมีให้ส่งไปด้วย |

เมื่อส่งข้อมูล:

1.  ใส่ token ลงในฟิลด์ `h-captcha-response` ของหน้าเว็บ (และ `g-recaptcha-response` หากมี) หรือใส่ในฟิลด์ที่ API ของเว็บไซต์เป้าหมายกำหนด
2.  ตอนส่งคำขอ ให้ใช้ `userAgent` ที่ส่งกลับมาเป็น User-Agent
3.  หากมี `respKey` ส่งกลับมา ให้ส่งไปด้วยตามที่เว็บไซต์กำหนด

ขณะที่งานกำลังประมวลผลจะได้รับ `{"errorId": 0, "status": "processing"}` ให้ตรวจสอบอีกครั้งหลังผ่านไป 5 วินาที หากเกิดข้อผิดพลาด ให้จัดการตาม `errorCode` ดูที่ [รหัสข้อผิดพลาด](https://docs.yescaptcha.com/th/api/errors.md)

## คำถามที่พบบ่อย

### ทำไมอัตราการผ่านจึงไม่คงที่?

hCaptcha ตัดสินจากการตั้งค่าของเว็บไซต์ IP ที่เข้าใช้งาน และสภาพแวดล้อมของเบราว์เซอร์ อัตราการผ่านจึงต่างกันไปตามเว็บไซต์ ตรวจสอบว่าใช้ `userAgent` ที่ส่งกลับมา สำหรับเว็บไซต์ที่ไวต่อ IP ให้ใช้ `HCaptchaTask` ที่ใช้พร็อกซีของคุณเอง และส่งข้อมูลผ่านพร็อกซีเดียวกันด้วย หรือจะลองเปลี่ยนเป็น `HCaptchaTaskProxylessM1` เพื่อเปรียบเทียบก็ได้

### token มีอายุนานเท่าไร?

ใช้ได้ครั้งเดียว และมีอายุประมาณ 120 วินาที ขอแนะนำให้ส่งโดยเร็วที่สุดหลังได้รับ

## บทความที่เกี่ยวข้อง

-   [ค้นหาพารามิเตอร์ของ hCaptcha](https://docs.yescaptcha.com/th/guides/find-hcaptcha-parameters.md)
-   [การคลิกภาพ hCaptcha ด้วย Selenium](https://docs.yescaptcha.com/th/guides/hcaptcha-click-selenium.md)
