# YesCaptcha Docs (full text) > YesCaptcha คือ API สำหรับจดจำ CAPTCHA ใช้ JSON API เดียวจดจำ reCAPTCHA, hCaptcha, Cloudflare Turnstile, FunCaptcha, AWS WAF และ CAPTCHA แบบภาพ คิดพอยต์ตามงาน และคืนพอยต์อัตโนมัติเมื่อจดจำไม่สำเร็จหรือหมดเวลา --- # จดจำ CAPTCHA ด้วย JSON API เดียว > YesCaptcha คือ API สำหรับจดจำ CAPTCHA ใช้ JSON API เดียวจดจำ reCAPTCHA, hCaptcha, Cloudflare Turnstile, FunCaptcha, AWS WAF และ CAPTCHA แบบภาพ คิดพอยต์ตามงาน และคืนพอยต์อัตโนมัติเมื่อจดจำไม่สำเร็จหรือหมดเวลา Source: https://docs.yescaptcha.com/th/ · 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/ [API จดจำ CAPTCHAสถานะ](https://status.yescaptcha.com/?lang=en) จดจำ reCAPTCHA, hCaptcha, Cloudflare Turnstile, FunCaptcha, AWS WAF และ CAPTCHA ภาพตัวอักษรและตัวเลข หักพอยต์ตามงาน 1,000 พอยต์ = ¥1 และคืนพอยต์อัตโนมัติเมื่อจดจำไม่สำเร็จหรือหมดเวลา [เริ่มต้นอย่างรวดเร็ว](https://docs.yescaptcha.com/th/getting-started/quickstart.md)[เอกสารอ้างอิง API](https://docs.yescaptcha.com/th/api/overview.md) เวอร์ชันสำหรับ AI และโปรแกรม:[llms.txt](https://docs.yescaptcha.com/th/llms.txt)[llms-full.txt](https://docs.yescaptcha.com/th/llms-full.txt)[OpenAPI](https://docs.yescaptcha.com/openapi.json)[Markdown](https://docs.yescaptcha.com/th/index.md) YesCaptcha ใช้ได้เฉพาะวัตถุประสงค์ที่ถูกกฎหมายเท่านั้น ห้ามใช้ในทางที่ผิดกฎหมาย POSTapi.yescaptcha.com/createTask ``` { "clientKey": "YOUR_CLIENT_KEY", "task": { "type": "NoCaptchaTaskProxyless", "websiteURL": "https://www.google.com/recaptcha/api2/demo", "websiteKey": "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-" } } ``` 1. /createTasktaskId 61138bb6-19fb-11ec-a9c8-0242ac110006 2. /getTaskResultprocessing 3. /getTaskResultprocessing 4. /getTaskResultready 5. gRecaptchaResponse03AGdBq25SxXT-pmSeBXjzScW-EiocHwwpwqtk1QXlJnGnU... 1. 1สร้างงาน 2. 2รับผลลัพธ์ 3. 3ส่ง ตัวอย่าง: reCAPTCHA v2 เรียก polling ตรวจผลลัพธ์ทุก 5 วินาที เริ่มต้น $0.30 / 1k ราคาต่ำสุดต่อหน่วย 1,000 พอยต์ = ¥1 งานที่ล้มเหลวและหมดเวลาจะคืนพอยต์ 2 endpoint endpoint ทั่วโลกและ endpoint จีน 9:00–21:00 ฝ่ายสนับสนุนโดยเจ้าหน้าที่ (UTC+8) [เริ่มต้นใช้งานสมัครสมาชิก รับ ClientKey และส่งคำขอแรกภายใน 5 นาที](https://docs.yescaptcha.com/th/getting-started/quickstart.md)[เอกสารอ้างอิง APIcreateTask, getTaskResult, รหัสข้อผิดพลาด และขีดจำกัดงานพร้อมกัน](https://docs.yescaptcha.com/th/api/overview.md)[ประเภทงานและราคาราคา วิธีคืนผลลัพธ์ และพารามิเตอร์ของทุกประเภทที่เปิดเผย](https://docs.yescaptcha.com/th/tasks.md)[ส่วนขยายเบราว์เซอร์ผ่านการยืนยันบนหน้าเว็บโดยอัตโนมัติ ไม่ต้องเขียนโค้ด](https://docs.yescaptcha.com/th/extension.md) ## CAPTCHA ที่รองรับ [01reCAPTCHAv2, v3, Enterprise และการจดจำภาพของ v2เริ่มต้น $0.90 / 1k](https://docs.yescaptcha.com/th/tasks/recaptcha-v2.md)[02hCaptchaคืนค่า token หรือจดจำภาพแล้วคลิกเองเริ่มต้น $1.20 / 1k](https://docs.yescaptcha.com/th/tasks/hcaptcha.md)[03Cloudflare Turnstiletoken สำหรับการตรวจสอบของ Turnstileเริ่มต้น $3.75 / 1k](https://docs.yescaptcha.com/th/tasks/turnstile.md)[04FunCaptchaจดจำโจทย์ภาพของ Arkose Labs รองรับโจทย์ทุกรูปแบบเริ่มต้น $0.45 / 1k](https://docs.yescaptcha.com/th/tasks/funcaptcha-classification.md)[05AWS WAF / bCaptchaการจดจำภาพแบบตาราง 3×3เริ่มต้น $1.20 / 1k](https://docs.yescaptcha.com/th/tasks/aws-bcaptcha-classification.md)[06ภาพตัวอักษรและตัวเลขCAPTCHA แบบตัวอักษรทั่วไป คืนผลแบบซิงโครนัสเริ่มต้น $0.30 / 1k](https://docs.yescaptcha.com/th/tasks/image-to-text.md) ## เชื่อมต่อใน 3 ขั้นตอน 1. 01 **สร้างงาน** ใช้ `createTask` ส่งประเภทงานและพารามิเตอร์ของเว็บไซต์ เพื่อรับ `taskId` ประเภทแบบซิงโครนัส เช่น การจดจำภาพและภาพตัวอักษรและตัวเลข จะคืนผลลัพธ์ทันที 2. 02 **รับผลลัพธ์** เรียก `getTaskResult` ทุก 5 วินาที เมื่อ `status` เป็น `ready` ผลลัพธ์จะอยู่ใน `solution` 3. 03 **ส่งให้เว็บไซต์เป้าหมาย** นำ token ที่ได้ไปใส่ในฟอร์มหรือคำขอของหน้าเว็บ token ใช้ได้ครั้งเดียว ควรใช้ภายใน 60 วินาที POST /createTask ```json { "clientKey": "YOUR_CLIENT_KEY", "task": { "type": "NoCaptchaTaskProxyless", "websiteURL": "https://www.google.com/recaptcha/api2/demo", "websiteKey": "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-" } } ``` POST /getTaskResult ```json { "errorId": 0, "status": "ready", "solution": { "gRecaptchaResponse": "03AGdBq25SxXT-pmSeBXjzScW-EiocHwwpwqtk1QXlJnGnU..." } } ``` ## ลิงก์ที่ใช้บ่อย - [**รหัสข้อผิดพลาด**ความหมายของแต่ละรหัสและวิธีจัดการ](https://docs.yescaptcha.com/th/api/errors.md) - [**ขีดจำกัดงานพร้อมกันและการหยุดชั่วคราวอัตโนมัติ**จะเกิดอะไรขึ้นเมื่อเกินขีดจำกัดหรือเกิดข้อผิดพลาดมากเกินไป](https://docs.yescaptcha.com/th/api/rate-limits.md) - [**การคิดพอยต์และคืนพอยต์**พอยต์ การหักล่วงหน้า การคืนพอยต์ และคืนพอยต์หลังรายงาน](https://docs.yescaptcha.com/th/getting-started/billing.md) - [**ติดต่อเรา**WeChat, QQ, Telegram และอีเมล เวลาให้บริการ 9:00–21:00 (UTC+8)](https://docs.yescaptcha.com/th/help/contact.md) - [**แดชบอร์ด**สมัครสมาชิก รับ ClientKey เติมเงิน](https://yescaptcha.com/) --- # แนะนำ > YesCaptcha คืออะไร: รู้จำ reCAPTCHA, hCaptcha, Turnstile, FunCaptcha และ CAPTCHA แบบรูปภาพผ่าน API หรือส่วนขยายเบราว์เซอร์ หักพอยต์ตามงาน และคืนพอยต์อัตโนมัติเมื่อล้มเหลว Source: https://docs.yescaptcha.com/th/getting-started/introduction/ · 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/getting-started/introduction/ YesCaptcha เป็นบริการรู้จำ CAPTCHA คุณส่งข้อมูลของ CAPTCHA ไปยัง API ของ YesCaptcha แล้วรับ token ที่ส่งให้เว็บไซต์เป้าหมายได้ทันที หรือผลการรู้จำของรูปภาพ รองรับ reCAPTCHA (v2, v3 และ Enterprise), hCaptcha, Cloudflare Turnstile, หน้าตรวจสอบของ Cloudflare, FunCaptcha, AWS WAF, bCaptcha และ CAPTCHA รูปภาพตัวอักษรและตัวเลข หักพอยต์ตามงาน 1,000 พอยต์ = ¥1 งานที่รู้จำล้มเหลวหรือหมดเวลาจะได้รับคืนพอยต์อัตโนมัติ YesCaptcha ใช้ได้เฉพาะวัตถุประสงค์ที่ถูกกฎหมายเท่านั้น ห้ามใช้ในทางที่ผิดกฎหมาย ## วิธีใช้งานสองแบบ | | API | ส่วนขยายเบราว์เซอร์ (YesCaptcha Assistant) | | --- | --- | --- | | เหมาะกับ | นักพัฒนาที่เขียนโค้ดได้ และต้องการประมวลผลจำนวนมากในโปรแกรม | ผู้ที่ไม่เขียนโค้ดและใช้งานในเบราว์เซอร์ | | วิธีใช้ | ใช้ `clientKey` เรียก `createTask` และ `getTaskResult` | ติดตั้งส่วนขยาย กรอก `clientKey` เมื่อพบ CAPTCHA จะรู้จำและคลิกให้อัตโนมัติ | | รองรับ | ประเภทงานทั้งหมดที่ระบุไว้ในเว็บไซต์นี้ | โจทย์รูปภาพและ CAPTCHA แบบตัวอักษรของ reCAPTCHA v2, hCaptcha, FunCaptcha, AWS WAF และ bCaptcha | | ค่าใช้จ่าย | หักพอยต์ตามประเภทงาน | ส่วนขยายใช้ฟรี หักพอยต์ตาม API ที่ใช้ในการรู้จำ | ทั้งสองวิธีใช้บัญชีเดียวกัน ClientKey เดียวกัน และยอดคงเหลือเดียวกัน ## ผลการรู้จำมีสามแบบ - **token**: งานส่วนใหญ่ของ reCAPTCHA, hCaptcha, Turnstile และ FunCaptcha ผลลัพธ์เป็นสตริงที่นำไปกรอกในฟอร์มหรือคำขอของหน้าเว็บเพื่อผ่านการตรวจสอบได้ โดยไม่ต้องคลิกรูปภาพ ทั้งหมดเป็นแบบอะซิงโครนัส: สร้างงานก่อน แล้วตรวจสอบผลทุก 5 วินาที - **ผลการจดจำภาพ**: ประเภทงานที่ชื่อลงท้ายด้วย `Classification` คุณส่งรูปภาพของ CAPTCHA ไป แล้วจะได้ผลลัพธ์ว่าควรคลิกรูปใดหรือตำแหน่งใด โดยโปรแกรมของคุณเป็นผู้คลิกในเบราว์เซอร์ คืนผลแบบซิงโครนัส ได้ผลลัพธ์ในคำขอเดียว - **ข้อความหรือ Cookie**: การรู้จำรูปภาพตัวอักษรและตัวเลขจะคืนข้อความในรูปภาพ ส่วนหน้าตรวจสอบของ Cloudflare จะคืน Cookie หลังผ่านการตรวจสอบ ประเภทงานและราคาทั้งหมดดูที่ [ประเภทงานและราคา](https://docs.yescaptcha.com/th/tasks.md) ## เริ่มต้นที่นี่ [เริ่มต้นใช้งาน](https://docs.yescaptcha.com/th/getting-started/quickstart.md)สมัครสมาชิก รับ ClientKey และส่งคำขอแรก [Endpoint](https://docs.yescaptcha.com/th/getting-started/endpoints.md)endpoint ทั่วโลกและ endpoint จีน [การเรียกเก็บเงินและการคืนพอยต์](https://docs.yescaptcha.com/th/getting-started/billing.md)พอยต์ การหักล่วงหน้า การคืนพอยต์ คืนพอยต์หลังรายงาน [ส่วนขยายเบราว์เซอร์](https://docs.yescaptcha.com/th/extension.md)ไม่ต้องเขียนโค้ด รู้จำอัตโนมัติในเบราว์เซอร์ ## SDK จากชุมชน SDK ที่ผู้ใช้ร่วมสร้างขึ้น ไม่ใช่ของทางการ โปรดประเมินด้วยตนเองก่อนใช้งาน ดูได้ที่ [โค้ดตัวอย่างและ SDK](https://docs.yescaptcha.com/th/samples.md) --- # เริ่มต้นใช้งานอย่างรวดเร็ว > ส่งคำขอ YesCaptcha ครั้งแรกใน 5 นาที: สมัครสมาชิก คัดลอก ClientKey เติมเงิน แล้วใช้ curl, Python หรือ Node.js จดจำ CAPTCHA แบบภาพ (ImageToTextTaskOcrBase ผลลัพธ์แบบซิงโครนัส ครั้งละ 2 พอยต์) Source: https://docs.yescaptcha.com/th/getting-started/quickstart/ · 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/getting-started/quickstart/ หน้านี้ส่งคำขอแรกด้วยประเภทงานที่ง่ายที่สุดคือ `ImageToTextTaskOcrBase` (อ่านตัวอักษรภาษาอังกฤษและตัวเลขในภาพ) เป็นแบบซิงโครนัส คือคำขอ `createTask` เพียงครั้งเดียวก็ได้ผลลัพธ์ ราคาครั้งละ 2 พอยต์ (≈ $0.30 / 1k) และไม่ต้องพึ่งเว็บไซต์ของบุคคลที่สาม จึงเหมาะสำหรับใช้ตรวจสอบว่าบัญชีและโค้ดของคุณทำงานได้ปกติ 1. **สมัครบัญชี** เปิด [yescaptcha.com](https://yescaptcha.com/) แล้วสมัครสมาชิกและเข้าสู่ระบบ 2. **คัดลอก ClientKey** หลังเข้าสู่ระบบ ให้ไปที่แดชบอร์ด ([yescaptcha.com/dashboard.html](https://yescaptcha.com/dashboard.html)) หา “ClientKey ของคุณ” แล้วคลิกคัดลอก โดยต้องคัดลอกให้ครบทั้งค่า > **คำเตือน:** คำขอ API ทุกรายการใช้ ClientKey ในการยืนยันตัวตน ผู้ที่ได้ ClientKey ไปจะใช้ยอดคงเหลือของคุณได้ อย่าส่งให้ผู้อื่นและอย่าเขียนลงในโค้ดสาธารณะ หากรั่วไหลสามารถรีเซ็ตได้ที่ตำแหน่งเดิม 3. **เติมเงิน** ยอดคงเหลือต้องมากกว่า 10 พอยต์จึงจะสร้างงานได้ วิธีเติมเงินและโบนัส VIP ดูที่ [เติมเงินและ VIP](https://docs.yescaptcha.com/th/account/recharge.md) 4. **ตรวจสอบว่า ClientKey ใช้งานได้** `getBalance` ใช้ตรวจสอบยอดคงเหลือ และไม่หักพอยต์: ```bash curl -s https://api.yescaptcha.com/getBalance \ -H 'Content-Type: application/json' \ -d '{"clientKey": "YOUR_CLIENT_KEY"}' ``` หากได้ผลลัพธ์ `{"errorId": 0, "balance": 12345, ...}` แสดงว่าพร้อมใช้งาน โดย `balance` คือพอยต์คงเหลือ หากได้ `ERROR_KEY_DOES_NOT_EXIST` แสดงว่าคัดลอกคีย์ผิด 5. **จดจำภาพหนึ่งภาพ** ดาวน์โหลดภาพตัวอย่าง [captcha.jpg](https://docs.yescaptcha.com/samples/captcha.jpg) (หรือใช้ภาพ CAPTCHA ของคุณเองก็ได้) ใส่ ClientKey ลงในตัวแปรสภาพแวดล้อมแล้วรัน: ```bash export YESCAPTCHA_CLIENT_KEY=your_client_key ``` **curl** quickstart.sh ```bash #!/usr/bin/env bash # First request: read an alphanumeric image captcha with ImageToTextTaskOcrBase (synchronous, 2 points per image) # Usage: YESCAPTCHA_CLIENT_KEY=your_client_key bash quickstart.sh captcha.png set -euo pipefail IMAGE="${1:-captcha.png}" BODY=$(base64 < "$IMAGE" | tr -d '\n') # no "data:" prefix, no line breaks curl -s https://api.yescaptcha.com/createTask \ -H 'Content-Type: application/json' \ -d "{\"clientKey\": \"${YESCAPTCHA_CLIENT_KEY}\", \"task\": {\"type\": \"ImageToTextTaskOcrBase\", \"body\": \"${BODY}\"}}" echo ``` **Python** quickstart.py ```python """First request: read an alphanumeric image captcha with ImageToTextTaskOcrBase (synchronous, 2 points per image). Usage: export YESCAPTCHA_CLIENT_KEY=your_client_key python quickstart.py captcha.png """ import base64 import os import sys import requests CLIENT_KEY = os.environ["YESCAPTCHA_CLIENT_KEY"] image_path = sys.argv[1] if len(sys.argv) > 1 else "captcha.png" with open(image_path, "rb") as f: body = base64.b64encode(f.read()).decode() # no "data:" prefix r = requests.post( "https://api.yescaptcha.com/createTask", json={ "clientKey": CLIENT_KEY, "task": {"type": "ImageToTextTaskOcrBase", "body": body}, }, timeout=30, ) data = r.json() if data.get("errorId"): raise SystemExit(f"{data.get('errorCode')}: {data.get('errorDescription')}") print("text:", data["solution"]["text"]) ``` **Node.js** quickstart.mjs ```js // First request: read an alphanumeric image captcha with ImageToTextTaskOcrBase (synchronous, 2 points per image). // Usage: YESCAPTCHA_CLIENT_KEY=your_client_key node quickstart.mjs captcha.png import { readFileSync } from 'node:fs'; const CLIENT_KEY = process.env.YESCAPTCHA_CLIENT_KEY; const body = readFileSync(process.argv[2] ?? 'captcha.png').toString('base64'); // no "data:" prefix const res = await fetch('https://api.yescaptcha.com/createTask', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ clientKey: CLIENT_KEY, task: { type: 'ImageToTextTaskOcrBase', body } }), }); const data = await res.json(); if (data.errorId) throw new Error(`${data.errorCode}: ${data.errorDescription}`); console.log('text:', data.solution.text); ``` รันด้วย `bash quickstart.sh captcha.jpg`, `python quickstart.py captcha.jpg` หรือ `node quickstart.mjs captcha.jpg` Python ต้องรัน `pip install requests` ก่อน ส่วน Node.js ต้องเป็นเวอร์ชัน 18 ขึ้นไป 6. **ดูผลลัพธ์** เมื่อสำเร็จจะได้ผลลัพธ์: ```json { "errorId": 0, "status": "ready", "solution": { "text": "LMResm" }, "taskId": "2376919c-1863-11ec-a012-94e6f7355a0b" } ``` `errorId` เป็น 0 หมายถึงสำเร็จ และข้อความที่จดจำได้อยู่ใน `solution.text` หาก `errorId` เป็น 1 ให้ดู `errorCode` ความหมายอยู่ใน [รหัสข้อผิดพลาด](https://docs.yescaptcha.com/th/api/errors.md) ## ขั้นตอนถัดไป - งานประเภทที่คืนค่า token เช่น reCAPTCHA และ hCaptcha เป็นแบบ**อะซิงโครนัส**: `createTask` จะคืน `taskId` ก่อน จากนั้นเรียก `getTaskResult` ทุก 5 วินาที ดูขั้นตอนทั้งหมดได้ที่ [คำขอและการตอบกลับ](https://docs.yescaptcha.com/th/api/overview.md) ตัวอย่างอยู่ที่ [reCAPTCHA v2](https://docs.yescaptcha.com/th/tasks/recaptcha-v2.md) - เลือกประเภทงาน: [ประเภทงานและราคา](https://docs.yescaptcha.com/th/tasks.md) - ไคลเอนต์ที่คัดลอกไปใช้ในโปรเจกต์ได้ทันที: [Python](https://docs.yescaptcha.com/th/samples/python.md), [Node.js](https://docs.yescaptcha.com/th/samples/nodejs.md) - ไม่ต้องเขียนโค้ด: [ส่วนขยายเบราว์เซอร์](https://docs.yescaptcha.com/th/extension.md) --- # ที่อยู่สำหรับเชื่อมต่อ > endpoint ของ YesCaptcha API มี 2 แห่ง ได้แก่ endpoint ทั่วโลก api.yescaptcha.com และ endpoint จีน cn.yescaptcha.com รับเฉพาะ HTTPS POST แบบ JSON และต้องสร้างงานกับตรวจสอบงานที่ endpoint เดียวกัน Source: https://docs.yescaptcha.com/th/getting-started/endpoints/ · 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/getting-started/endpoints/ YesCaptcha API มี endpoint 2 แห่ง ซึ่งมีเมธอดและพารามิเตอร์เหมือนกันทุกประการ ให้เลือกตามที่ตั้งของเซิร์ฟเวอร์ของคุณ: | Endpoint | ที่อยู่ | เหมาะสำหรับ | | --- | --- | --- | | endpoint ทั่วโลก | `https://api.yescaptcha.com` | เซิร์ฟเวอร์นอกจีนแผ่นดินใหญ่ | | endpoint จีน | `https://cn.yescaptcha.com` | เซิร์ฟเวอร์ในจีนแผ่นดินใหญ่ | URL ของเมธอด = ที่อยู่ endpoint + ชื่อเมธอด เช่น การสร้างงาน: - POST `https://api.yescaptcha.com/createTask` (endpoint ทั่วโลก) - POST `https://cn.yescaptcha.com/createTask` (endpoint จีน) ## กฎการใช้งาน - ใช้ HTTPS เท่านั้น - ทุกเมธอดใช้ `POST` โดยส่ง body เป็น JSON และใส่ header `Content-Type: application/json` ยกเว้น [/useragent](https://docs.yescaptcha.com/th/api/useragent.md) โดย body ต้องมีขนาดไม่เกิน 6 MB - ยืนยันตัวตนด้วย `clientKey` ใน body ไม่ต้องใช้ header อื่น > **หมายเหตุ:** สร้างงานที่ endpoint ใด ให้ใช้ `getTaskResult` ตรวจสอบงานที่ endpoint นั้น อย่าใช้สอง endpoint ปนกัน ## เมธอดทั้งหมด | เมธอด | หน้าที่ | หมายเหตุ | | --- | --- | --- | | [createTask](https://docs.yescaptcha.com/th/api/create-task.md) | สร้างงาน | ประเภทงานแบบซิงโครนัสจะคืนผลลัพธ์ทันที | | [getTaskResult](https://docs.yescaptcha.com/th/api/get-task-result.md) | ตรวจสอบผลลัพธ์ของงาน | ประเภทงานแบบอะซิงโครนัสให้ polling (เรียกตรวจซ้ำเป็นระยะ) ทุก 5 วินาที | | [getBalance](https://docs.yescaptcha.com/th/api/get-balance.md) | ตรวจสอบยอดคงเหลือ | ไม่หักพอยต์ | | [getSoftID](https://docs.yescaptcha.com/th/api/get-soft-id.md) | ตรวจสอบ ID นักพัฒนา | ใช้สำหรับส่วนแบ่งรายได้นักพัฒนา | | [report](https://docs.yescaptcha.com/th/api/report.md) | รายงานผลการจดจำ | ประเภทงานการจดจำภาพขอคืนพอยต์หลังรายงานได้ | | [useragent](https://docs.yescaptcha.com/th/api/useragent.md) | รับ User-Agent ที่แนะนำ | `GET` ใช้กับ hCaptcha | หากเชื่อมต่อกับ API ไม่ได้ ดู [ปัญหาการเชื่อมต่อและเครือข่าย](https://docs.yescaptcha.com/th/help/troubleshooting.md) --- # การคิดค่าบริการและการคืนพอยต์ > YesCaptcha หักพอยต์อย่างไร: 1 หยวน = 1,000 พอยต์ หักตามประเภทงาน; งานที่จดจำไม่สำเร็จและหมดเวลาจะคืนพอยต์อัตโนมัติ คำขอที่คืนข้อผิดพลาดไม่ถูกหักพอยต์; ยอดคงเหลือต้องมากกว่า 10 พอยต์; การรายงานผลการจดจำภาพที่ผิดพลาดจะได้คืนพอยต์หลังรายงานประมาณ 24 ชั่วโมง Source: https://docs.yescaptcha.com/th/getting-started/billing/ · 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/getting-started/billing/ YesCaptcha หักพอยต์ตามงาน: แต่ละประเภทงานมีราคาคงที่ 1 หยวน = 1,000 พอยต์ เช่น `NoCaptchaTaskProxyless` งานละ 15 พอยต์ (≈ $2.25 / 1k) ดูราคาของแต่ละประเภทได้ที่ [ประเภทงานและราคา](https://docs.yescaptcha.com/th/tasks.md) > **เคล็ดลับ:** จ่ายเฉพาะงานที่สำเร็จ: งานที่จดจำไม่สำเร็จหรือหมดเวลาจะคืนพอยต์อัตโนมัติ และคำขอที่คืนข้อผิดพลาดจะไม่ถูกหักพอยต์ ## เมื่อไรจึงหักพอยต์ - **ประเภทแบบอะซิงโครนัส** (ประเภทที่คืนค่า token ส่วนใหญ่): หักพอยต์เมื่อสร้างงานสำเร็จ หลังจากนั้นหากจดจำไม่สำเร็จ (`ERROR_CAPTCHA_UNSOLVABLE` เป็นต้น) หรือหมดเวลา (`ERROR_TASK_TIMEOUT` โดยทั่วไป 110 วินาที) พอยต์จะถูกคืนอัตโนมัติ - **ประเภทแบบซิงโครนัส** (การจดจำภาพ, `ImageToTextTaskOcrBase`, `ImageToTextTaskMuggle`): หักพอยต์เมื่อจดจำสำเร็จและคืนผลลัพธ์ - หากคืนข้อผิดพลาดตั้งแต่ตอนสร้างงาน (พารามิเตอร์ไม่ถูกต้อง ยอดคงเหลือไม่พอ เกินขีดจำกัดงานพร้อมกัน เป็นต้น) จะไม่หักพอยต์ ## ยอดคงเหลือ - ยอดคงเหลือต้อง**มากกว่า 10 พอยต์** จึงจะสร้างงานได้ มิฉะนั้นจะคืน `ERROR_ZERO_BALANCE` - ใช้ [getBalance](https://docs.yescaptcha.com/th/api/get-balance.md) ตรวจสอบยอดคงเหลือ ไม่หักพอยต์ - การเติมเงินและโบนัส VIP ดูที่ [เติมเงินและ VIP](https://docs.yescaptcha.com/th/account/recharge.md): เมื่อยอดเติมเงินสะสมถึงระดับ VIP แล้ว การเติมเงินครั้งต่อ ๆ ไปจะได้รับพอยต์โบนัสตามสัดส่วน ## ประเภทที่คิดราคาตามกรณี - **การจดจำภาพ reCAPTCHA v2** (`ReCaptchaV2Classification`): ภาพเล็ก 1x1 กับภาพใหญ่ 3x3, 4x4 ราคาต่างกัน ดูที่ [การจดจำภาพ reCAPTCHA v2](https://docs.yescaptcha.com/th/tasks/recaptcha-classification.md) - **การจดจำภาพ hCaptcha** (`HCaptchaClassification`): หากไม่พบเป้าหมาย (ผลลัพธ์ว่าง) จะไม่หักพอยต์ ## คืนพอยต์หลังรายงานผลการจดจำที่ผิดพลาด หากผลการจดจำภาพคลิกผิด สามารถ [รายงาน](https://docs.yescaptcha.com/th/api/report.md) ได้ รายการที่เข้าเงื่อนไขจะได้รับพอยต์คืน: - เฉพาะการจดจำภาพ 5 ประเภทนี้: `FunCaptchaClassification`, `HCaptchaClassification`, `ReCaptchaV2Classification`, `AwsClassification`, `bCaptchaClassification` - ต้องรายงาน**ภายใน 1 ชั่วโมง**หลังสร้างงาน และงานเดียวกันนับเพียงครั้งเดียว - ไม่ได้คืนทันที แต่จะคำนวณรวม**ประมาณ 24 ชั่วโมงให้หลัง** - ตอนคำนวณจะเปรียบเทียบกับผู้ใช้รายอื่นที่ทำคำถามเดียวกันในช่วงเวลาเดียวกัน: หากอัตราความล้มเหลวที่รายงานสูงกว่าระดับของช่วงเวลานั้นอย่างชัดเจน จะคืนตามอัตราความล้มเหลวของช่วงเวลานั้น - โปรดรายงานทั้งความสำเร็จและความล้มเหลวตามความเป็นจริง การรายงานเฉพาะความล้มเหลวจะไม่ถูกใช้เป็นข้อมูลอ้างอิงของช่วงเวลานั้น และอัตราความล้มเหลวจะคำนวณจากงานทั้งหมดที่คุณสร้าง - หากสงสัยผลการคำนวณ สามารถ [ติดต่อฝ่ายสนับสนุน](https://docs.yescaptcha.com/th/help/contact.md) เพื่ออุทธรณ์ได้ สำหรับประเภทที่คืนค่า token (reCAPTCHA, hCaptcha, Turnstile เป็นต้น) เว็บไซต์ปลายทางเป็นผู้ตัดสินว่า token ผ่านหรือไม่ การรายงานจึงไม่ทำให้ได้คืนพอยต์ ## กรณีที่ไม่หักพอยต์ | กรณี | ผลที่คืน | | --- | --- | | พารามิเตอร์ผิดพลาด ไม่มีประเภทงานนี้ `clientKey` ผิด | รหัสข้อผิดพลาดที่ตรงกัน | | ยอดคงเหลือไม่มากกว่า 10 พอยต์ | `ERROR_ZERO_BALANCE` | | เกินขีดจำกัดงานพร้อมกัน | `ERROR_THREADS_MAXIMUM` ดู [ขีดจำกัดงานพร้อมกันและการหยุดชั่วคราวอัตโนมัติ](https://docs.yescaptcha.com/th/api/rate-limits.md) | | ระหว่างที่ถูกหยุดชั่วคราวอัตโนมัติ | `ERROR_IP_BLOCKED_5MIN` | | sitekey หรือโดเมนที่ตัดสินแล้วว่าไม่ถูกต้อง (ในช่วงแคช) | รหัสข้อผิดพลาดเดิม พร้อม `cached: true` | | จดจำไม่สำเร็จ หมดเวลา | พอยต์ที่หักไปแล้วจะถูกคืนอัตโนมัติ | ## ส่วนแบ่งรายได้และรางวัล - เมื่อใช้ซอฟต์แวร์หรือส่วนขยายของผู้อื่น งานอาจมี ID นักพัฒนาติดไปด้วย นักพัฒนาจะได้รับส่วนแบ่ง โดยไม่กระทบการหักพอยต์ของคุณ หากพัฒนาซอฟต์แวร์เอง ดู [ส่วนแบ่งรายได้นักพัฒนา](https://docs.yescaptcha.com/th/account/developer.md) - การเชิญผู้อื่นสมัครสมาชิก ดู [รางวัลแนะนำเพื่อน](https://docs.yescaptcha.com/th/account/referral.md) --- # คำขอและการตอบกลับ > ข้อกำหนดทั่วไปของ YesCaptcha API ได้แก่ POST JSON, การยืนยันตัวตนด้วย ClientKey, รูปแบบการตอบกลับด้วย errorId, งานแบบซิงโครนัสและแบบอะซิงโครนัส, polling ทุก 5 วินาที, timeout 110 วินาที, ผลลัพธ์เก็บไว้ประมาณ 10 นาที และภาษาของข้อความตาม Accept-Language Source: https://docs.yescaptcha.com/th/api/overview/ · 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/api/overview/ ทุกเมธอดรับ HTTPS `POST` พร้อม JSON (มีเพียง `/useragent` ที่เป็น `GET`) ยืนยันตัวตนด้วย `clientKey` ใน request body และตอบกลับเป็น JSON โดย `errorId` เป็น 0 หมายถึงสำเร็จ และเป็น 1 หมายถึงล้มเหลวพร้อม `errorCode` การแก้ CAPTCHA หนึ่งครั้งมีสองขั้นตอน: `createTask` สร้างงาน แล้วเรียก `getTaskResult` ทุก 5 วินาทีเพื่อตรวจผลลัพธ์ ส่วนประเภทแบบซิงโครนัสจะคืนผลลัพธ์จาก `createTask` ทันที ## คำขอ ```bash curl -s https://api.yescaptcha.com/createTask \ -H 'Content-Type: application/json' \ -d '{"clientKey": "YOUR_CLIENT_KEY", "task": {"type": "ImageToTextTaskOcrBase", "body": "BASE64_IMAGE"}}' ``` - Endpoint: `https://api.yescaptcha.com` (ทั่วโลก) หรือ `https://cn.yescaptcha.com` (จีน) ดูที่ [ที่อยู่สำหรับเชื่อมต่อ](https://docs.yescaptcha.com/th/getting-started/endpoints.md) - request body เป็น JSON ส่งพร้อมส่วนหัว `Content-Type: application/json` และต้องไม่เกิน 6 MB ใน JSON เขียนคอมเมนต์ไม่ได้ - ทุกคำขอต้องมี `clientKey` ให้คัดลอกค่าที่แสดงในแดชบอร์ดมาให้ครบ > **คำเตือน:** ใน Python requests ให้ใช้ `json=data` ไม่ใช่ `data=data` เพราะแบบหลังจะส่งเป็นฟอร์มและได้รับ `ERROR_TASK_ABSENT` หรือ `ERROR_REQUIRED_FIELDS` ## การตอบกลับ สำเร็จ: ```json { "errorId": 0, "taskId": "61138bb6-19fb-11ec-a9c8-0242ac110006" } ``` ล้มเหลว: ```json { "errorId": 1, "errorCode": "ERROR_ZERO_BALANCE", "errorDescription": "帐户余额不足" } ``` | ฟิลด์ | คำอธิบาย | | --- | --- | | `errorId` | 0 สำเร็จ, 1 ล้มเหลว | | `errorCode` | รหัสข้อผิดพลาดเมื่อล้มเหลว ความหมายและวิธีจัดการดูที่ [รหัสข้อผิดพลาด](https://docs.yescaptcha.com/th/api/errors.md) | | `errorDescription` | คำอธิบายสาเหตุที่ล้มเหลวเป็นข้อความ | | `taskId` | ID งาน | | `status` | `processing` (กำลังประมวลผล) หรือ `ready` (เสร็จแล้ว) | | `solution` | ผลลัพธ์การแก้ ฟิลด์ต่างกันตามประเภทงาน ดูในหน้าของแต่ละประเภทงาน | ให้ตัดสินผลจาก `errorId` และ `errorCode` ไม่ควรแยกวิเคราะห์ข้อความใน `errorDescription` เพราะอาจมีการปรับเปลี่ยน ## แบบซิงโครนัสและแบบอะซิงโครนัส | | แบบอะซิงโครนัส | แบบซิงโครนัส | | --- | --- | --- | | ประเภทที่เกี่ยวข้อง | ประเภทที่คืนค่า token (reCAPTCHA, hCaptcha, Turnstile, FunCaptcha), หน้าตรวจสอบของ Cloudflare, `ImageToTextTask`, `ImageToTextTaskM1` | การจดจำภาพ (ชื่อลงท้ายด้วย `Classification`), `ImageToTextTaskOcrBase`, `ImageToTextTaskMuggle` | | `createTask` คืนค่า | `taskId` | `status: "ready"` และ `solution` | | วิธีรับผลลัพธ์ | เรียก `getTaskResult` ทุก 5 วินาที | ไม่ต้องตรวจซ้ำ | แต่ละประเภทเป็นแบบใด ดูที่คอลัมน์ “วิธีคืนผลลัพธ์” ใน [ประเภทงานและราคา](https://docs.yescaptcha.com/th/tasks.md) ## Polling 1. หลังจาก `createTask` คืน `taskId` ให้รอ 5 วินาทีแล้วจึงเรียก `getTaskResult` 2. ถ้าได้ `status: "processing"` ให้รออีก 5 วินาทีแล้วลองใหม่ ถ้าได้ `status: "ready"` ผลลัพธ์จะอยู่ใน `solution` 3. ถ้าได้ `errorId: 1` ให้หยุด polling งานนี้ แล้วจัดการตาม `errorCode` - การตรวจซ้ำสำหรับ `taskId` เดียวกันภายใน 5 วินาทีจะได้ `processing` ทันที การตรวจถี่ขึ้นไม่ได้ทำให้ได้ผลลัพธ์เร็วขึ้น - โดยทั่วไปงานประมวลผลนานสุด 110 วินาที (บางประเภท 180 ถึง 220 วินาที) หากเกินเวลาจะคืน `ERROR_TASK_TIMEOUT` และคืนพอยต์อัตโนมัติ - ผลลัพธ์ถูกเก็บไว้ที่ฝั่งเซิร์ฟเวอร์ประมาณ 10 นาที หลังจากนั้น `taskId` จะหมดอายุ และการตรวจจะคืน `ERROR_TASKID_INVALID` - การตรวจผลลัพธ์ไม่หักพอยต์ จะหักเฉพาะตอนสร้างงาน ## ภาษาของข้อความ สำหรับข้อความเกี่ยวกับการหยุดชั่วคราวอัตโนมัติ, แคชพารามิเตอร์ที่ไม่ถูกต้อง และการให้หยุด polling `errorDescription` จะเลือกภาษาตามส่วนหัว `Accept-Language` ของคำขอ ถ้าขึ้นต้นด้วย `zh` จะคืนเป็นภาษาจีน ภาษาอื่นคืนเป็นภาษาอังกฤษ และถ้าไม่มีส่วนหัวนี้จะคืนทั้งภาษาจีนและภาษาอังกฤษ คำอธิบายของรหัสข้อผิดพลาดอื่นไม่ได้รับผลกระทบ ## ขั้นตอนถัดไป - [createTask สร้างงาน](https://docs.yescaptcha.com/th/api/create-task.md) - [getTaskResult รับผลลัพธ์](https://docs.yescaptcha.com/th/api/get-task-result.md) - [ขีดจำกัดงานพร้อมกันและการหยุดชั่วคราวอัตโนมัติ](https://docs.yescaptcha.com/th/api/rate-limits.md): หากเกิดข้อผิดพลาดมากเกินไป จะถูกหยุดชั่วคราวไม่กี่นาที --- # createTask สร้างงาน > POST /createTask สร้างงานจดจำ CAPTCHA ฟิลด์ในคำขอ (clientKey, task, softID) ลำดับการตรวจสอบ ประเภทแบบอะซิงโครนัสคืนค่า taskId ส่วนประเภทแบบซิงโครนัสคืนค่า solution ทันที ยอดคงเหลือต้องมากกว่า 10 พอยต์ Source: https://docs.yescaptcha.com/th/api/create-task/ · 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/api/create-task/ `createTask` สร้างงานจดจำ โดยระบุใน `task.type` ว่าจะจดจำ CAPTCHA ชนิดใด ประเภทแบบอะซิงโครนัสจะคืนค่า `taskId` จากนั้นใช้ [getTaskResult](https://docs.yescaptcha.com/th/api/get-task-result.md) เพื่อดึงผลลัพธ์ ส่วนประเภทแบบซิงโครนัสจะคืนผลลัพธ์ทันที > **หมายเหตุ:** ระบบจะหักพอยต์เมื่อสร้างงานสำเร็จ และยอดคงเหลือต้องมากกว่า 10 พอยต์จึงจะสร้างงานได้ งานที่จดจำไม่สำเร็จหรือหมดเวลาจะคืนพอยต์โดยอัตโนมัติ - POST `https://api.yescaptcha.com/createTask` (endpoint ทั่วโลก) - POST `https://cn.yescaptcha.com/createTask` (endpoint จีน) ## ฟิลด์ในคำขอ | ฟิลด์ | ชนิด | จำเป็น | คำอธิบาย | | --- | --- | --- | --- | | `clientKey` | string | ใช่ | ClientKey ของบัญชี คัดลอกได้จากแดชบอร์ดที่ [yescaptcha.com](https://yescaptcha.com/) | | `task` | object | ใช่ | อ็อบเจกต์งาน ต้องมี `type` ส่วนฟิลด์อื่นกรอกตามประเภทงาน ดูได้ในหน้าของแต่ละประเภทงาน | | `softID` | integer | ไม่ | ID นักพัฒนา ใส่ค่านี้เมื่อซอฟต์แวร์ที่คุณพัฒนามีผู้อื่นนำไปใช้ เพื่อรับส่วนแบ่งรายได้ ดู [ส่วนแบ่งรายได้นักพัฒนา](https://docs.yescaptcha.com/th/account/developer.md) | ## ตัวอย่างคำขอ จดจำ CAPTCHA แบบรูปภาพ (แบบซิงโครนัส): ```json { "clientKey": "YOUR_CLIENT_KEY", "task": { "type": "ImageToTextTaskOcrBase", "body": "BASE64_IMAGE" } } ``` ขอ token ของ reCAPTCHA v2 (แบบอะซิงโครนัส): ```json { "clientKey": "YOUR_CLIENT_KEY", "task": { "type": "NoCaptchaTaskProxyless", "websiteURL": "https://www.google.com/recaptcha/api2/demo", "websiteKey": "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-" } } ``` ฟิลด์ `task` ของแต่ละประเภทงานดูได้ในหน้าต่าง ๆ ภายใต้ [ประเภทงานและราคา](https://docs.yescaptcha.com/th/tasks.md) ## ผลลัพธ์ที่ได้รับ ประเภทแบบอะซิงโครนัส: ```json { "errorId": 0, "taskId": "61138bb6-19fb-11ec-a9c8-0242ac110006" } ``` เก็บ `taskId` ไว้ แล้วเริ่มเรียก `getTaskResult` หลังจากผ่านไป 5 วินาที ประเภทแบบซิงโครนัส: ```json { "errorId": 0, "status": "ready", "taskId": "2376919c-1863-11ec-a012-94e6f7355a0b", "solution": { "text": "LMResm" } } ``` ล้มเหลว: ```json { "errorId": 1, "errorCode": "ERROR_TASK_NOT_SUPPORTED", "errorDescription": "任务类型不正确或不受支持" } ``` ## ลำดับการตรวจสอบ เซิร์ฟเวอร์จะตรวจสอบคำขอตามลำดับนี้ และเมื่อพบปัญหาแรกจะคืนรหัสข้อผิดพลาดที่ตรงกันทันที โดยไม่หักพอยต์: 1. เนื้อหาคำขอเป็น JSON ที่ถูกต้อง: `ERROR_REQUEST_FORMATS` 2. มี `clientKey`: `ERROR_REQUIRED_FIELDS` 3. `clientKey` มีอยู่ในระบบ: `ERROR_KEY_DOES_NOT_EXIST` 4. ไม่ได้ถูกหยุดชั่วคราวอัตโนมัติ: `ERROR_IP_BLOCKED_5MIN` (ดู [ขีดจำกัดงานพร้อมกันและการหยุดชั่วคราวอัตโนมัติ](https://docs.yescaptcha.com/th/api/rate-limits.md)) 5. ยอดคงเหลือมากกว่า 10 พอยต์: `ERROR_ZERO_BALANCE` 6. มี `task`: `ERROR_TASK_ABSENT` 7. มี `task.type`: `ERROR_TASK_NOT_SUPPORTED` 8. ฟิลด์ที่จำเป็นครบถ้วน: `ERROR_REQUIRED_FIELDS` (`errorDescription` จะระบุว่าขาดฟิลด์ใด) 9. รูปภาพของงานประเภทรูปภาพถูกต้อง: `ERROR_ZERO_CAPTCHA_FILESIZE`, `ERROR_IMAGE_TYPE_NOT_SUPPORTED` เป็นต้น ## ตัวอย่างฉบับสมบูรณ์ สร้างงานและทำ polling (เรียกตรวจซ้ำเป็นระยะ) เพื่อรอผลลัพธ์ (ประเภทแบบอะซิงโครนัส): **curl** ```bash 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"}' ``` **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": "NoCaptchaTaskProxyless", "websiteURL": "https://www.google.com/recaptcha/api2/demo", "websiteKey": "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-", }) 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: "NoCaptchaTaskProxyless", websiteURL: "https://www.google.com/recaptcha/api2/demo", websiteKey: "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-", }); console.log(solution.gRecaptchaResponse); ``` --- # getTaskResult ดึงผลลัพธ์ > POST /getTaskResult ใช้ตรวจสอบผลลัพธ์ของงานแบบอะซิงโครนัส เรียกทุก 5 วินาที หากได้ processing ให้รอต่อ หากได้ ready ให้อ่าน solution และหยุด polling เมื่อเกิดข้อผิดพลาด งานใช้เวลาสูงสุดประมาณ 110 วินาที ผลลัพธ์เก็บไว้ประมาณ 10 นาที และการตรวจสอบไม่หักพอยต์ Source: https://docs.yescaptcha.com/th/api/get-task-result/ · 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/api/get-task-result/ `getTaskResult` ใช้ตรวจสอบผลลัพธ์ของงานแบบอะซิงโครนัส หลังสร้างงานแล้วให้เรียกทุก 5 วินาที: หากได้ `processing` ให้รอต่อ หากได้ `ready` ผลลัพธ์จะอยู่ใน `solution` และหากได้ข้อผิดพลาดให้หยุด การตรวจสอบไม่หักพอยต์ ไม่ว่าจะเรียกกี่ครั้งก็ตาม - POST `https://api.yescaptcha.com/getTaskResult` (endpoint ทั่วโลก) - POST `https://cn.yescaptcha.com/getTaskResult` (endpoint จีน) ## พารามิเตอร์คำขอ | ฟิลด์ | ประเภท | จำเป็น | คำอธิบาย | | --- | --- | --- | --- | | `clientKey` | string | ใช่ | ClientKey ของคุณ ใช้ค่าเดียวกับที่ใช้สร้างงาน | | `taskId` | string | ใช่ | ID งานที่ [createTask](https://docs.yescaptcha.com/th/api/create-task.md) คืนมา | ```json { "clientKey": "YOUR_CLIENT_KEY", "taskId": "61138bb6-19fb-11ec-a9c8-0242ac110006" } ``` ## ผลลัพธ์ที่ได้รับ | กรณี | ผลลัพธ์ | สิ่งที่ต้องทำ | | --- | --- | --- | | กำลังประมวลผล | `errorId` เป็น 0, `status` เป็น `processing` | ตรวจสอบอีกครั้งใน 5 วินาที | | เสร็จสิ้น | `errorId` เป็น 0, `status` เป็น `ready` ผลลัพธ์อยู่ใน `solution` | อ่าน `solution` โดยฟิลด์ต่าง ๆ ดูได้ในหน้าของแต่ละประเภทงาน | | จดจำไม่สำเร็จ | `errorId` เป็น 1, `errorCode` เป็น `ERROR_CAPTCHA_UNSOLVABLE` | คืนพอยต์อัตโนมัติแล้ว สามารถสร้างงานใหม่ได้ | | หมดเวลา | `errorId` เป็น 1, `errorCode` เป็น `ERROR_TASK_TIMEOUT` | คืนพอยต์อัตโนมัติแล้ว สามารถสร้างงานใหม่ได้ | | งานไม่มีอยู่หรือหมดอายุแล้ว | `errorId` เป็น 1, `errorCode` เป็น `ERROR_TASKID_INVALID` | หยุดตรวจสอบ `taskId` นี้ | ตัวอย่างเมื่อเสร็จสิ้น (reCAPTCHA v2): ```json { "errorId": 0, "status": "ready", "solution": { "gRecaptchaResponse": "03AGdBq25SxXT-pmSeBXjzScW-EiocHwwpwqtk1QXlJnGnU..." } } ``` ## กฎ - **ตรวจสอบทุก 5 วินาที** การตรวจสอบ `taskId` เดิมซ้ำภายใน 5 วินาทีจะได้ `processing` ทันที การเรียกถี่ขึ้นไม่ทำให้ได้ผลเร็วขึ้น - **งานประมวลผลนานสุดประมาณ 110 วินาที** (บางประเภท 180 ถึง 220 วินาที) หากหมดเวลาจะคืน `ERROR_TASK_TIMEOUT` และคืนพอยต์อัตโนมัติ แนะนำให้ตั้งเวลารอสูงสุดในโปรแกรมไว้ที่ประมาณ 3 นาที - **ผลลัพธ์เก็บไว้ประมาณ 10 นาที** หลังจากนั้น `taskId` จะใช้ไม่ได้และคืน `ERROR_TASKID_INVALID` เมื่อได้ผลลัพธ์แล้วควรนำไปใช้โดยเร็ว เพราะ token เองมีอายุสั้นกว่า (reCAPTCHA ประมาณ 120 วินาที) - **หยุดเมื่อเกิดข้อผิดพลาด** หลังได้ `errorId: 1` การตรวจสอบ `taskId` เดิมต่อจะได้ผลเหมือนเดิม สำหรับงานที่สิ้นสุดแล้ว เมื่อถูกตรวจสอบเป็นครั้งที่ 3 เป็นต้นไป ท้าย `errorDescription` จะมีข้อความแนะนำให้หยุด polling `ERROR_TASKID_INVALID` นับรวมในจำนวนข้อผิดพลาดของ [หยุดชั่วคราวอัตโนมัติ](https://docs.yescaptcha.com/th/api/rate-limits.md) (ID เดียวกันนับเฉพาะครั้งแรก) - สร้างงานที่ endpoint ใด ให้ตรวจสอบที่ endpoint นั้น - `getTaskResult` ไม่ได้รับผลจากการหยุดชั่วคราวอัตโนมัติ: งานที่สร้างไว้ก่อนการหยุดชั่วคราวยังตรวจสอบได้ตามปกติ --- # getBalance ตรวจสอบยอดคงเหลือ > POST /getBalance ตรวจสอบยอดคงเหลือของบัญชี (พอยต์ 1,000 พอยต์ = ¥1) รวมถึงยอดส่วนแบ่งรายได้นักพัฒนาและรางวัลแนะนำเพื่อน ไม่หักพอยต์ และใช้ตรวจสอบ clientKey ได้ Source: https://docs.yescaptcha.com/th/api/get-balance/ · 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/api/get-balance/ `getBalance` คืนค่าพอยต์คงเหลือของบัญชี (1,000 พอยต์ = ¥1) รวมถึงยอดส่วนแบ่งรายได้นักพัฒนาและรางวัลแนะนำเพื่อน (หน่วยเป็นหยวน) ไม่หักพอยต์ จึงมักใช้ตรวจสอบว่า `clientKey` ถูกต้องหรือไม่ - POST `https://api.yescaptcha.com/getBalance` (endpoint ทั่วโลก) - POST `https://cn.yescaptcha.com/getBalance` (endpoint จีน) ## พารามิเตอร์ของคำขอ | ฟิลด์ | ประเภท | จำเป็น | คำอธิบาย | | --- | --- | --- | --- | | `clientKey` | string | ใช่ | ClientKey ของบัญชี | ```json { "clientKey": "YOUR_CLIENT_KEY" } ``` ## ผลลัพธ์ที่ส่งกลับ ```json { "errorId": 0, "balance": 1071810, "softBalance": 36.0098, "inviteBalance": 0, "inviteBy": 0 } ``` | ฟิลด์ | ประเภท | คำอธิบาย | | --- | --- | --- | | `balance` | integer | ยอดคงเหลือของบัญชี หน่วยเป็นพอยต์ (1,000 พอยต์ = ¥1) ต้องมากกว่า 10 พอยต์จึงจะสร้างงานได้ | | `softBalance` | number | ยอดส่วนแบ่งรายได้นักพัฒนา หน่วยเป็นหยวน ดู [ส่วนแบ่งรายได้นักพัฒนา](https://docs.yescaptcha.com/th/account/developer.md) | | `inviteBalance` | number | ยอดรางวัลแนะนำเพื่อน หน่วยเป็นหยวน ดู [รางวัลแนะนำเพื่อน](https://docs.yescaptcha.com/th/account/referral.md) | | `inviteBy` | integer | ID ผู้ใช้ของผู้ที่แนะนำคุณให้สมัครสมาชิก หากไม่มีจะเป็น 0 | | `keyQuotaRemaining` | integer | ขีดจำกัดการใช้จ่ายที่เหลือของ `clientKey` นี้ในรอบปัจจุบัน หน่วยเป็นพอยต์ ฟิลด์นี้มีเฉพาะ `clientKey` ที่ตั้งขีดจำกัดไว้ โดยในกรณีนี้ `balance` จะเป็นค่าที่น้อยกว่าระหว่างยอดคงเหลือของบัญชีกับขีดจำกัดที่เหลือ ส่วน `clientKey` ที่ไม่ได้ตั้งขีดจำกัดจะไม่มีฟิลด์นี้ | หาก `clientKey` ไม่ถูกต้อง จะคืนค่า `ERROR_KEY_DOES_NOT_EXIST` หาก `clientKey` ตั้งไวต์ลิสต์ IP ไว้และ IP ที่ส่งคำขอไม่อยู่ในรายการ จะคืนค่า `ERROR_KEY_IP_NOT_ALLOWED` `getBalance` ได้รับผลจาก [หยุดชั่วคราวอัตโนมัติ](https://docs.yescaptcha.com/th/api/rate-limits.md) โดยระหว่างที่ถูกหยุดชั่วคราวจะคืนค่า `ERROR_IP_BLOCKED_5MIN` ## ตัวอย่าง **curl** get-balance.sh ```bash #!/usr/bin/env bash # Check the balance. getBalance is free and is a quick way to verify your clientKey set -euo pipefail curl -s https://api.yescaptcha.com/getBalance \ -H 'Content-Type: application/json' \ -d "{\"clientKey\": \"${YESCAPTCHA_CLIENT_KEY}\"}" echo ``` **Python** get_balance.py ```python """Check the balance. getBalance is free and is a quick way to verify your clientKey.""" import os import requests CLIENT_KEY = os.environ["YESCAPTCHA_CLIENT_KEY"] r = requests.post( "https://api.yescaptcha.com/getBalance", json={"clientKey": CLIENT_KEY}, timeout=30, ) data = r.json() if data.get("errorId"): # e.g. ERROR_KEY_DOES_NOT_EXIST when the clientKey is wrong print("error:", data.get("errorCode"), data.get("errorDescription")) else: print("balance (points):", data["balance"]) ``` **Node.js** get-balance.mjs ```js // Check the balance. getBalance is free and is a quick way to verify your clientKey. Node.js 18+ const CLIENT_KEY = process.env.YESCAPTCHA_CLIENT_KEY; const res = await fetch('https://api.yescaptcha.com/getBalance', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ clientKey: CLIENT_KEY }), }); const data = await res.json(); if (data.errorId) { // e.g. ERROR_KEY_DOES_NOT_EXIST when the clientKey is wrong console.log('error:', data.errorCode, data.errorDescription); } else { console.log('balance (points):', data.balance); } ``` --- # getSoftID ค้นหา ID นักพัฒนา > POST /getSoftID ใช้ค้นหา ID นักพัฒนา (softID) และยอดส่วนแบ่งรายได้สะสมของคุณ ใส่ softID ในคำขอ createTask ที่ซอฟต์แวร์ของคุณส่งแทนผู้ใช้คนอื่น เพื่อรับส่วนแบ่ง Source: https://docs.yescaptcha.com/th/api/get-soft-id/ · 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/api/get-soft-id/ `getSoftID` คืนค่า ID นักพัฒนา (`softID`) และยอดส่วนแบ่งรายได้นักพัฒนาสะสม (หน่วยเป็นหยวน) ของคุณ เมื่อมีผู้อื่นใช้ซอฟต์แวร์หรือส่วนขยายที่คุณพัฒนา ให้ใส่ ID นี้ในคำขอ `createTask` ของผู้ใช้เหล่านั้น คุณจะได้รับส่วนแบ่งตามยอดที่พวกเขาใช้จ่าย กติกาส่วนแบ่งและการถอนเงินดูได้ที่ [ส่วนแบ่งรายได้นักพัฒนา](https://docs.yescaptcha.com/th/account/developer.md) - POST `https://api.yescaptcha.com/getSoftID` (endpoint ทั่วโลก) - POST `https://cn.yescaptcha.com/getSoftID` (endpoint จีน) ## พารามิเตอร์ของคำขอ | ฟิลด์ | ประเภท | จำเป็น | คำอธิบาย | | --- | --- | --- | --- | | `clientKey` | string | ใช่ | ClientKey ของคุณเอง (ในฐานะนักพัฒนา) | ```json { "clientKey": "YOUR_CLIENT_KEY" } ``` ## ผลลัพธ์ที่ได้รับ ```json { "errorId": 0, "softID": 3, "balance": 0.004 } ``` | ฟิลด์ | ประเภท | คำอธิบาย | | --- | --- | --- | | `softID` | integer | ID นักพัฒนาของคุณ | | `balance` | number | ยอดส่วนแบ่งรายได้นักพัฒนาสะสม หน่วยเป็นหยวน | ## วิธีใช้งาน ในคำขอ `createTask` ที่ผู้ใช้ซอฟต์แวร์ของคุณส่ง ให้เพิ่มฟิลด์ระดับบนสุด `softID`: ```json { "clientKey": "THE_USERS_CLIENT_KEY", "task": { "type": "ImageToTextTaskOcrBase", "body": "BASE64_IMAGE" }, "softID": 3 } ``` > **คำเตือน:** `softID` ต้องอยู่ระดับบนสุดของ request body ในระดับเดียวกับ `clientKey` และ `task` โดยตัวพิมพ์เล็กพิมพ์ใหญ่ของชื่อฟิลด์ต้องตรงกัน หากใส่ไว้ใน `task` จะไม่มีผล `clientKey` คือ ClientKey ของผู้ใช้เอง และระบบจะหักพอยต์จากผู้ใช้ ส่วน `softID` คือ ID นักพัฒนาของคุณ --- # report รายงานผลลัพธ์ > POST /report ใช้รายงานว่าผลลัพธ์ของงานถูกต้องหรือไม่ กรุณารายงานทั้งงานที่สำเร็จและล้มเหลวตามจริง งานการจดจำภาพที่รายงานว่าล้มเหลวภายใน 1 ชั่วโมงหลังสร้างงานจะคืนพอยต์หลังรายงานโดยสรุปผลประมาณ 24 ชั่วโมงต่อมา Source: https://docs.yescaptcha.com/th/api/report/ · 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/api/report/ `report` ใช้แจ้งให้เราทราบว่าผลลัพธ์ของงานกลุ่มหนึ่งถูกต้องหรือไม่ **กรุณารายงานทั้งงานที่สำเร็จและล้มเหลว** งานการจดจำภาพที่รายงานว่า “ผิดพลาด” และเข้าเงื่อนไขจะได้รับพอยต์คืนหลังผ่านไปประมาณ 24 ชั่วโมง นอกจากนี้ผลที่รายงานยังใช้ประเมินและปรับปรุงการจดจำด้วย - POST `https://api.yescaptcha.com/report` (endpoint ทั่วโลก) - POST `https://cn.yescaptcha.com/report` (endpoint จีน) ## พารามิเตอร์ของคำขอ | ฟิลด์ | ประเภท | จำเป็น | คำอธิบาย | | --- | --- | --- | --- | | `id` | array of string | ใช่ | รายการ ID งาน รายงานได้หลายงานในครั้งเดียว | | `isSuccess` | boolean | ใช่ | `true` คือจดจำถูกต้อง, `false` คือจดจำผิดพลาด | ไม่ต้องส่ง `clientKey` เพราะ ID งานระบุงานได้อยู่แล้ว ```json { "id": ["610ff5e0-68eb-11ef-95a6-22e70a0b794d", "65b88c06-68eb-11ef-8e9a-52540023ccb3"], "isSuccess": false } ``` ## ผลลัพธ์ที่ส่งกลับ ```json { "errorId": 0, "status": "success" } ``` ## กรุณารายงานตามจริง การรายงานใช้ทั้งสำหรับสรุปผลการคืนพอยต์ และสำหรับประเมินและปรับปรุงการจดจำ กรุณารายงานตามผลลัพธ์ที่เกิดขึ้นจริง: - งานที่จดจำถูกต้องให้รายงาน `isSuccess: true` งานที่ผิดพลาดให้รายงาน `false` การรายงานที่รายงานเฉพาะงานล้มเหลวโดยไม่รายงานงานที่สำเร็จ หรือรายงานว่าล้มเหลวทั้งหมดโดยไม่สนใจว่าถูกหรือผิด จะไม่ถูกนำมาเป็นข้อมูลอ้างอิงในการสถิติและการสรุปผล - อัตราความล้มเหลวคำนวณจากงานทั้งหมดที่คุณสร้างในช่วงเวลานั้น ไม่ได้คำนวณเฉพาะงานที่รายงาน การรายงานว่าล้มเหลวมากขึ้นไม่ได้ทำให้ได้รับพอยต์คืนมากขึ้น: หากอัตราความล้มเหลวของคุณสูงกว่าช่วงเวลาเดียวกันอย่างชัดเจน จะคืนพอยต์ตามอัตราความล้มเหลวของช่วงเวลาเดียวกันเท่านั้น - เมื่อการตรวจสอบหนึ่งครั้งใช้หลายภาพ (เช่น FunCaptcha ที่ต้องเลือก 5 รอบต่อครั้ง) และไม่ทราบว่าภาพใดผิด คุณสามารถรายงานงานทั้งกลุ่มว่าล้มเหลวพร้อมกันได้ เมื่อการตรวจสอบผ่าน ให้รายงานงานทั้งกลุ่มว่าสำเร็จพร้อมกันเช่นเดียวกัน ## การคืนพอยต์หลังรายงานว่าล้มเหลว - มีเพียงการจดจำภาพ 5 ประเภทเท่านั้นที่คืนพอยต์ได้: `FunCaptchaClassification`, `HCaptchaClassification`, `ReCaptchaV2Classification`, `AwsClassification`, `bCaptchaClassification` - นับเฉพาะการรายงานที่ทำ**ภายใน 1 ชั่วโมง**หลังสร้างงาน และงานเดียวกันคืนพอยต์ได้เพียงครั้งเดียว - ไม่ได้คืนทันที แต่จะสรุปผลรวม**ประมาณ 24 ชั่วโมงต่อมา** - ตอนสรุปผล ระบบจะเปรียบเทียบกับผู้ใช้อื่นที่ทำคำถามเดียวกันในช่วงเวลาเดียวกัน หากอัตราความล้มเหลวที่รายงานสูงกว่าระดับของช่วงเวลาเดียวกันอย่างชัดเจน จะคืนพอยต์ตามอัตราความล้มเหลวของช่วงเวลาเดียวกัน - หากมีข้อสงสัยเกี่ยวกับการสรุปผล สามารถ[ติดต่อฝ่ายสนับสนุน](https://docs.yescaptcha.com/th/help/contact.md)เพื่ออุทธรณ์ได้ ประเภทที่คืนค่า token (reCAPTCHA, hCaptcha, Turnstile, FunCaptcha เป็นต้น) เว็บไซต์เป้าหมายเป็นผู้ตัดสินว่า token ผ่านหรือไม่ การรายงานจึงไม่คืนพอยต์ สรุปกฎการเรียกเก็บเงินดูได้ที่ [การเรียกเก็บเงินและการคืนพอยต์](https://docs.yescaptcha.com/th/getting-started/billing.md) --- # useragent ดึง User-Agent > GET https://api.yescaptcha.com/useragent คืนค่า User-Agent ของเบราว์เซอร์ที่แนะนำให้ใช้ (ข้อความธรรมดา) ฟิลด์ userAgent ของงาน hCaptcha รับเฉพาะค่านี้เท่านั้น Source: https://docs.yescaptcha.com/th/api/useragent/ · 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/api/useragent/ `/useragent` คืนค่า User-Agent ของเบราว์เซอร์ที่แนะนำให้ใช้ในปัจจุบัน เป็นข้อความธรรมดา ไม่ต้องใช้ `clientKey` และไม่หักพอยต์ ฟิลด์ `userAgent` ของงาน [hCaptcha](https://docs.yescaptcha.com/th/tasks/hcaptcha.md) รับเฉพาะค่านี้เท่านั้น และการใช้ค่านี้ตอนเข้าเว็บไซต์เป้าหมายก็ช่วยให้ token ผ่านการตรวจสอบได้ง่ายขึ้น - GET `https://api.yescaptcha.com/useragent` (endpoint ทั่วโลก) - GET `https://cn.yescaptcha.com/useragent` (endpoint จีน) ## ตัวอย่าง ```bash curl -s https://api.yescaptcha.com/useragent ``` ผลลัพธ์ที่ได้ (ค่าของวันที่ 2026-10-15 ซึ่งจะเปลี่ยนไปตามเวอร์ชันของเบราว์เซอร์): ```text Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/155.0.0.0 Safari/537.36 ``` > **หมายเหตุ:** ค่าที่คืนมาอาจเปลี่ยนแปลงได้ตลอดเวลา อย่าฝังไว้ในโค้ด ให้เรียกขอค่าหนึ่งครั้งทุกครั้งที่โปรแกรมเริ่มทำงาน - หากผลลัพธ์ที่ได้มี `userAgent` ให้ใช้ค่าในผลลัพธ์นั้นตอนส่ง token --- # รหัสข้อผิดพลาด > ความหมายและวิธีจัดการรหัสข้อผิดพลาดทั้งหมดของ YesCaptcha API แบ่งตามรูปแบบคำขอ ยอดคงเหลือของบัญชี งานพร้อมกันและการหยุดชั่วคราว ผลลัพธ์ของงาน พารามิเตอร์เว็บไซต์ รูปภาพ พร็อกซี และฝั่งเซิร์ฟเวอร์ คำขอที่ส่งคืนข้อผิดพลาดจะไม่ถูกหักพอยต์ Source: https://docs.yescaptcha.com/th/api/errors/ · 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/api/errors/ เมื่อเกิดข้อผิดพลาด API จะส่งคืน `errorId: 1` โดย `errorCode` คือรหัสข้อผิดพลาด และ `errorDescription` คือคำอธิบายเป็นข้อความ คำขอที่ส่งคืนข้อผิดพลาดจะไม่ถูกหักพอยต์ หากเกิดข้อผิดพลาดตั้งแต่ตอนสร้างงานจะไม่หักพอยต์ และหากสร้างงานแล้วแต่จดจำไม่สำเร็จหรือหมดเวลา ระบบจะคืนพอยต์ให้อัตโนมัติ > **เคล็ดลับ:** ในโปรแกรมให้ตัดสินจาก `errorCode` ไม่ใช่จากข้อความใน `errorDescription` เพราะข้อความอธิบายอาจมีการปรับเปลี่ยน ```json { "errorId": 1, "errorCode": "ERROR_ZERO_BALANCE", "errorDescription": "帐户余额不足" } ``` ## หลักการจัดการ 1. **ข้อผิดพลาดด้านพารามิเตอร์** (รูปแบบคำขอ ClientKey ประเภทงาน พารามิเตอร์เว็บไซต์ รูปภาพ) ส่งซ้ำก็ไม่ได้ผลลัพธ์ที่ต่างไป ต้องแก้คำขอก่อน 2. **การจดจำไม่สำเร็จและหมดเวลา** (`ERROR_CAPTCHA_UNSOLVABLE`, `ERROR_TASK_TIMEOUT`) สามารถสร้างงานใหม่ได้ 3. เมื่อเกิดข้อผิดพลาด ให้**หยุด polling** `taskId` นั้น และอย่าส่งคำขอเดิมซ้ำถี่ ๆ 4. ข้อผิดพลาดที่ทำเครื่องหมาย “นับรวมการหยุดชั่วคราวอัตโนมัติ” หาก `clientKey` เดียวกันเกิดข้อผิดพลาดนี้ 100 ครั้งภายในหนึ่งนาที จะถูกหยุดการสร้างงานชั่วคราว 5 นาที ส่วนข้อผิดพลาดที่ทำเครื่องหมาย “แคช” จะไม่นับรวม แต่ในช่วงที่แคชยังมีผล คำขอเดิมจะได้รับข้อผิดพลาดเดิมทันที ดูรายละเอียดที่ [ขีดจำกัดงานพร้อมกันและการหยุดชั่วคราวอัตโนมัติ](https://docs.yescaptcha.com/th/api/rate-limits.md) ## รหัสข้อผิดพลาดทั้งหมด ### รูปแบบคำขอ | รหัสข้อผิดพลาด | ความหมาย | วิธีแก้ไข | | --- | --- | --- | | `ERROR_REQUIRED_FIELDS` | ขาดฟิลด์ที่จำเป็น (เช่น `clientKey` หรือ `websiteURL` / `websiteKey` ที่ประเภทงานนั้นต้องการ) หรือเนื้อหาคำขอไม่ใช่ JSON | เพิ่มฟิลด์ที่ขาดตามที่ระบุในหน้าประเภทงาน และส่ง JSON ด้วย `POST` พร้อม `Content-Type: application/json` | | `ERROR_REQUEST_FORMATS` (นับรวมการหยุดชั่วคราว) | เนื้อหาคำขอไม่ใช่ JSON ที่ถูกต้อง | สร้างเนื้อหาคำขอด้วยไลบรารี JSON แทนการต่อสตริงเอง และใน JSON ห้ามมีคอมเมนต์ `//` | | `ERROR_TASK_ABSENT` (นับรวมการหยุดชั่วคราว) | ไม่มีฟิลด์ `task` ในการเรียก `createTask` | ใส่พารามิเตอร์ของงานไว้ในออบเจ็กต์ `task` หากใช้ Python requests ให้ใช้ `json=data` ไม่ใช่ `data=data` | | `ERROR_TASK_NOT_SUPPORTED` (นับรวมการหยุดชั่วคราว) | `task.type` สะกดผิด หรือประเภทงานนี้ถูกยกเลิกแล้ว | คัดลอกชื่อประเภทงานจาก "ประเภทงานและราคา" โดยชื่อแยกแยะตัวพิมพ์เล็กพิมพ์ใหญ่ | | `ERROR_PAGE_NOT_FOUND` | ไม่มีเส้นทางที่ร้องขอ | ตรวจสอบ URL ของ endpoint เช่น `https://api.yescaptcha.com/createTask` ชื่อเมธอดแยกแยะตัวพิมพ์เล็กพิมพ์ใหญ่ | | `ERROR_BAD_REQUEST` | ไม่สามารถประมวลผลคำขอได้ มักเกิดจาก HTTP method ไม่ถูกต้อง (ใช้ GET แทน POST) หรือค่าพารามิเตอร์ไม่ถูกต้อง | ส่ง JSON ด้วย `POST` และตรวจสอบชนิดและค่าของพารามิเตอร์ | | `ERROR_ILLEGAL_PARAMETERS` | ค่าพารามิเตอร์ไม่ถูกต้อง พบบ่อยกับหน้าตรวจสอบของ Cloudflare: `websiteURL` ไม่ใช่ URL สาธารณะที่ขึ้นต้นด้วย `http://` / `https://`, `postData` ไม่ใช่ออบเจ็กต์ หรือ `requiredCookies` ไม่ใช่อาร์เรย์ของสตริง (คืนโดย createTask ไม่หักพอยต์) หรือไม่สามารถ resolve โดเมนเป้าหมายผ่านพร็อกซีได้ (คืนโดย getTaskResult คืนพอยต์ให้อัตโนมัติ) | แก้ไขค่าตามตารางพารามิเตอร์ในหน้าประเภทงาน หากไม่สามารถ resolve โดเมนได้ ให้ตรวจสอบการสะกด URL และดูว่าพร็อกซีเข้าถึงเว็บไซต์นั้นได้หรือไม่ | ### บัญชีและยอดคงเหลือ | รหัสข้อผิดพลาด | ความหมาย | วิธีแก้ไข | | --- | --- | --- | | `ERROR_KEY_DOES_NOT_EXIST` (นับรวมการหยุดชั่วคราว) | ไม่มี `clientKey` นี้อยู่: ตัวอักษรเกินหรือหายไปตอนคัดลอก หรือคีย์ถูกรีเซ็ตในแดชบอร์ดแล้ว | คัดลอกคีย์ใหม่จากแดชบอร์ดของ yescaptcha.com โดยไม่มีช่องว่างหรือการขึ้นบรรทัดใหม่ | | `ERROR_KEY_EXPIRED` (นับรวมการหยุดชั่วคราว) | `clientKey` หมดอายุแล้ว (ส่งกลับจาก createTask และ getBalance โดยไม่หักพอยต์) มี 2 กรณี: ไม่ได้ใช้งานเป็นเวลานาน ระบบจึงกำหนดเวลาหมดอายุเพื่อปกป้องบัญชี (จะส่งอีเมลแจ้งเตือนก่อนหมดอายุ) หรือเลยเวลาหมดอายุที่ตั้งไว้สำหรับ `clientKey` นี้แล้ว | เข้าสู่ระบบแดชบอร์ดที่ yescaptcha.com หากหมดอายุเพราะไม่ได้ใช้งานเป็นเวลานาน ให้สร้าง `clientKey` ใหม่ ยอดคงเหลือจะย้ายไปยัง `clientKey` ใหม่โดยอัตโนมัติ หากมีการตั้งเวลาหมดอายุไว้ ให้ปรับเวลาหมดอายุหรือใช้ `clientKey` อื่น จากนั้นอัปเดตโปรแกรมของคุณด้วย `clientKey` ใหม่ | | `ERROR_KEY_IP_NOT_ALLOWED` | `clientKey` นี้ตั้งค่า allowlist ของ IP ไว้ และ IP ที่ส่งคำขอไม่อยู่ในรายการ (คืนค่าจาก createTask และ getBalance ไม่หักพอยต์ ไม่นับรวมการหยุดชั่วคราวอัตโนมัติ) | เข้าสู่ระบบแดชบอร์ดของ yescaptcha.com แล้วเพิ่ม IP สาธารณะของเครื่องที่ส่งคำขอลงใน allowlist ของ `clientKey` นี้ หรือใช้ `clientKey` อื่น หากเรียกใช้ API จากหลายเครื่อง ให้เพิ่ม IP สาธารณะของทุกเครื่อง (หมายถึง IP ที่เรียก API ของ YesCaptcha ไม่เกี่ยวกับพร็อกซีในพารามิเตอร์ของงาน) | | `ERROR_KEY_QUOTA_EXCEEDED` | `clientKey` นี้ตั้งขีดจำกัดการใช้จ่ายไว้ และขีดจำกัดที่เหลือในรอบปัจจุบันไม่พอสำหรับค่าใช้จ่ายของงานนี้ (คืนค่าจาก createTask ไม่หักพอยต์ ไม่นับรวมการหยุดชั่วคราวอัตโนมัติ) ขีดจำกัดนับตามพอยต์ที่หักจริง พอยต์ที่คืนจากงานที่ล้มเหลวหรือหมดเวลาจะคืนกลับเข้าขีดจำกัดด้วย | เข้าสู่ระบบแดชบอร์ดของ yescaptcha.com แล้วเพิ่มขีดจำกัดของ `clientKey` นี้ รอรอบถัดไป (รีเซ็ตทุกวัน ทุกวันจันทร์ หรือวันที่ 1 ของทุกเดือน ตามเวลาปักกิ่ง ขีดจำกัดแบบครั้งเดียวไม่รีเซ็ต) หรือใช้ `clientKey` อื่น `getBalance` จะคืนค่าขีดจำกัดที่เหลือของ `clientKey` นี้ (`keyQuotaRemaining`) | | `ERROR_ZERO_BALANCE` | ยอดคงเหลือไม่เพียงพอ ต้องมียอดคงเหลือมากกว่า 10 พอยต์จึงจะสร้างงานได้ | เติมเงินแล้วลองใหม่ ใช้ `getBalance` เพื่อตรวจสอบยอดคงเหลือ | ### งานพร้อมกันและการหยุดชั่วคราว | รหัสข้อผิดพลาด | ความหมาย | วิธีแก้ไข | | --- | --- | --- | | `ERROR_THREADS_MAXIMUM` (บางกรณีนับรวมการหยุดชั่วคราว) | บัญชีนี้มีงานประเภทนี้กำลังประมวลผลอยู่พร้อมกันมากเกินไป `limit` ในการตอบกลับคือขีดจำกัดงานพร้อมกันปัจจุบัน คำขอนี้ไม่ได้รับการประมวลผลและไม่หักพอยต์ | รอให้คำขอที่ส่งไปแล้วได้รับผลลัพธ์ก่อน หรือรอ 1-2 วินาทีแล้วลองใหม่ และจำกัดจำนวนคำขอที่รอผลพร้อมกันในโปรแกรมของคุณ | | `ERROR_IP_BLOCKED_5MIN` | `clientKey` นี้เกิดข้อผิดพลาดมากเกินไปในเวลาสั้น ๆ จึงถูกหยุดชั่วคราวอัตโนมัติ `retryAfter` คือจำนวนวินาทีที่เหลือ และ `blockReason` คือรหัสข้อผิดพลาดที่ทำให้ถูกหยุด | แก้ไขคำขอตาม `blockReason` แล้วรอ `retryAfter` วินาที การส่งคำขอระหว่างที่หยุดชั่วคราวจะไม่ทำให้เวลานานขึ้น | | `ERROR_NO_SLOT_AVAILABLE` | บริการจดจำกำลังมีภาระงานสูงชั่วคราว หากส่งคืนจาก createTask จะไม่มีการหักพอยต์ ส่วนงานที่รอในคิวนานเกินไปจะส่งคืนข้อผิดพลาดนี้จาก getTaskResult เช่นกัน และคืนพอยต์ให้อัตโนมัติ | รอสักครู่แล้วสร้างงานใหม่อีกครั้ง | ### งานและผลลัพธ์ | รหัสข้อผิดพลาด | ความหมาย | วิธีแก้ไข | | --- | --- | --- | | `ERROR_TASKID_INVALID` (นับรวมการหยุดชั่วคราว) | ไม่มี `taskId` นี้อยู่ หมดอายุแล้ว (ผลลัพธ์เก็บไว้ประมาณ 10 นาที) เป็นของ `clientKey` อื่น หรือถูกสร้างบน endpoint อีกฝั่ง | หยุด polling (เรียกตรวจซ้ำเป็นระยะ) งานนี้ แล้วตรวจสอบด้วย endpoint และ `clientKey` เดียวกับที่ใช้สร้างงาน | | `ERROR_TASK_TIMEOUT` | งานไม่เสร็จภายในเวลาที่กำหนด (โดยปกติ 110 วินาที) และคืนพอยต์ให้อัตโนมัติแล้ว | สร้างงานใหม่ หากหมดเวลาซ้ำๆ ให้ลองใช้ประเภทงานอื่นสำหรับ CAPTCHA แบบเดียวกัน | | `ERROR_CAPTCHA_UNSOLVABLE` | ครั้งนี้ไม่สามารถจดจำ CAPTCHA ได้ และคืนพอยต์ให้แล้ว ข้อผิดพลาดนี้ไม่นับรวมในการหยุดชั่วคราวอัตโนมัติ | สร้างงานใหม่ หากยังล้มเหลวต่อเนื่อง ให้ตรวจสอบ `websiteURL` `websiteKey` และพารามิเตอร์อื่นๆ หรือลองใช้ประเภทงานอื่นสำหรับ CAPTCHA แบบเดียวกัน | | `ERROR_SETTLEMENT_FAILED` (นับรวมการหยุดชั่วคราว) | ยอดคงเหลือไม่เพียงพอ ณ ตอนชำระยอด จึงไม่ได้ส่งคืนผลลัพธ์ | เติมเงินแล้วสร้างงานใหม่ | | `ERROR_NO_SUCH_CAPCHA_ID` | งานนี้ใช้งานไม่ได้อีกต่อไป | หยุด polling (เรียกตรวจซ้ำเป็นระยะ) งานนี้ แล้วสร้างงานใหม่ | | `ERROR_RECAPTCHA_TIMEOUT` | การจดจำ CAPTCHA หมดเวลา และคืนพอยต์ให้อัตโนมัติแล้ว | สร้างงานใหม่ | ### พารามิเตอร์ของเว็บไซต์เป้าหมาย | รหัสข้อผิดพลาด | ความหมาย | วิธีแก้ไข | | --- | --- | --- | | `ERROR_RECAPTCHA_INVALID_SITEKEY` (แคช ไม่นับรวมการหยุดชั่วคราว) | `websiteKey` ไม่ถูกต้อง | ค้นหา sitekey ในหน้าเว็บอีกครั้ง (ดูคู่มือการค้นหาพารามิเตอร์) คำขอที่เหมือนกันทุกประการจะได้รับข้อผิดพลาดนี้ทันทีในช่วงที่แคชยังมีผล พร้อม `cached: true` ในการตอบกลับ | | `ERROR_RECAPTCHA_INVALID_DOMAIN` (แคช ไม่นับรวมการหยุดชั่วคราว) | โดเมนของ `websiteURL` ไม่ตรงกับ `websiteKey` | ใส่ `websiteURL` เป็นที่อยู่ของหน้าเว็บที่แสดง CAPTCHA | | `ERROR_INVALID_KEY_TYPE` (แคช ไม่นับรวมการหยุดชั่วคราว) | sitekey เป็นของ CAPTCHA อีกประเภทหนึ่ง เช่น ใช้ key ของ v3 กับประเภทงานของ v2 | ระบุประเภทของ CAPTCHA ก่อน (ดู "วิธีระบุประเภท CAPTCHA") แล้วเลือกประเภทงานที่ตรงกัน สำหรับ v2 แบบ invisible ให้ตั้งค่า `isInvisible` | | `ERROR_DOMAIN_NOT_ALLOWED` (แคช ไม่นับรวมการหยุดชั่วคราว) | ยังไม่รองรับเว็บไซต์นี้ | ลองใช้ประเภทงานอื่นสำหรับ CAPTCHA แบบเดียวกัน หรือติดต่อฝ่ายสนับสนุน | | `ERROR_HIGH_DEMAND_DOMAIN` (นับรวมการหยุดชั่วคราว) | ยังไม่รองรับเว็บไซต์นี้ | หยุดส่งงานของเว็บไซต์นี้ และติดต่อฝ่ายสนับสนุน | | `ERROR_FAILED_LOADING_WIDGET` | ไม่สามารถโหลด CAPTCHA ด้วยพารามิเตอร์ที่ระบุได้ | ตรวจสอบ `websiteURL` และ `websiteKey` สำหรับประเภทงานที่ใช้พร็อกซีของคุณเอง ให้ตรวจสอบว่าพร็อกซีเข้าถึงเว็บไซต์ได้ | ### ภาพ | รหัสข้อผิดพลาด | ความหมาย | วิธีแก้ไข | | --- | --- | --- | | `ERROR_ZERO_CAPTCHA_FILESIZE` (นับรวมการหยุดชั่วคราว) | รูปภาพว่างเปล่าหรือเล็กเกินไป | ตรวจสอบว่าข้อมูล Base64 ครบถ้วนและไม่มีคำนำหน้า `data:image/...;base64,` | | `ERROR_TOO_BIG_CAPTCHA_FILESIZE` (นับรวมการหยุดชั่วคราว) | รูปภาพมีขนาดใหญ่เกินไป | บีบอัดหรือย่อรูปภาพ โดยเนื้อหาคำขอทั้งหมดต้องมีขนาดไม่เกิน 6 MB | | `ERROR_IMAGE_TYPE_NOT_SUPPORTED` (นับรวมการหยุดชั่วคราว) | ไม่รองรับรูปแบบของรูปภาพ หรือรูปภาพนี้ไม่ใช่ชนิดที่ประเภทงานนี้ประมวลผลได้ หากเกิดขึ้นเพียงครั้งเดียว ClientKey จะถูกหยุดชั่วคราว 30 นาที | ใช้ JPG หรือ PNG และตรวจสอบว่ารูปภาพตรงกับประเภทงาน เช่น การจดจำภาพของ reCAPTCHA ต้องใช้ขนาด 100x100, 300x300 หรือ 450x450 | | `ERROR_ILLEGAL_IMAGE` (นับรวมการหยุดชั่วคราว) | ขนาดรูปภาพไม่ตรงตามข้อกำหนดของประเภทงานนี้ | ปรับขนาดรูปภาพตามที่อธิบายไว้ในหน้าของประเภทงาน | | `ERROR_PARSE_IMAGE_FAIL` | ไม่สามารถถอดรหัสรูปภาพได้ มักเกิดจาก Base64 ไม่ครบถ้วนหรือมีคำนำหน้า | ตรวจสอบการเข้ารหัส Base64 และลบคำนำหน้า `data:` กับการขึ้นบรรทัดใหม่ออก | | `ERROR_UNKNOWN_QUESTION` | `question` ไม่ถูกต้อง หรือยังไม่รองรับคำถามนี้ | ตรวจสอบกับรายการคำถามในหน้าของประเภทงาน หากเป็นคำถามที่ไม่รองรับ ให้ติดต่อฝ่ายสนับสนุน โดยปกติคำถามใหม่จะได้รับการรองรับภายใน 3 วันทำการ | | `ERROR_UNKNOW_450x450_QUESTION` | คำถามนี้ยังไม่รองรับรูปภาพ 4x4 (450x450) | โหลดโจทย์ในหน้าเว็บใหม่เพื่อให้ได้คำถามอื่น | ### พร็อกซี | รหัสข้อผิดพลาด | ความหมาย | วิธีแก้ไข | | --- | --- | --- | | `ERROR_PROXY_CONNECT_REFUSED` | พร็อกซีปฏิเสธการเชื่อมต่อ | ตรวจสอบที่อยู่ พอร์ต และโปรโตคอลของพร็อกซี และตรวจสอบว่ารับการเชื่อมต่อจากภายนอกได้ (ต้องไม่ใช่ที่อยู่ภายในเครื่อง เช่น 127.0.0.1) | | `ERROR_PROXY_CONNECT_TIMEOUT` | การเชื่อมต่อกับพร็อกซีหมดเวลา | ใช้พร็อกซีที่เสถียรกว่านี้ | | `ERROR_PROXY_READ_TIMEOUT` | การอ่านข้อมูลผ่านพร็อกซีหมดเวลา | ใช้พร็อกซีที่เร็วกว่านี้ | | `ERROR_PROXY_BANNED` | พร็อกซีใช้งานไม่ได้ หรือ IP ของพร็อกซีถูกเว็บไซต์เป้าหมายบล็อก | ใช้พร็อกซีอื่น | | `ERROR_PROXY_INCORRECT` | รูปแบบของพารามิเตอร์พร็อกซีไม่ถูกต้อง | ตรวจสอบรูปแบบของ `proxyType` `proxyAddress` `proxyPort` (หรือสตริง `proxy`) | | `ERROR_PROXY_TRANSPARENT` | พร็อกซีเป็นแบบโปร่งใส (transparent) และเปิดเผย IP จริง | ใช้พร็อกซีแบบ anonymous (elite) | | `ERROR_PROXY_NOT_AUTHORISED` | ชื่อผู้ใช้หรือรหัสผ่านของพร็อกซีไม่ถูกต้อง | ตรวจสอบ `proxyLogin` และ `proxyPassword` (หรือข้อมูลเข้าสู่ระบบในสตริง `proxy`) | | `ERROR_PROXY_TLS_ERROR` | การทำ TLS handshake กับพร็อกซีล้มเหลว มักเกิดจาก `proxyType` ไม่ถูกต้อง (เช่น ตั้งเป็น https สำหรับพร็อกซี http) | ตรวจสอบโปรโตคอลของพร็อกซี | | `ERROR_PROXY_CONNECTION_FAILED` | ไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์พร็อกซีได้ | ตรวจสอบที่อยู่และพอร์ตของพร็อกซี และตรวจสอบว่าพร็อกซีทำงานปกติ | ### เซิร์ฟเวอร์ | รหัสข้อผิดพลาด | ความหมาย | วิธีแก้ไข | | --- | --- | --- | | `ERROR_SERVICE_UNAVALIABLE` | บริการไม่พร้อมใช้งานชั่วคราว (รหัสข้อผิดพลาดสะกดว่า `UNAVALIABLE`) | ลองใหม่ภายหลัง หากยังเกิดขึ้นต่อเนื่อง โปรดติดต่อฝ่ายสนับสนุน | | `ERROR_INTERNAL_SERVER_ERROR` | เกิดข้อผิดพลาดภายในเซิร์ฟเวอร์ | ลองใหม่ภายหลัง หากยังเกิดขึ้นอีก โปรดติดต่อฝ่ายสนับสนุนพร้อมแจ้ง `taskId` | | `ERROR_UNKNOWN` | ข้อผิดพลาดที่ยังไม่ได้จัดประเภท | ลองใหม่ภายหลัง หากยังเกิดขึ้นอีก โปรดติดต่อฝ่ายสนับสนุนพร้อมแจ้ง `taskId` | ## ฟิลด์เพิ่มเติม ข้อผิดพลาดบางรายการจะมีฟิลด์เพิ่มเติมในการตอบกลับ: | ฟิลด์ | ปรากฏใน | คำอธิบาย | | --- | --- | --- | | `retryAfter` | `ERROR_IP_BLOCKED_5MIN`, ข้อผิดพลาดที่แคชไว้ | ต้องรออีกกี่วินาที | | `blockReason` | `ERROR_IP_BLOCKED_5MIN` | รหัสข้อผิดพลาดที่ทำให้ถูกหยุดชั่วคราว | | `blockDetail` | `ERROR_IP_BLOCKED_5MIN` | ประเภท URL และ sitekey ของคำขอที่ทำให้ถูกหยุดชั่วคราว เพื่อช่วยระบุสาเหตุ | | `cached` | ข้อผิดพลาดที่แคชไว้ | เป็น `true` หมายถึงนี่เป็นผลลัพธ์จากแคช ไม่ได้มีการจดจำจริง | | `badRequest` | ข้อผิดพลาดที่แคชไว้ | พารามิเตอร์ที่ตรงกับแคช | | `limit` | `ERROR_THREADS_MAXIMUM` | ขีดจำกัดงานพร้อมกันในปัจจุบันของคุณ | กฎเรื่องภาษาของ `errorDescription` ดูได้ที่ [คำขอและการตอบกลับ](https://docs.yescaptcha.com/th/api/overview.md) --- # ขีดจำกัดงานพร้อมกันและการหยุดชั่วคราวอัตโนมัติ > ขีดจำกัดงานพร้อมกันของ YesCaptcha (ERROR_THREADS_MAXIMUM ไม่หักพอยต์และไม่นับรวมการหยุดชั่วคราว) การหยุดชั่วคราวอัตโนมัติเมื่อมีข้อผิดพลาดมากเกินไป (100 ครั้งใน 1 นาที หยุดชั่วคราว 5 นาที ERROR_IP_BLOCKED_5MIN) และแคชพารามิเตอร์ที่ไม่ถูกต้อง (cached) Source: https://docs.yescaptcha.com/th/api/rate-limits/ · 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/api/rate-limits/ เพื่อให้ทุกคนได้รับการจดจำที่รวดเร็ว YesCaptcha มีกฎป้องกันสามข้อ ได้แก่ จำกัด**จำนวนงานที่กำลังประมวลผลพร้อมกัน**ต่อบัญชี (ขีดจำกัดงานพร้อมกัน) `clientKey` เดียวกันที่เกิด**ข้อผิดพลาดมากเกินไปในเวลาสั้น ๆ จะถูกหยุดชั่วคราว**ไม่กี่นาที (หยุดชั่วคราวอัตโนมัติ) และ**พารามิเตอร์ที่ตัดสินแล้วว่าไม่ถูกต้อง**จะได้รับข้อผิดพลาดเดิมกลับทันทีในช่วงระยะเวลาหนึ่ง (แคชพารามิเตอร์ที่ไม่ถูกต้อง) ทั้งสามกรณีนี้ไม่หักพอยต์ ## ขีดจำกัดงานพร้อมกัน เราจำกัดจำนวนงานที่กำลังประมวลผลในเวลาเดียวกันตามบัญชีและตามประเภทงาน โดยจำกัดจำนวนงานพร้อมกัน ไม่ใช่จำนวนคำขอต่อนาที - งานนับว่า “กำลังประมวลผล” ตั้งแต่เรียก `createTask` จนกว่าการเรียกนั้นจะคืนค่า ประเภทการจดจำภาพคืนผลลัพธ์ใน `createTask` โดยตรง ดังนั้น **จำนวนงานพร้อมกัน ≈ จำนวนงานที่ส่งต่อวินาที × เวลาที่ใช้ต่องาน** เช่น งานละ 0.5 วินาที ส่งวินาทีละ 40 งาน จำนวนงานพร้อมกันจะอยู่ที่ประมาณ 20 - คำขอภายใต้บัญชีเดียวกันจะนับรวมกัน ส่วนแต่ละประเภทงานนับแยกกัน - คำขอที่เกินโควตาจะได้รับ `ERROR_THREADS_MAXIMUM` ทันที โดย `limit` ในการตอบกลับคือขีดจำกัดปัจจุบันของคุณ **ไม่หักพอยต์ และไม่นับรวมการหยุดชั่วคราวอัตโนมัติ** - เมื่อเซิร์ฟเวอร์จดจำทำงานไม่ทัน บัญชีที่ใช้เวลาจดจำมากที่สุดจะถูก**ลดขีดจำกัดของงานประเภทนั้นลงครึ่งหนึ่งชั่วคราว และคืนค่าอัตโนมัติหลังผ่านไป 10 นาที** เป็นเพียงการจำกัดความเร็ว ไม่ได้หยุดบัญชีชั่วคราว - หากต้องการโควตาที่สูงขึ้น โปรด[ติดต่อฝ่ายสนับสนุน](https://docs.yescaptcha.com/th/help/contact.md) โควตาเริ่มต้นของแต่ละประเภทเมื่อกำหนดแล้วจะประกาศในหน้านี้และใน[บันทึกการอัปเดตบริการ](https://docs.yescaptcha.com/th/changelog.md) ```json { "errorId": 1, "errorCode": "ERROR_THREADS_MAXIMUM", "errorDescription": "This account already has 30 tasks of this type in progress, which is the limit. Lower the concurrency and wait for pending requests to return before sending more; rejected requests are not charged and do not lead to a block.", "limit": 30 } ``` (ตัวเลขในตัวอย่างใช้เพื่อประกอบการอธิบายเท่านั้น) ### แนวทางที่แนะนำ 1. จำกัด “จำนวนคำขอที่รอผลลัพธ์พร้อมกัน” ในโปรแกรม เช่น ใช้ semaphore หรือ thread pool ขนาดคงที่ แทนที่จะควบคุมเพียงจำนวนที่ส่งต่อวินาที 2. เมื่อได้รับ `ERROR_THREADS_MAXIMUM` ให้รอให้คำขอที่ส่งไปแล้วคืนค่าก่อนส่งคำขอใหม่ หรือรอ 1 ถึง 2 วินาทีแล้วลองใหม่ ห้ามลองซ้ำเป็นลูปทันที 3. ส่งงานจำนวนมากให้กระจายอย่างสม่ำเสมอ อย่าส่งงานนับพันนับหมื่นออกไปพร้อมกันในครั้งเดียว ตัวอย่าง Python (asyncio): ```python import asyncio import os import aiohttp CLIENT_KEY = os.environ["YESCAPTCHA_CLIENT_KEY"] LIMIT = 15 # below your concurrency limit sem = asyncio.Semaphore(LIMIT) async def solve(session, task): async with sem: # at most LIMIT requests in progress at a time result = {} for attempt in range(5): async with session.post( "https://api.yescaptcha.com/createTask", json={"clientKey": CLIENT_KEY, "task": task}, ) as resp: result = await resp.json() if result.get("errorCode") != "ERROR_THREADS_MAXIMUM": return result await asyncio.sleep(1 + attempt) # over the limit: wait and retry return result ``` ## หยุดชั่วคราวอัตโนมัติ `clientKey` เดียวกันที่สร้างคำขอผิดพลาดจำนวนมากในเวลาสั้น ๆ จะถูกหยุดการสร้างงานชั่วคราวโดยอัตโนมัติ: | เงื่อนไขที่ทำให้เกิด | ระยะเวลาที่หยุดชั่วคราว | | --- | --- | | ข้อผิดพลาดที่ระบุด้านล่างสะสมครบ 100 ครั้งภายในนาทีปฏิทินเดียวกัน | 5 นาที | | เกิด `ERROR_IMAGE_TYPE_NOT_SUPPORTED` 1 ครั้ง | 30 นาที | | โดน “แคชพารามิเตอร์ที่ไม่ถูกต้อง” 1,000 ครั้งภายในนาทีปฏิทินเดียวกัน | 5 นาที | ข้อผิดพลาดที่นับรวมการหยุดชั่วคราว: - [`ERROR_REQUEST_FORMATS`](https://docs.yescaptcha.com/th/api/errors.md#ERROR_REQUEST_FORMATS) - [`ERROR_TASK_ABSENT`](https://docs.yescaptcha.com/th/api/errors.md#ERROR_TASK_ABSENT) - [`ERROR_TASK_NOT_SUPPORTED`](https://docs.yescaptcha.com/th/api/errors.md#ERROR_TASK_NOT_SUPPORTED) - [`ERROR_KEY_DOES_NOT_EXIST`](https://docs.yescaptcha.com/th/api/errors.md#ERROR_KEY_DOES_NOT_EXIST) - [`ERROR_KEY_EXPIRED`](https://docs.yescaptcha.com/th/api/errors.md#ERROR_KEY_EXPIRED) - [`ERROR_TASKID_INVALID`](https://docs.yescaptcha.com/th/api/errors.md#ERROR_TASKID_INVALID) - [`ERROR_SETTLEMENT_FAILED`](https://docs.yescaptcha.com/th/api/errors.md#ERROR_SETTLEMENT_FAILED) - [`ERROR_HIGH_DEMAND_DOMAIN`](https://docs.yescaptcha.com/th/api/errors.md#ERROR_HIGH_DEMAND_DOMAIN) - [`ERROR_ZERO_CAPTCHA_FILESIZE`](https://docs.yescaptcha.com/th/api/errors.md#ERROR_ZERO_CAPTCHA_FILESIZE) - [`ERROR_TOO_BIG_CAPTCHA_FILESIZE`](https://docs.yescaptcha.com/th/api/errors.md#ERROR_TOO_BIG_CAPTCHA_FILESIZE) - [`ERROR_IMAGE_TYPE_NOT_SUPPORTED`](https://docs.yescaptcha.com/th/api/errors.md#ERROR_IMAGE_TYPE_NOT_SUPPORTED) - [`ERROR_ILLEGAL_IMAGE`](https://docs.yescaptcha.com/th/api/errors.md#ERROR_ILLEGAL_IMAGE) `ERROR_THREADS_MAXIMUM` ที่คืนจากขีดจำกัดงานพร้อมกันของบัญชี (มีฟิลด์ `limit`) ไม่นับรวม ส่วนข้อผิดพลาดชื่อเดียวกันที่คืนเมื่อบริการจดจำไม่ว่าง (ไม่มี `limit`) จะนับรวม ส่วนการจดจำล้มเหลว (`ERROR_CAPTCHA_UNSOLVABLE`) ยอดคงเหลือไม่พอ (`ERROR_ZERO_BALANCE`) ฟิลด์ที่ขาด (`ERROR_REQUIRED_FIELDS`) และคำถามที่ไม่รองรับ (`ERROR_UNKNOWN_QUESTION`) เป็นต้น ไม่นับรวม ระหว่างที่ถูกหยุดชั่วคราว: - ส่งผลเฉพาะ `createTask` และ `getBalance` ซึ่งจะคืน `ERROR_IP_BLOCKED_5MIN` ส่วน `getTaskResult` ไม่ได้รับผลกระทบ งานที่สร้างก่อนการหยุดชั่วคราวยังตรวจสอบผลลัพธ์ได้ตามปกติ - การตอบกลับมี `retryAfter` (เหลืออีกกี่วินาที) `blockReason` (รหัสข้อผิดพลาดที่ทำให้ถูกหยุดชั่วคราว) และ `blockDetail` (ประเภท URL และ sitekey ของคำขอลักษณะนั้น) ให้แก้โปรแกรมตามข้อมูลเหล่านี้ - การส่งคำขอต่อไปไม่ทำให้ระยะเวลาหยุดชั่วคราวยาวขึ้น เมื่อครบกำหนดจะกลับมาใช้งานได้อัตโนมัติ ไม่ต้องติดต่อฝ่ายสนับสนุน - ในแดชบอร์ดของ [yescaptcha.com](https://yescaptcha.com/) ดูบันทึกการหยุดชั่วคราวในช่วง 24 ชั่วโมงล่าสุดได้ ```json { "errorId": 1, "errorCode": "ERROR_IP_BLOCKED_5MIN", "errorDescription": "...", "retryAfter": 182, "blockReason": "ERROR_TASK_NOT_SUPPORTED" } ``` ## แคชพารามิเตอร์ที่ไม่ถูกต้อง ข้อผิดพลาดบางประเภทขึ้นอยู่กับพารามิเตอร์ของคำขอ ส่งพารามิเตอร์เดิมซ้ำก็ได้ผลลัพธ์เดิม: - [`ERROR_RECAPTCHA_INVALID_SITEKEY`](https://docs.yescaptcha.com/th/api/errors.md#ERROR_RECAPTCHA_INVALID_SITEKEY) - [`ERROR_RECAPTCHA_INVALID_DOMAIN`](https://docs.yescaptcha.com/th/api/errors.md#ERROR_RECAPTCHA_INVALID_DOMAIN) - [`ERROR_INVALID_KEY_TYPE`](https://docs.yescaptcha.com/th/api/errors.md#ERROR_INVALID_KEY_TYPE) - [`ERROR_DOMAIN_NOT_ALLOWED`](https://docs.yescaptcha.com/th/api/errors.md#ERROR_DOMAIN_NOT_ALLOWED) ข้อผิดพลาดเหล่านี้ไม่นับรวมการหยุดชั่วคราว แต่จะถูกแคชทั่วทั้งไซต์ โดยแคช 2 นาทีหลังตัดสินครั้งแรก และถ้าได้รับการยืนยันซ้ำภายใน 1 ชั่วโมงจะแคช 10 นาที ระหว่างที่แคชอยู่ คำขอเดียวกัน (ประเภทงานและ `websiteKey` เดียวกัน หรือโดเมนเว็บไซต์เดียวกัน) จะได้รับข้อผิดพลาดเดิมทันที ไม่หักพอยต์ และการตอบกลับมี `"cached": true` `retryAfter` (จำนวนวินาทีที่เหลือของแคช) และ `badRequest` (พารามิเตอร์ที่ตรงกัน) เมื่อแก้ `websiteKey` หรือเปลี่ยนประเภทงาน จะมีผลทันที ## ความแตกต่างระหว่างขีดจำกัดงานพร้อมกันและการหยุดชั่วคราวอัตโนมัติ | | ขีดจำกัดงานพร้อมกัน | หยุดชั่วคราวอัตโนมัติ | | --- | --- | --- | | สาเหตุ | มีงานที่กำลังประมวลผลพร้อมกันมากเกินไป | มีคำขอที่ผิดพลาดมากเกินไปในเวลาสั้น ๆ | | ลักษณะที่เกิดขึ้น | ปฏิเสธเฉพาะคำขอส่วนที่เกิน โดยคืน `ERROR_THREADS_MAXIMUM` | `clientKey` นี้ถูกหยุดการสร้างงานชั่วคราว โดยคืน `ERROR_IP_BLOCKED_5MIN` | | การกลับมาใช้งาน | ส่งคำขอใหม่ได้ทันทีที่มีคำขอประมวลผลเสร็จ ส่วนขีดจำกัดที่ลดครึ่งหนึ่งชั่วคราวจะคืนค่าหลังผ่านไป 10 นาที | กลับมาใช้งานอัตโนมัติเมื่อครบกำหนด | | หักพอยต์ | ไม่หัก | ไม่หัก | --- # ประเภทงานและราคา > ราคา (พอยต์ 1 หยวน = 1,000 พอยต์) และรูปแบบการคืนค่าของทุกประเภทงานที่เปิดให้ใช้งานของ YesCaptcha ได้แก่ reCAPTCHA, hCaptcha และ Turnstile ที่คืนค่า token, หน้าตรวจสอบของ Cloudflare ที่คืนค่า Cookie, รวมถึงอักษรอังกฤษและตัวเลขในภาพและการจดจำภาพที่คืนค่าผลการจดจำ Source: https://docs.yescaptcha.com/th/tasks/ · Last verified: 2026-10-19 > This page was machine-translated from the Chinese version. If anything differs, the Chinese version prevails: https://docs.yescaptcha.com/zh/tasks/ แต่ละงานจะหักพอยต์ตามประเภทงานในจำนวนคงที่ โดย 1 หยวน = 1,000 พอยต์ และหากจดจำไม่สำเร็จหรือหมดเวลา ระบบจะคืนพอยต์ให้อัตโนมัติ ตารางด้านล่างคือทุกประเภทงานที่เปิดให้ใช้งาน สามารถค้นหาตามชื่อได้ เวอร์ชันที่เครื่องอ่านได้: [/data/task-types.json](https://docs.yescaptcha.com/data/task-types.json) | CAPTCHA | ประเภทงาน | ราคา | รูปแบบการคืนผลลัพธ์ | | --- | --- | --- | --- | | [reCAPTCHA v2](https://docs.yescaptcha.com/th/tasks/recaptcha-v2.md) | `NoCaptchaTaskProxyless` | $2.25 / 1k; 15 พอยต์/งาน · ¥15 / 1k | แบบอะซิงโครนัส | | [reCAPTCHA v2](https://docs.yescaptcha.com/th/tasks/recaptcha-v2.md) | `RecaptchaV2TaskProxyless` | $3.00 / 1k; 20 พอยต์/งาน · ¥20 / 1k | แบบอะซิงโครนัส | | [reCAPTCHA v2](https://docs.yescaptcha.com/th/tasks/recaptcha-v2.md) | `NoCaptchaTask` ใช้พร็อกซีของคุณเอง | $2.25 / 1k; 15 พอยต์/งาน · ¥15 / 1k | แบบอะซิงโครนัส | | [reCAPTCHA v2](https://docs.yescaptcha.com/th/tasks/recaptcha-v2.md) | `RecaptchaV2EnterpriseTaskProxyless` | $3.00 / 1k; 20 พอยต์/งาน · ¥20 / 1k | แบบอะซิงโครนัส | | [reCAPTCHA v2](https://docs.yescaptcha.com/th/tasks/recaptcha-v2.md) | `RecaptchaV2EnterpriseTask` ใช้พร็อกซีของคุณเอง | $3.00 / 1k; 20 พอยต์/งาน · ¥20 / 1k | แบบอะซิงโครนัส | | [reCAPTCHA v3](https://docs.yescaptcha.com/th/tasks/recaptcha-v3.md) | `RecaptchaV3TaskProxyless` | $3.00 / 1k; 20 พอยต์/งาน · ¥20 / 1k | แบบอะซิงโครนัส | | [reCAPTCHA v3](https://docs.yescaptcha.com/th/tasks/recaptcha-v3.md) | `RecaptchaV3TaskProxylessM1` | $3.75 / 1k; 25 พอยต์/งาน · ¥25 / 1k | แบบอะซิงโครนัส | | [reCAPTCHA v3](https://docs.yescaptcha.com/th/tasks/recaptcha-v3.md) | `RecaptchaV3TaskProxylessM1S7` | $4.50 / 1k; 30 พอยต์/งาน · ¥30 / 1k | แบบอะซิงโครนัส | | [reCAPTCHA v3](https://docs.yescaptcha.com/th/tasks/recaptcha-v3.md) | `RecaptchaV3TaskProxylessM1S9` | $5.25 / 1k; 35 พอยต์/งาน · ¥35 / 1k | แบบอะซิงโครนัส | | [reCAPTCHA v3](https://docs.yescaptcha.com/th/tasks/recaptcha-v3.md) | `RecaptchaV3EnterpriseTask` | $3.00 / 1k; 20 พอยต์/งาน · ¥20 / 1k | แบบอะซิงโครนัส | | [reCAPTCHA v3](https://docs.yescaptcha.com/th/tasks/recaptcha-v3.md) | `RecaptchaV3EnterpriseTaskM1` | $3.75 / 1k; 25 พอยต์/งาน · ¥25 / 1k | แบบอะซิงโครนัส | | [hCaptcha](https://docs.yescaptcha.com/th/tasks/hcaptcha.md) | `HCaptchaTaskProxyless` | $4.50 / 1k; 30 พอยต์/งาน · ¥30 / 1k | แบบอะซิงโครนัส | | [hCaptcha](https://docs.yescaptcha.com/th/tasks/hcaptcha.md) | `HCaptchaTaskProxylessM1` | $4.50 / 1k; 30 พอยต์/งาน · ¥30 / 1k | แบบอะซิงโครนัส | | [hCaptcha](https://docs.yescaptcha.com/th/tasks/hcaptcha.md) | `HCaptchaTask` ใช้พร็อกซีของคุณเอง | $2.25 / 1k; 15 พอยต์/งาน · ¥15 / 1k | แบบอะซิงโครนัส | | [Cloudflare Turnstile](https://docs.yescaptcha.com/th/tasks/turnstile.md) | `TurnstileTaskProxyless` | $3.75 / 1k; 25 พอยต์/งาน · ¥25 / 1k | แบบอะซิงโครนัส | | [Cloudflare Turnstile](https://docs.yescaptcha.com/th/tasks/turnstile.md) | `TurnstileTaskProxylessM1` | $4.50 / 1k; 30 พอยต์/งาน · ¥30 / 1k | แบบอะซิงโครนัส | | [Cloudflare Turnstile](https://docs.yescaptcha.com/th/tasks/turnstile.md) | `TurnstileTask` ใช้พร็อกซีของคุณเอง | $3.75 / 1k; 25 พอยต์/งาน · ¥25 / 1k | แบบอะซิงโครนัส | | [หน้าตรวจสอบของ Cloudflare](https://docs.yescaptcha.com/th/tasks/cloudflare-challenge.md) | `CloudFlareTaskS2` ใช้พร็อกซีของคุณเอง | $3.75 / 1k; 25 พอยต์/งาน · ¥25 / 1k | แบบอะซิงโครนัส | | [หน้าตรวจสอบของ Cloudflare](https://docs.yescaptcha.com/th/tasks/cloudflare-challenge.md) | `CloudFlareTaskS3` ใช้พร็อกซีของคุณเอง | $3.00 / 1k; 20 พอยต์/งาน · ¥20 / 1k | แบบอะซิงโครนัส | | [รูปภาพเป็นข้อความ](https://docs.yescaptcha.com/th/tasks/image-to-text.md) | `ImageToTextTaskOcrBase` | $0.30 / 1k; 2 พอยต์/งาน · ¥2 / 1k | แบบซิงโครนัส | | [รูปภาพเป็นข้อความ](https://docs.yescaptcha.com/th/tasks/image-to-text.md) | `ImageToTextTaskMuggle` | $0.30 / 1k; 2 พอยต์/งาน · ¥2 / 1k | แบบซิงโครนัส | | [รูปภาพเป็นข้อความ](https://docs.yescaptcha.com/th/tasks/image-to-text.md) | `ImageToTextTask` | $0.60 / 1k; 4 พอยต์/งาน · ¥4 / 1k | แบบอะซิงโครนัส | | [รูปภาพเป็นข้อความ](https://docs.yescaptcha.com/th/tasks/image-to-text.md) | `ImageToTextTaskM1` | $2.25 / 1k; 15 พอยต์/งาน · ¥15 / 1k | แบบอะซิงโครนัส | | [การจดจำภาพ reCAPTCHA v2](https://docs.yescaptcha.com/th/tasks/recaptcha-classification.md) | `ReCaptchaV2Classification` | $0.90 / 1k; 6 พอยต์/งาน · ¥6 / 1k | แบบซิงโครนัส | | [การจดจำภาพ hCaptcha](https://docs.yescaptcha.com/th/tasks/hcaptcha-classification.md) | `HCaptchaClassification` | $1.20 / 1k; 8 พอยต์/งาน · ¥8 / 1k | แบบซิงโครนัส | | [การจดจำภาพ FunCaptcha](https://docs.yescaptcha.com/th/tasks/funcaptcha-classification.md) | `FunCaptchaClassification` | $0.45 / 1k; 3 พอยต์/งาน · ¥3 / 1k | แบบซิงโครนัส | | [การจดจำภาพ AWS WAF / bCaptcha](https://docs.yescaptcha.com/th/tasks/aws-bcaptcha-classification.md) | `AwsClassification` | $1.20 / 1k; 8 พอยต์/งาน · ¥8 / 1k | แบบซิงโครนัส | | [การจดจำภาพ AWS WAF / bCaptcha](https://docs.yescaptcha.com/th/tasks/aws-bcaptcha-classification.md) | `bCaptchaClassification` | $1.20 / 1k; 8 พอยต์/งาน · ¥8 / 1k | แบบซิงโครนัส | ราคาเป็นดอลลาร์สหรัฐเป็นเพียงค่าประมาณที่ US$1 ≈ ¥6.67 (2026-10-27) งานจะถูกหักเป็นพอยต์ โดย 1,000 พอยต์ = ¥1 เมื่อเติมเงินเป็น CNY ส่วนการเติมเงินเป็นดอลลาร์สหรัฐ (PayPal, สกุลเงินดิจิทัล) จะถูกแปลงเป็น CNY ตามอัตราแลกเปลี่ยน ณ เวลาที่ชำระเงิน แล้วจึงแปลงเป็นพอยต์ ## เลือกแบบไหนดี | สิ่งที่คุณต้องการ | ใช้ประเภทไหน | ได้อะไรกลับมา | | --- | --- | --- | | ได้ token แล้วส่งต่อได้เลยโดยไม่ต้องคลิกภาพ | [reCAPTCHA v2](https://docs.yescaptcha.com/th/tasks/recaptcha-v2.md), [reCAPTCHA v3](https://docs.yescaptcha.com/th/tasks/recaptcha-v3.md), [hCaptcha](https://docs.yescaptcha.com/th/tasks/hcaptcha.md), [Turnstile](https://docs.yescaptcha.com/th/tasks/turnstile.md) | token แบบอะซิงโครนัส | | ผ่านหน้า “กรุณารอสักครู่” ของ Cloudflare | [หน้าตรวจสอบของ Cloudflare](https://docs.yescaptcha.com/th/tasks/cloudflare-challenge.md) | Cookie, User-Agent และเนื้อหาของหน้าเว็บ แบบอะซิงโครนัส | | คลิกภาพเองในเบราว์เซอร์ | [การจดจำภาพ reCAPTCHA v2](https://docs.yescaptcha.com/th/tasks/recaptcha-classification.md), [การจดจำภาพ hCaptcha](https://docs.yescaptcha.com/th/tasks/hcaptcha-classification.md), [การจดจำภาพ FunCaptcha](https://docs.yescaptcha.com/th/tasks/funcaptcha-classification.md), [การจดจำภาพ AWS WAF / bCaptcha](https://docs.yescaptcha.com/th/tasks/aws-bcaptcha-classification.md) | ควรคลิกภาพใดหรือตำแหน่งใด แบบซิงโครนัส | | จดจำตัวอักษรในภาพ | [การจดจำอักษรอังกฤษและตัวเลขในภาพ](https://docs.yescaptcha.com/th/tasks/image-to-text.md) | ข้อความ ส่วนใหญ่เป็นแบบซิงโครนัส | หากไม่ทราบว่าเป็น CAPTCHA ชนิดใด ดู [การระบุชนิดของ CAPTCHA](https://docs.yescaptcha.com/th/guides/identify-captcha.md) ## หลักการตั้งชื่อ - **`Proxyless`**: โหลด CAPTCHA ผ่านเครือข่ายของเรา ไม่ต้องใช้พร็อกซี ประเภทที่ชื่อไม่มี `Proxyless` (เช่น `NoCaptchaTask`, `HCaptchaTask`) จะใช้พร็อกซีของคุณเอง ต้องส่งฟิลด์พร็อกซี เหมาะกับกรณีที่เว็บไซต์ปลายทางตรวจสอบ IP ของผู้เข้าชม - **ส่วนต่อท้ายอย่าง `M1`**: เส้นทางอีกเส้นของ CAPTCHA ชนิดเดียวกัน พารามิเตอร์เหมือนกันแต่ราคาต่างกัน หากเส้นหนึ่งอัตราผ่านไม่น่าพอใจ สามารถเปลี่ยนไปใช้อีกเส้นได้ หรือใช้สำรองซึ่งกันและกัน - **`Classification`**: การจดจำภาพ คืนค่าตำแหน่งที่ควรคลิก ไม่คืนค่า token - **`Enterprise`**: reCAPTCHA เวอร์ชัน Enterprise ## หมายเหตุ - การจดจำภาพ reCAPTCHA v2 คิดราคาตามขนาดของภาพ ส่วนการจดจำภาพ hCaptcha จะไม่หักพอยต์หากไม่พบเป้าหมาย ดูรายละเอียดในหน้าของแต่ละประเภท - ราคาให้ยึดตามหน้านี้ ระบบหักพอยต์ตามประเภทงานเมื่อสร้างงาน ส่วนการตรวจสอบผลลัพธ์ไม่หักพอยต์ กฎการคิดค่าบริการดู [การคิดค่าบริการและการคืนพอยต์](https://docs.yescaptcha.com/th/getting-started/billing.md) --- # reCAPTCHA v2 > รับ token ของ reCAPTCHA v2 (แบบมีช่องทำเครื่องหมาย แบบ invisible และแบบ Enterprise) ด้วย YesCaptcha: ประเภทงานและราคา พารามิเตอร์ของคำขอ ตัวอย่าง curl/Python/Node.js และผลลัพธ์ที่ได้รับ Source: https://docs.yescaptcha.com/th/tasks/recaptcha-v2/ · 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/recaptcha-v2/ งาน reCAPTCHA v2 จะคืนค่า token (`gRecaptchaResponse`) ซึ่งคุณนำไปส่งให้เว็บไซต์ปลายทางเพื่อผ่านการตรวจสอบได้เลยโดยไม่ต้องคลิกรูปภาพ ประเภท `NoCaptchaTaskProxyless` ที่ใช้บ่อยที่สุดมีราคา 15 พอยต์ (≈ $2.25 / 1k) ต่องาน และทำงานแบบอะซิงโครนัส: เรียก `createTask` เพื่อสร้างงานก่อน แล้วเรียก `getTaskResult` ทุก 5 วินาทีเพื่อรับผลลัพธ์ งานที่แก้ไม่สำเร็จหรือหมดเวลาจะคืนพอยต์โดยอัตโนมัติ - POST `https://api.yescaptcha.com/createTask` (endpoint ทั่วโลก) - POST `https://cn.yescaptcha.com/createTask` (endpoint จีน) เนื้อหาคำขอเป็น JSON และใช้ `clientKey` (ClientKey ของบัญชี คัดลอกได้จากแดชบอร์ดที่ [yescaptcha.com](https://yescaptcha.com/)) ในการยืนยันตัวตน สร้างงานที่ endpoint ใด ให้ตรวจสอบผลลัพธ์ที่ endpoint เดียวกัน ## กรณีที่ใช้ - หน้าเว็บมีช่องทำเครื่องหมาย “ฉันไม่ใช่โปรแกรมอัตโนมัติ” (I’m not a robot): แบบมีช่องทำเครื่องหมาย - ไม่มีช่องทำเครื่องหมาย และมีโจทย์รูปภาพปรากฏขึ้นหลังจากคลิกปุ่มส่งเท่านั้น: แบบ invisible ให้เพิ่ม `"isInvisible": true` - หน้าเว็บโหลด `recaptcha/enterprise.js` หรือ URL ของคำขอมีคำว่า `enterprise`: แบบ Enterprise ให้ใช้ประเภทที่มีคำว่า `Enterprise` ในชื่อ หากไม่แน่ใจว่าเป็นแบบใด ดู [การระบุประเภท CAPTCHA](https://docs.yescaptcha.com/th/guides/identify-captcha.md) หาก token ผ่านได้ไม่ดีนัก ลองใช้ [การจดจำภาพ reCAPTCHA v2](https://docs.yescaptcha.com/th/tasks/recaptcha-classification.md) แทน: API จะบอกว่าต้องคลิกรูปใด แล้วคุณคลิกเองในเบราว์เซอร์ ## ประเภทงานและราคา | ประเภทงาน | ราคา | รูปแบบการคืนผลลัพธ์ | หมายเหตุ | | --- | --- | --- | --- | | `NoCaptchaTaskProxyless` | $2.25 / 1k; 15 พอยต์/งาน · ¥15 / 1k | แบบอะซิงโครนัส | | | `RecaptchaV2TaskProxyless` | $3.00 / 1k; 20 พอยต์/งาน · ¥20 / 1k | แบบอะซิงโครนัส | พารามิเตอร์เหมือนกับ NoCaptchaTaskProxyless แต่ใช้เส้นทางต่างกัน สามารถใช้สลับเป็นตัวสำรองของกันและกันได้ | | `NoCaptchaTask` | $2.25 / 1k; 15 พอยต์/งาน · ¥15 / 1k | แบบอะซิงโครนัส | ใช้พร็อกซีของคุณเอง | | `RecaptchaV2EnterpriseTaskProxyless` | $3.00 / 1k; 20 พอยต์/งาน · ¥20 / 1k | แบบอะซิงโครนัส | | | `RecaptchaV2EnterpriseTask` | $3.00 / 1k; 20 พอยต์/งาน · ¥20 / 1k | แบบอะซิงโครนัส | ใช้พร็อกซีของคุณเอง | ราคาเป็นดอลลาร์สหรัฐเป็นเพียงค่าประมาณที่ US$1 ≈ ¥6.67 งานจะถูกหักเป็นพอยต์ - `NoCaptchaTaskProxyless` และ `RecaptchaV2TaskProxyless` ใช้พารามิเตอร์เหมือนกันแต่ใช้คนละเส้นทาง หากประเภทหนึ่งผ่านได้ไม่ดีนัก ลองสลับไปใช้อีกประเภทหนึ่ง - ประเภทที่ไม่มีคำว่า `Proxyless` ในชื่อ (`NoCaptchaTask`, `RecaptchaV2EnterpriseTask`) จะโหลด CAPTCHA ผ่านพร็อกซีของคุณเอง และต้องส่งฟิลด์ `proxyType`, `proxyAddress`, `proxyPort` และฟิลด์ที่เกี่ยวข้อง ใช้เมื่อเว็บไซต์ปลายทางตรวจสอบ IP ของผู้เข้าชม ## พารามิเตอร์ของคำขอ ฟิลด์ของออบเจ็กต์ `task` ใน `createTask`: | ฟิลด์ | ประเภท | จำเป็น | คำอธิบาย | | --- | --- | --- | --- | | `type` | string | ใช่ | ประเภทงาน ดูค่าที่ใช้ได้ในหัวข้อ "ประเภทงานและราคา" ของหน้านี้ | | `websiteURL` | string | ใช่ | URL แบบเต็มของหน้าเว็บที่แสดง CAPTCHA ให้ระบุเว็บไซต์ที่คุณเห็น CAPTCHA ไม่ใช่โดเมนของผู้ให้บริการ CAPTCHA | | `websiteKey` | string | ใช่ | คีย์ของเว็บไซต์ (sitekey) หาได้จากซอร์สโค้ดของหน้าเว็บหรือจากคำขอเครือข่าย โดยทั่วไปจะไม่เปลี่ยนแปลง | | `isInvisible` | boolean | ไม่ | ส่ง true เมื่อเป็นเวอร์ชัน invisible หากไม่ใช่ไม่ต้องส่ง | | `proxyType` | string | บางประเภท | โปรโตคอลของพร็อกซี: `http`, `https`, `socks4` หรือ `socks5` (จำเป็นสำหรับ NoCaptchaTask, RecaptchaV2EnterpriseTask) | | `proxyAddress` | string | บางประเภท | IP แอดเดรสหรือชื่อโฮสต์ของพร็อกซี ไม่สามารถใช้แอดเดรสภายในเครื่องหรือภายในเครือข่าย เช่น 127.0.0.1 หรือ 192.168.x.x ได้ เพราะเซิร์ฟเวอร์ของเราเข้าถึงไม่ได้ (จำเป็นสำหรับ NoCaptchaTask, RecaptchaV2EnterpriseTask) | | `proxyPort` | integer | บางประเภท | พอร์ตของพร็อกซี (จำเป็นสำหรับ NoCaptchaTask, RecaptchaV2EnterpriseTask) | | `proxyLogin` | string | ไม่ | ชื่อผู้ใช้ของพร็อกซี (เมื่อพร็อกซีต้องมีการยืนยันตัวตน) (เฉพาะ NoCaptchaTask, RecaptchaV2EnterpriseTask) | | `proxyPassword` | string | ไม่ | รหัสผ่านของพร็อกซี (เมื่อพร็อกซีต้องมีการยืนยันตัวตน) (เฉพาะ NoCaptchaTask, RecaptchaV2EnterpriseTask) | | `userAgent` | string | ไม่ | User-Agent ของเบราว์เซอร์ หากผลลัพธ์มี `userAgent` ให้ใช้ค่านั้นเมื่อส่ง token (เฉพาะ NoCaptchaTask, RecaptchaV2EnterpriseTask) | | `enterprisePayload` | object | ไม่ | พารามิเตอร์เพิ่มเติมของเวอร์ชัน Enterprise เช่นค่า `s` ของ reCAPTCHA Enterprise: `{"s": "..."}` หากหน้าเว็บไม่ได้ใช้ไม่ต้องส่ง (เฉพาะ RecaptchaV2EnterpriseTaskProxyless, RecaptchaV2EnterpriseTask) | วิธีค้นหา `websiteURL` และ `websiteKey` ดู [การค้นหาพารามิเตอร์ของ reCAPTCHA](https://docs.yescaptcha.com/th/guides/find-recaptcha-parameters.md) ## ตัวอย่างคำขอ ใช้หน้าเดโมอย่างเป็นทางการของ Google เป็นตัวอย่าง: POST https://api.yescaptcha.com/createTask ```json { "clientKey": "YOUR_CLIENT_KEY", "task": { "type": "NoCaptchaTaskProxyless", "websiteURL": "https://www.google.com/recaptcha/api2/demo", "websiteKey": "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-" } } ``` โค้ดฉบับสมบูรณ์ (สร้างงาน เรียกตรวจซ้ำทุก 5 วินาที และพิมพ์ token) ก่อนรัน ให้ใส่ ClientKey ไว้ในตัวแปรสภาพแวดล้อม `YESCAPTCHA_CLIENT_KEY`: **curl** ```bash 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"}' ``` **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": "NoCaptchaTaskProxyless", "websiteURL": "https://www.google.com/recaptcha/api2/demo", "websiteKey": "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-", }) 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: "NoCaptchaTaskProxyless", websiteURL: "https://www.google.com/recaptcha/api2/demo", websiteKey: "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-", }); console.log(solution.gRecaptchaResponse); ``` กรณีแบบ Enterprise ที่หน้าเว็บส่งค่า `s` ให้ reCAPTCHA ให้ใส่ค่านั้นใน `enterprisePayload`: POST https://api.yescaptcha.com/createTask ```json { "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" } } } ``` ใช้พร็อกซีของคุณเอง: POST https://api.yescaptcha.com/createTask ```json { "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` จะคืน ID งาน: ```json { "errorId": 0, "taskId": "61138bb6-19fb-11ec-a9c8-0242ac110006" } ``` นำ ID นี้ไปเรียก `getTaskResult` ระหว่างที่งานยังประมวลผลอยู่จะได้ `{"errorId": 0, "status": "processing"}` ให้ตรวจสอบอีกครั้งหลังจาก 5 วินาที เมื่อเสร็จสมบูรณ์จะได้: ```json { "errorId": 0, "status": "ready", "solution": { "gRecaptchaResponse": "03AGdBq25SxXT-pmSeBXjzScW-EiocHwwpwqtk1QXlJnGnU..." } } ``` | ฟิลด์ | ประเภท | คำอธิบาย | | --- | --- | --- | | `gRecaptchaResponse` | string | token ที่ได้ ใช้ส่งให้เว็บไซต์เป้าหมาย ใช้ได้ครั้งเดียว มีผลประมาณ 120 วินาที แนะนำให้ใช้ภายใน 60 วินาที | งานประมวลผลนานสุดประมาณ 110 วินาที หากเกินเวลาจะคืน `ERROR_TASK_TIMEOUT` และคืนพอยต์ เมื่อเกิดข้อผิดพลาด `errorId` จะเป็น 1 ให้จัดการตาม `errorCode` ดู [รหัสข้อผิดพลาด](https://docs.yescaptcha.com/th/api/errors.md) วิธีส่ง token หลังจากได้รับแล้ว ดู [การใช้ token เพื่อผ่าน reCAPTCHA](https://docs.yescaptcha.com/th/guides/submit-recaptcha-token.md) > **เคล็ดลับ:** token ใช้ได้ครั้งเดียวและมีอายุประมาณ 120 วินาที แนะนำให้ส่งภายใน 60 วินาทีหลังจากได้รับ ## คำถามที่พบบ่อย ### ทำไม token ของเว็บไซต์เดียวกันจึงผ่านบ้างไม่ผ่านบ้าง? เว็บไซต์ปลายทางเป็นผู้ตัดสิน เว็บไซต์จะให้คะแนนการตรวจสอบแต่ละครั้งและกำหนดเกณฑ์ ซึ่งอาจเปลี่ยนแปลงได้ตลอดเวลา อัตราการผ่านจึงต่างกันไปตามเว็บไซต์ และไม่ใช่ทุก token ที่จะผ่าน คุณสามารถลองเปรียบเทียบอัตราการผ่านกับประเภทงานอื่นของ CAPTCHA แบบเดียวกัน หรือเปลี่ยนไปใช้ [การจดจำภาพ](https://docs.yescaptcha.com/th/tasks/recaptcha-classification.md) ### token มีอายุนานเท่าใด? ใช้ได้ครั้งเดียวและมีอายุประมาณ 120 วินาที แนะนำให้ส่งภายใน 60 วินาทีหลังจากได้รับ อายุของ token กำหนดโดย Google ### หากแก้ไม่สำเร็จจะถูกหักพอยต์หรือไม่? ไม่ถูกหัก งานที่คืน `ERROR_CAPTCHA_UNSOLVABLE` หรือหมดเวลาจะคืนพอยต์โดยอัตโนมัติ ดู [การคิดราคาและการคืนพอยต์](https://docs.yescaptcha.com/th/getting-started/billing.md) ## บทแนะนำที่เกี่ยวข้อง - [การระบุประเภท CAPTCHA](https://docs.yescaptcha.com/th/guides/identify-captcha.md) - [การค้นหาพารามิเตอร์ของ reCAPTCHA](https://docs.yescaptcha.com/th/guides/find-recaptcha-parameters.md) - [การใช้ token เพื่อผ่าน reCAPTCHA](https://docs.yescaptcha.com/th/guides/submit-recaptcha-token.md) - [การคลิกรูปภาพ reCAPTCHA v2 ด้วย Selenium](https://docs.yescaptcha.com/th/guides/recaptcha-click-selenium.md) --- # reCAPTCHA v3 > รับ token ของ reCAPTCHA v3 (รวมเวอร์ชัน Enterprise) ด้วย YesCaptcha วิธีกรอก pageAction ประเภทคะแนนคงที่ 0.7 และ 0.9 ประเภทงานและราคา พารามิเตอร์ ตัวอย่าง และผลลัพธ์ที่ได้รับ Source: https://docs.yescaptcha.com/th/tasks/recaptcha-v3/ · 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/recaptcha-v3/ reCAPTCHA v3 ไม่มีช่องติ๊กและไม่มีรูปภาพ เพราะหน้าเว็บจะให้คะแนนผู้เข้าชมอยู่เบื้องหลัง YesCaptcha จะคืนค่า token (`gRecaptchaResponse`) ให้คุณนำไปส่งให้เว็บไซต์เป้าหมาย `RecaptchaV3TaskProxyless` ราคางานละ 20 พอยต์ (≈ $3.00 / 1k) ทำงานแบบอะซิงโครนัส: เรียก `createTask` ก่อน แล้วเรียก `getTaskResult` ทุก 5 วินาที หากแก้ไม่สำเร็จหรือหมดเวลา ระบบจะคืนพอยต์ให้อัตโนมัติ - POST `https://api.yescaptcha.com/createTask` (endpoint ทั่วโลก) - POST `https://cn.yescaptcha.com/createTask` (endpoint จีน) เนื้อหาคำขอเป็น JSON และใช้ `clientKey` ในการยืนยันตัวตน สร้างงานที่ endpoint ใด ให้ตรวจสอบผลลัพธ์ที่ endpoint นั้น ## กรณีที่ควรใช้ - ซอร์สโค้ดของหน้าเว็บมี `grecaptcha.execute(...)` หรือโหลด `recaptcha/api.js?render=รหัสไซต์`: reCAPTCHA v3 ทั่วไป - เรียกใช้ `grecaptcha.enterprise.execute(...)` หรือโหลด `recaptcha/enterprise.js`: reCAPTCHA v3 เวอร์ชัน Enterprise ให้ใช้ `RecaptchaV3EnterpriseTask` หรือ `RecaptchaV3EnterpriseTaskM1` วิธีตรวจสอบดูได้ที่ [ระบุประเภท CAPTCHA](https://docs.yescaptcha.com/th/guides/identify-captcha.md) ## ประเภทงานและราคา | ประเภทงาน | ราคา | รูปแบบการคืนผลลัพธ์ | หมายเหตุ | | --- | --- | --- | --- | | `RecaptchaV3TaskProxyless` | $3.00 / 1k; 20 พอยต์/งาน · ¥20 / 1k | แบบอะซิงโครนัส | | | `RecaptchaV3TaskProxylessM1` | $3.75 / 1k; 25 พอยต์/งาน · ¥25 / 1k | แบบอะซิงโครนัส | | | `RecaptchaV3TaskProxylessM1S7` | $4.50 / 1k; 30 พอยต์/งาน · ¥30 / 1k | แบบอะซิงโครนัส | ขอคะแนน (score) 0.7 ไม่ต้องใช้พารามิเตอร์เพิ่มเติม | | `RecaptchaV3TaskProxylessM1S9` | $5.25 / 1k; 35 พอยต์/งาน · ¥35 / 1k | แบบอะซิงโครนัส | ขอคะแนน (score) 0.9 ไม่ต้องใช้พารามิเตอร์เพิ่มเติม | | `RecaptchaV3EnterpriseTask` | $3.00 / 1k; 20 พอยต์/งาน · ¥20 / 1k | แบบอะซิงโครนัส | | | `RecaptchaV3EnterpriseTaskM1` | $3.75 / 1k; 25 พอยต์/งาน · ¥25 / 1k | แบบอะซิงโครนัส | | ราคาเป็นดอลลาร์สหรัฐเป็นเพียงค่าประมาณที่ US$1 ≈ ¥6.67 งานจะถูกหักเป็นพอยต์ - `RecaptchaV3TaskProxyless` และ `RecaptchaV3TaskProxylessM1` ใช้พารามิเตอร์เหมือนกันแต่ใช้เส้นทางต่างกัน จึงใช้สำรองแทนกันได้ - หากเว็บไซต์เป้าหมายต้องการคะแนนสูง ให้ใช้ `RecaptchaV3TaskProxylessM1S7` (0.7) หรือ `RecaptchaV3TaskProxylessM1S9` (0.9) ซึ่งไม่ต้องใส่พารามิเตอร์เพิ่ม ## พารามิเตอร์คำขอ | ฟิลด์ | ประเภท | จำเป็น | คำอธิบาย | | --- | --- | --- | --- | | `type` | string | ใช่ | ประเภทงาน ดูค่าที่ใช้ได้ในหัวข้อ "ประเภทงานและราคา" ของหน้านี้ | | `websiteURL` | string | ใช่ | URL แบบเต็มของหน้าเว็บที่แสดง CAPTCHA ให้ระบุเว็บไซต์ที่คุณเห็น CAPTCHA ไม่ใช่โดเมนของผู้ให้บริการ CAPTCHA | | `websiteKey` | string | ใช่ | คีย์ของเว็บไซต์ (sitekey) หาได้จากซอร์สโค้ดของหน้าเว็บหรือจากคำขอเครือข่าย โดยทั่วไปจะไม่เปลี่ยนแปลง | | `pageAction` | string | ไม่ | ค่า action ของ reCAPTCHA v3 ต้องตรงกับค่าที่หน้าเว็บส่งให้ `grecaptcha.execute` มิฉะนั้น token อาจใช้ไม่ได้ | `pageAction` ต้องตรงกับ `action` ที่หน้าเว็บส่งใน `grecaptcha.execute(รหัสไซต์, {action: '...'})` หากกรอกผิด เว็บไซต์อาจปฏิเสธ token วิธีค้นหาดูได้ที่ [ค้นหาพารามิเตอร์ของ reCAPTCHA](https://docs.yescaptcha.com/th/guides/find-recaptcha-parameters.md) ## ตัวอย่างคำขอ POST https://api.yescaptcha.com/createTask ```json { "clientKey": "YOUR_CLIENT_KEY", "task": { "type": "RecaptchaV3TaskProxyless", "websiteURL": "https://example.com/login", "websiteKey": "SITE_KEY_OF_THE_PAGE", "pageAction": "login" } } ``` **curl** ```bash 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"}' ``` **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": "RecaptchaV3TaskProxyless", "websiteURL": "https://example.com/login", "websiteKey": "SITE_KEY_OF_THE_PAGE", "pageAction": "login", }) 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: "RecaptchaV3TaskProxyless", websiteURL: "https://example.com/login", websiteKey: "SITE_KEY_OF_THE_PAGE", pageAction: "login", }); console.log(solution.gRecaptchaResponse); ``` เปลี่ยน `websiteURL`, `websiteKey` และ `pageAction` เป็นค่าของเว็บไซต์เป้าหมาย ## ผลลัพธ์ ```json { "errorId": 0, "status": "ready", "solution": { "gRecaptchaResponse": "03AGdBq25SxXT-pmSeBXjzScW-EiocHwwpwqtk1QXlJnGnU..." } } ``` | ฟิลด์ | ประเภท | คำอธิบาย | | --- | --- | --- | | `gRecaptchaResponse` | string | token ที่ได้ ใช้ส่งให้เว็บไซต์เป้าหมาย ใช้ได้ครั้งเดียว มีผลประมาณ 120 วินาที แนะนำให้ใช้ภายใน 60 วินาที | ระหว่างประมวลผลจะได้รับ `{"errorId": 0, "status": "processing"}` ให้ตรวจสอบอีกครั้งหลังจาก 5 วินาที หากเกิดข้อผิดพลาด ให้จัดการตาม `errorCode` ดูที่ [รหัสข้อผิดพลาด](https://docs.yescaptcha.com/th/api/errors.md) วิธีส่ง token ที่ได้ ดูที่ [ใช้ token ผ่าน reCAPTCHA](https://docs.yescaptcha.com/th/guides/submit-recaptcha-token.md) ## คำถามที่พบบ่อย ### ทำไมบางครั้งเว็บไซต์จึงไม่ยอมรับ token ใน v3 เว็บไซต์เป้าหมายจะตัดสินจากคะแนน และเว็บไซต์สามารถปรับเกณฑ์ได้ทุกเมื่อ จึงไม่ใช่ทุก token ที่จะผ่าน ตรวจสอบให้แน่ใจว่า `pageAction` ถูกต้อง หากเว็บไซต์ต้องการคะแนนสูงให้ลองใช้ `M1S7` หรือ `M1S9` หรือจะลองเปรียบเทียบกับประเภทอื่นในกลุ่มเดียวกันก็ได้ ### reCAPTCHA v3 เวอร์ชัน Enterprise กรอกอย่างไร กรอก `websiteURL`, `websiteKey`, `pageAction` เหมือนเวอร์ชันทั่วไป แล้วเปลี่ยนประเภทเป็น `RecaptchaV3EnterpriseTask` หรือ `RecaptchaV3EnterpriseTaskM1` ### token ใช้ได้นานเท่าใด ใช้ได้ครั้งเดียว และมีผลประมาณ 120 วินาที แนะนำให้ส่งภายใน 60 วินาที ## บทความที่เกี่ยวข้อง - [ระบุประเภท CAPTCHA](https://docs.yescaptcha.com/th/guides/identify-captcha.md) - [ค้นหาพารามิเตอร์ของ reCAPTCHA](https://docs.yescaptcha.com/th/guides/find-recaptcha-parameters.md) (รวมวิธีค้นหา `pageAction`) - [ใช้ token ผ่าน reCAPTCHA](https://docs.yescaptcha.com/th/guides/submit-recaptcha-token.md) --- # 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) --- # Cloudflare Turnstile > รับ token ของ Cloudflare Turnstile ด้วย YesCaptcha ครอบคลุม TurnstileTaskProxyless, TurnstileTaskProxylessM1 และ TurnstileTask ที่ใช้พร็อกซีของคุณเอง พร้อมพารามิเตอร์ ตัวอย่าง และผลลัพธ์ที่คืนกลับ รวมถึงความแตกต่างจากหน้าตรวจสอบของ Cloudflare Source: https://docs.yescaptcha.com/th/tasks/turnstile/ · Last verified: 2026-10-21 > This page was machine-translated from the Chinese version. If anything differs, the Chinese version prevails: https://docs.yescaptcha.com/zh/tasks/turnstile/ งาน Cloudflare Turnstile จะคืนค่า token (`token`) ให้นำไปส่งให้เว็บไซต์เป้าหมายเพื่อผ่านการตรวจสอบ `TurnstileTaskProxyless` ราคางานละ 25 พอยต์ (≈ $3.75 / 1k) ทำงานแบบอะซิงโครนัส: เรียก `createTask` ก่อน แล้วเรียก `getTaskResult` ทุก 5 วินาที หากจดจำไม่สำเร็จหรือหมดเวลา ระบบจะคืนพอยต์ให้อัตโนมัติ - POST `https://api.yescaptcha.com/createTask` (endpoint ทั่วโลก) - POST `https://cn.yescaptcha.com/createTask` (endpoint จีน) เนื้อหาคำขอเป็น JSON และยืนยันตัวตนด้วย `clientKey` สร้างงานที่ endpoint ใด ให้ตรวจสอบผลลัพธ์ที่ endpoint เดียวกัน ## เหมาะกับกรณีใด ในฟอร์มของหน้าเว็บมีกล่องยืนยันของ Cloudflare ฝังอยู่ (“ยืนยันว่าคุณเป็นมนุษย์”) และหน้าเว็บโหลดสคริปต์จาก `challenges.cloudflare.com/turnstile` หากทั้งหน้าถูก Cloudflare ขวางไว้และแสดงข้อความ “โปรดรอสักครู่…” หรือ “กำลังตรวจสอบเบราว์เซอร์ของคุณ” นั่นคือหน้าตรวจสอบของ Cloudflare ไม่ใช่ Turnstile ให้ใช้ [หน้าตรวจสอบของ Cloudflare](https://docs.yescaptcha.com/th/tasks/cloudflare-challenge.md) ดูความแตกต่างได้ที่ [วิธีระบุประเภท CAPTCHA](https://docs.yescaptcha.com/th/guides/identify-captcha.md) ## ประเภทงานและราคา | ประเภทงาน | ราคา | รูปแบบการคืนผลลัพธ์ | หมายเหตุ | | --- | --- | --- | --- | | `TurnstileTaskProxyless` | $3.75 / 1k; 25 พอยต์/งาน · ¥25 / 1k | แบบอะซิงโครนัส | | | `TurnstileTaskProxylessM1` | $4.50 / 1k; 30 พอยต์/งาน · ¥30 / 1k | แบบอะซิงโครนัส | | | `TurnstileTask` | $3.75 / 1k; 25 พอยต์/งาน · ¥25 / 1k | แบบอะซิงโครนัส | ใช้พร็อกซีของคุณเอง | ราคาเป็นดอลลาร์สหรัฐเป็นเพียงค่าประมาณที่ US$1 ≈ ¥6.67 งานจะถูกหักเป็นพอยต์ - `TurnstileTaskProxyless` และ `TurnstileTaskProxylessM1` ใช้พารามิเตอร์เหมือนกันแต่ใช้คนละเส้นทาง จึงใช้สำรองแทนกันได้ - `TurnstileTask` ใช้พร็อกซีของคุณเองในการโหลด CAPTCHA ต้องส่งฟิลด์ของพร็อกซีด้วย ## พารามิเตอร์ของคำขอ | ฟิลด์ | ประเภท | จำเป็น | คำอธิบาย | | --- | --- | --- | --- | | `type` | string | ใช่ | ประเภทงาน ดูค่าที่ใช้ได้ในหัวข้อ "ประเภทงานและราคา" ของหน้านี้ | | `websiteURL` | string | ใช่ | URL แบบเต็มของหน้าเว็บที่แสดง CAPTCHA ให้ระบุเว็บไซต์ที่คุณเห็น CAPTCHA ไม่ใช่โดเมนของผู้ให้บริการ CAPTCHA | | `websiteKey` | string | ใช่ | คีย์ของเว็บไซต์ (sitekey) สำหรับ Turnstile โดยทั่วไปขึ้นต้นด้วย 0x | | `pageAction` | string | ไม่ | ค่า `action` ที่หน้าเว็บส่งให้ Turnstile (พารามิเตอร์ของ `turnstile.render` หรือ `data-action` บนองค์ประกอบของวิดเจ็ต) เช่น `login` ส่วนใหญ่ไม่จำเป็นต้องส่ง ให้เพิ่มเฉพาะเมื่องานล้มเหลวต่อเนื่อง | | `data` | string | ไม่ | ค่า `cData` ที่หน้าเว็บส่งให้ Turnstile (พารามิเตอร์ของ `turnstile.render` หรือ `data-cdata` บนองค์ประกอบของวิดเจ็ต) เช่น `c0bd4b36-7419-4e18-83c6-378699f2a9a2` ส่วนใหญ่ไม่จำเป็นต้องส่ง ให้เพิ่มเฉพาะเมื่องานล้มเหลวต่อเนื่อง | | `proxyType` | string | บางประเภท | โปรโตคอลของพร็อกซี: `http`, `https`, `socks4` หรือ `socks5` (จำเป็นสำหรับ TurnstileTask) | | `proxyAddress` | string | บางประเภท | IP แอดเดรสหรือชื่อโฮสต์ของพร็อกซี ไม่สามารถใช้แอดเดรสภายในเครื่องหรือภายในเครือข่าย เช่น 127.0.0.1 หรือ 192.168.x.x ได้ เพราะเซิร์ฟเวอร์ของเราเข้าถึงไม่ได้ (จำเป็นสำหรับ TurnstileTask) | | `proxyPort` | integer | บางประเภท | พอร์ตของพร็อกซี (จำเป็นสำหรับ TurnstileTask) | | `proxyLogin` | string | ไม่ | ชื่อผู้ใช้ของพร็อกซี (เมื่อพร็อกซีต้องมีการยืนยันตัวตน) (เฉพาะ TurnstileTask) | | `proxyPassword` | string | ไม่ | รหัสผ่านของพร็อกซี (เมื่อพร็อกซีต้องมีการยืนยันตัวตน) (เฉพาะ TurnstileTask) | | `userAgent` | string | ไม่ | User-Agent ของเบราว์เซอร์ หากผลลัพธ์มี `userAgent` ให้ใช้ค่านั้นเมื่อส่ง token (เฉพาะ TurnstileTask) | `websiteKey` มักขึ้นต้นด้วย `0x` วิธีค้นหาดูได้ที่ [ค้นหาพารามิเตอร์ของ Turnstile](https://docs.yescaptcha.com/th/guides/find-turnstile-parameters.md) ### เมื่อยังไม่ผ่านแน่ ๆ: pageAction และ data ในกรณีส่วนใหญ่ส่งเพียง `websiteURL` และ `websiteKey` ก็เพียงพอ ไม่จำเป็นต้องใช้พารามิเตอร์สองตัวนี้ หากแน่ใจว่า `websiteURL` และ `websiteKey` ถูกต้องแล้วแต่งานยังไม่ผ่าน ให้ตรวจสอบว่าหน้าเว็บส่ง `action` และ `cData` ตอนเรียก Turnstile หรือไม่ (พารามิเตอร์ของ `turnstile.render` หรือ `data-action` และ `data-cdata` บนองค์ประกอบของกล่องยืนยัน) หากมี ให้ส่งตามค่าเดิม: - `pageAction`: ใส่ค่า `action` ในหน้าเว็บ เช่น `login` - `data`: ใส่ค่า `cData` ในหน้าเว็บ เช่น `c0bd4b36-7419-4e18-83c6-378699f2a9a2` POST https://api.yescaptcha.com/createTask ```json { "clientKey": "YOUR_CLIENT_KEY", "task": { "type": "TurnstileTaskProxyless", "websiteURL": "https://example.com/login", "websiteKey": "0x4AAAAAAA_SITE_KEY", "pageAction": "login", "data": "c0bd4b36-7419-4e18-83c6-378699f2a9a2" } } ``` ## ตัวอย่างคำขอ POST https://api.yescaptcha.com/createTask ```json { "clientKey": "YOUR_CLIENT_KEY", "task": { "type": "TurnstileTaskProxyless", "websiteURL": "https://example.com/login", "websiteKey": "0x4AAAAAAA_SITE_KEY" } } ``` **curl** ```bash curl -s https://api.yescaptcha.com/createTask \ -H 'Content-Type: application/json' \ -d '{ "clientKey": "YOUR_CLIENT_KEY", "task": { "type": "TurnstileTaskProxyless", "websiteURL": "https://example.com/login", "websiteKey": "0x4AAAAAAA_SITE_KEY" } }' # 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": "TurnstileTaskProxyless", "websiteURL": "https://example.com/login", "websiteKey": "0x4AAAAAAA_SITE_KEY", }) print(solution["token"]) ``` **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: "TurnstileTaskProxyless", websiteURL: "https://example.com/login", websiteKey: "0x4AAAAAAA_SITE_KEY", }); console.log(solution.token); ``` เปลี่ยน `websiteURL` และ `websiteKey` เป็นค่าของเว็บไซต์เป้าหมาย ## ผลลัพธ์ที่คืนกลับ ```json { "errorId": 0, "status": "ready", "solution": { "token": "0.ufq5RgSVZd11DPSX1brdrxnEs28KcVlKj2ORchqxSy2q9yAW6ciq3hriXDF4x...", "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/155.0.0.0 Safari/537.36" } } ``` | ฟิลด์ | ประเภท | คำอธิบาย | | --- | --- | --- | | `token` | string | token ที่ได้ ใช้ส่งให้เว็บไซต์เป้าหมาย ใช้ได้ครั้งเดียว แนะนำให้ส่งโดยเร็วที่สุด | | `userAgent` | string | User-Agent ที่ใช้ในการสร้าง token ให้ใช้ค่านี้เมื่อส่ง token แม้จะต่างจากค่าที่คุณส่งมา | นำ `token` ไปใส่ในฟิลด์ `cf-turnstile-response` ของหน้าเว็บ (หรือฟิลด์ที่ API ของเว็บไซต์เป้าหมายกำหนด) แล้วส่ง โดยใช้ `userAgent` ที่ได้รับกลับมาเป็น User-Agent ของคำขอที่ส่ง ระหว่างประมวลผลจะคืนค่า `{"errorId": 0, "status": "processing"}` ให้ตรวจสอบอีกครั้งหลังผ่านไป 5 วินาที หากเกิดข้อผิดพลาด ให้จัดการตาม `errorCode` ดู [รหัสข้อผิดพลาด](https://docs.yescaptcha.com/th/api/errors.md) ## คำถามที่พบบ่อย ### token ใช้ได้นานแค่ไหน? ใช้ได้ครั้งเดียว แนะนำให้ส่งโดยเร็วที่สุดหลังได้รับ (token ของ Turnstile มักหมดอายุภายในไม่กี่นาที โดย Cloudflare เป็นผู้กำหนด) ### ส่งแล้วเว็บไซต์ยังไม่ผ่าน? ตรวจสอบว่า `websiteURL` เป็นหน้าที่มีกล่องยืนยัน และ `websiteKey` ถูกต้อง และใช้ `userAgent` ที่ได้รับกลับมาตอนส่ง หากหน้าเว็บส่ง `action` และ `cData` ให้ใส่เป็น `pageAction` และ `data` ดู [เมื่อยังไม่ผ่านแน่ ๆ](#) ด้านบน หากเว็บไซต์ตรวจสอบ IP ด้วย ให้ใช้ `TurnstileTask` และส่งผ่านพร็อกซีเดียวกัน ## บทความที่เกี่ยวข้อง - [วิธีระบุประเภท CAPTCHA](https://docs.yescaptcha.com/th/guides/identify-captcha.md) - [ค้นหาพารามิเตอร์ของ Turnstile](https://docs.yescaptcha.com/th/guides/find-turnstile-parameters.md) --- # Cloudflare challenge page (5 วินาที) > ใช้ YesCaptcha ผ่านหน้าตรวจสอบ "Just a moment..." ของ Cloudflare เพื่อรับ Cookie เช่น cf_clearance, User-Agent และเนื้อหาของหน้าเว็บ พารามิเตอร์ของ CloudFlareTaskS2 และ CloudFlareTaskS3 ข้อกำหนดของพร็อกซี ผลลัพธ์ที่ได้ วิธีนำไปใช้ และข้อผิดพลาดที่พบบ่อย Source: https://docs.yescaptcha.com/th/tasks/cloudflare-challenge/ · Last verified: 2026-10-19 > This page was machine-translated from the Chinese version. If anything differs, the Chinese version prevails: https://docs.yescaptcha.com/zh/tasks/cloudflare-challenge/ Cloudflare challenge page (5 วินาที) คือหน้าตรวจสอบที่ Cloudflare ดักไว้ทั้งหน้าเว็บ โดยแสดงข้อความ “Just a moment…” หรือ “กำลังตรวจสอบเบราว์เซอร์ของคุณ” YesCaptcha จะเปิดหน้าเว็บผ่านพร็อกซีที่คุณระบุและผ่านการตรวจสอบ จากนั้นคืนค่า Cookie เช่น `cf_clearance`, User-Agent ที่ใช้ในขณะนั้น, request header, response header และ HTML ของหน้าเว็บหลังผ่านการตรวจสอบ `CloudFlareTaskS2` ราคางานละ 25 พอยต์ (≈ $3.75 / 1k) และ `CloudFlareTaskS3` ราคางานละ 20 พอยต์ (≈ $3.00 / 1k) พารามิเตอร์ ผลลัพธ์ และประสิทธิภาพของทั้งสองประเภทเหมือนกัน ต่างกันที่ราคาเท่านั้น คืนผลแบบอะซิงโครนัส งานหนึ่งใช้เวลาประมาณ 6 ถึง 35 วินาที ขึ้นอยู่กับแต่ละเว็บไซต์ หากแก้ไม่สำเร็จหรือหมดเวลา ระบบจะคืนพอยต์อัตโนมัติ - POST `https://api.yescaptcha.com/createTask` (endpoint ทั่วโลก) - POST `https://cn.yescaptcha.com/createTask` (endpoint จีน) ## กรณีที่ใช้ - ซอร์สของหน้ามี `__cf_chl_rt_tk` หรือ `cdn-cgi/challenge-platform` และชื่อหน้าคือ `Just a moment...` แสดงว่าเป็นหน้าตรวจสอบแบบ 5 วินาที หน้าตรวจสอบที่ให้ติ๊กช่อง “ยืนยันว่าคุณเป็นมนุษย์” ก็ใช้หน้านี้เช่นกัน - หากเป็นเพียงกล่องยืนยันของ Cloudflare ที่ฝังอยู่ในฟอร์ม นั่นคือ [Turnstile](https://docs.yescaptcha.com/th/tasks/turnstile.md) ไม่ต้องใช้หน้านี้ - หากใช้ไลบรารีอย่าง requests แล้วได้ 403 และ “Just a moment…” แต่เปิดในเบราว์เซอร์ได้ตามปกติ มักเป็นเพราะถูกบล็อกจาก TLS fingerprint เท่านั้น ให้เปลี่ยนไปใช้ไลบรารีที่เลียนแบบ TLS fingerprint ของเบราว์เซอร์ได้ (เช่น curl\_cffi) ก็จะเรียกได้ โดยไม่ต้องผ่านการตรวจสอบ ## ประเภทงานและราคา | ประเภทงาน | ราคา | รูปแบบการคืนผลลัพธ์ | หมายเหตุ | | --- | --- | --- | --- | | `CloudFlareTaskS2` | $3.75 / 1k; 25 พอยต์/งาน · ¥25 / 1k | แบบอะซิงโครนัส | ใช้พร็อกซีของคุณเอง | | `CloudFlareTaskS3` | $3.00 / 1k; 20 พอยต์/งาน · ¥20 / 1k | แบบอะซิงโครนัส | ใช้พร็อกซีของคุณเอง | ราคาเป็นดอลลาร์สหรัฐเป็นเพียงค่าประมาณที่ US$1 ≈ ¥6.67 งานจะถูกหักเป็นพอยต์ ## พารามิเตอร์ของคำขอ | ฟิลด์ | ประเภท | จำเป็น | คำอธิบาย | | --- | --- | --- | --- | | `type` | string | ใช่ | ประเภทงาน ดูค่าที่ใช้ได้ในหัวข้อ "ประเภทงานและราคา" ของหน้านี้ | | `websiteURL` | string | ใช่ | URL แบบเต็มของหน้าเว็บที่อยู่หลังหน้าตรวจสอบ ต้องเป็น URL สาธารณะที่ขึ้นต้นด้วย `http://` หรือ `https://` เท่านั้น ระบบจะปฏิเสธ IP ภายในเครือข่ายและชื่อโฮสต์ภายในเครื่องหรือภายในเครือข่าย เช่น `localhost` | | `proxy` | string | ใช่ | พร็อกซีในรูปแบบสตริงเดียว: `http://user:pass@proxy.example.com:8080` (พร็อกซี HTTP ระบุบัญชีและรหัสผ่านหรือไม่ก็ได้) หรือ `socks5://proxy.example.com:1080` (ไม่มีบัญชีและรหัสผ่าน) ไม่รองรับพร็อกซี `https://` และ SOCKS5 ที่มีบัญชีและรหัสผ่าน และจะปฏิเสธแอดเดรสภายในเครื่องหรือภายในเครือข่าย ทุกคำขอที่เปิดหน้าเว็บเป้าหมายจะผ่านพร็อกซีนี้ | | `userAgent` | string | ไม่ | โดยทั่วไปไม่ต้องส่ง ระบบใช้เฉพาะ User-Agent ของ Chrome บนเดสก์ท็อป Linux เท่านั้น ค่าอื่น (Windows, macOS, มือถือ, เบราว์เซอร์อื่น) จะถูกละเว้น สำหรับคำขอถัดไปให้ใช้ `user_agent` จากผลลัพธ์เสมอ | | `waitLoad` | boolean | ไม่ | ค่าเริ่มต้นคือ false หากส่ง true หลังผ่านการตรวจสอบแล้ว งานจะรอจนกิจกรรมเครือข่ายของหน้าเว็บสงบลงก่อนจึงคืนผลลัพธ์ ทำให้ `content` มีเนื้อหาที่โหลดแบบไดนามิกมากขึ้น แต่ใช้เวลาเพิ่มอีกไม่กี่วินาที | | `requiredCookies` | array | ไม่ | รายชื่อ Cookie ที่ต้องได้รับ เป็นอาร์เรย์ของสตริง เช่น `["cf_clearance"]` หากระบุ งานจะสำเร็จก็ต่อเมื่อได้ครบทั้งหมด มิฉะนั้นจะคืน `ERROR_CAPTCHA_UNSOLVABLE` และคืนพอยต์ หากไม่ระบุ ระบบจะพยายามขอ `cf_clearance` แต่ถ้าได้ Cookie อื่นเท่านั้นก็ถือว่าสำเร็จและหักพอยต์ ดังนั้นหากต้องการ `cf_clearance` ให้ระบุอย่างชัดเจน | | `blockImage` | boolean | ไม่ | หากส่ง true จะไม่โหลดรูปภาพบนหน้าเว็บเป้าหมาย (ยกเว้นรูปที่การตรวจสอบของ Cloudflare ต้องใช้) เพื่อประหยัดทราฟฟิกของพร็อกซี | | `postData` | object | ไม่ | หากระบุ ระบบจะส่งไปยัง `websiteURL` ด้วย POST แบบเดียวกับฟอร์ม HTML ทั่วไป (`application/x-www-form-urlencoded`) โดยแต่ละคีย์คือช่องของฟอร์มและค่าจะถูกส่งเป็นสตริง เช่น `{"name": "hi"}` ต้องเป็นอ็อบเจกต์ | ### ข้อกำหนดของพร็อกซี ต้องระบุ `proxy` และทุกคำขอที่เปิดหน้าเว็บเป้าหมายจะผ่านพร็อกซีนี้ `cf_clearance` ผูกกับ IP ขาออก ดังนั้นการเข้าเว็บไซต์เป้าหมายหลังจากนี้ต้องใช้พร็อกซีตัวเดียวกัน | รูปแบบ | รองรับหรือไม่ | | --- | --- | | `http://user:pass@proxy.example.com:8080` | รองรับ: พร็อกซี http แบบมีบัญชีและรหัสผ่าน | | `http://proxy.example.com:8080` | รองรับ: พร็อกซี http แบบไม่มีบัญชีและรหัสผ่าน | | `socks5://proxy.example.com:1080` | รองรับ: พร็อกซี socks5 แบบไม่มีบัญชีและรหัสผ่าน `socks5h://` จะถูกจัดการเหมือน `socks5://` | | `socks5://user:pass@proxy.example.com:1080` | ไม่รองรับ คืนค่า `ERROR_PROXY_INCORRECT` หากต้องใช้บัญชีและรหัสผ่านให้ใช้พร็อกซี http แทน | | `https://proxy.example.com:443` หรือโปรโตคอลอื่น หรือไม่มีพอร์ต | ไม่รองรับ คืนค่า `ERROR_PROXY_BANNED` ไม่ใช่ แต่คืนค่า `ERROR_PROXY_INCORRECT` | | ที่อยู่เครื่องตัวเอง เครือข่ายภายใน หรือที่อยู่สงวน เช่น `127.0.0.1`, `192.168.x.x`, `10.x.x.x` หรือโดเมนที่ resolve ไปยังที่อยู่เหล่านี้ | ปฏิเสธ คืนค่า `ERROR_PROXY_BANNED` | > **ตรวจสอบตั้งแต่ตอนสร้างงาน:** หาก URL หรือพร็อกซีไม่ถูกต้อง `createTask` จะคืนข้อผิดพลาดทันทีและไม่หักพอยต์ หากพร็อกซีเดียวกันเชื่อมต่อไม่ได้หลายครั้งในเวลาสั้น ๆ การสร้างงานด้วยพร็อกซีนั้นในช่วงต่อมาจะคืนค่า `ERROR_PROXY_BANNED` ทันทีเช่นกัน โปรดเปลี่ยนพร็อกซีหรือลองใหม่ภายหลัง ### User-Agent โดยทั่วไปไม่ต้องส่ง `userAgent` เราใช้ Chrome เดสก์ท็อปบน Linux ในการผ่านการตรวจสอบ ดังนั้นจะใช้เฉพาะ User-Agent ของ Chrome เดสก์ท็อปบน Linux เท่านั้น ส่วนอื่น ๆ (Windows, macOS, มือถือ หรือเบราว์เซอร์อื่น) จะถูกละเลย เพราะจากการทดสอบจริง หากสภาพแวดล้อมจริงของเบราว์เซอร์ไม่ตรงกับ User-Agent การตรวจสอบของ Cloudflare จะไม่ผ่าน คำขอถัดไปทั้งหมดให้ใช้ `user_agent` จากผลลัพธ์ ## ตัวอย่างคำขอ POST https://api.yescaptcha.com/createTask ```json { "clientKey": "YOUR_CLIENT_KEY", "task": { "type": "CloudFlareTaskS3", "websiteURL": "https://example.com/", "proxy": "http://user:pass@proxy.example.com:8080", "requiredCookies": ["cf_clearance"] } } ``` - หากต้องการใช้ `CloudFlareTaskS2` ให้เปลี่ยนเฉพาะ `type` ส่วนอื่นเหมือนเดิม - หากส่ง `requiredCookies` เป็น `["cf_clearance"]` แล้วไม่ได้ `cf_clearance` งานจะล้มเหลวและคืนพอยต์ หากไม่ส่ง กรณีที่ไม่ได้ `cf_clearance` แต่ได้ Cookie อื่น ก็ถือว่าสำเร็จและหักพอยต์ - หากต้องการส่งฟอร์ม ให้เพิ่ม `postData` เช่น `{"name": "hi"}` ระบบจะส่งไปยัง `websiteURL` ในรูปแบบ POST form หลังสร้างงาน ให้เรียก `getTaskResult` ทุก 5 วินาที ขั้นตอนเหมือนงานแบบอะซิงโครนัสอื่น ๆ ดู [getTaskResult](https://docs.yescaptcha.com/th/api/get-task-result.md) ## ผลลัพธ์ ```json { "errorId": 0, "status": "ready", "solution": { "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/155.0.0.0 Safari/537.36", "cookies": { "cf_clearance": "Wq3vXk9...-1760860800-1.2.1.1-..." }, "request_headers": { "accept-language": "en-US,en;q=0.9", "user-agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/155.0.0.0 Safari/537.36" }, "headers": { "content-type": "text/html; charset=UTF-8", "server": "cloudflare" }, "content": "..." } } ``` ค่า Cookie และ request header ข้างต้นเป็นเพียงตัวอย่าง ให้ใช้ค่าที่ API คืนมาจริง | ฟิลด์ | ประเภท | คำอธิบาย | | --- | --- | --- | | `cookies` | object | Cookie ทั้งหมดในเบราว์เซอร์หลังผ่านการตรวจสอบ (ออบเจ็กต์แบบชื่อเป็นค่า) โดยทั่วไปมี `cf_clearance` หากระบุ `requiredCookies` จะมีทุกรายการในนั้นรวมอยู่ด้วย ใช้ร่วมกับ `user_agent` ที่คืนมาและพร็อกซีที่คุณระบุ | | `user_agent` | string | User-Agent ที่เบราว์เซอร์ใช้จริงในการผ่านการตรวจสอบ (Chrome เดสก์ท็อปบน Linux) `cf_clearance` ผูกกับค่านี้ คำขอถัดไปทั้งหมดจึงต้องใช้ค่านี้ | | `request_headers` | object | request header ที่เบราว์เซอร์ส่งในคำขอล่าสุดไปยังหน้าเว็บเป้าหมาย แนะนำให้ใช้ซ้ำในคำขอถัดไป | | `headers` | object | response header ของหน้าเว็บเป้าหมายหลังผ่านการตรวจสอบ | | `content` | string | ซอร์ส HTML ของหน้าเว็บเป้าหมายหลังผ่านการตรวจสอบ | ## วิธีใช้ผลลัพธ์ 1. คำขอถัดไปต้องใช้ `cookies` ที่คืนมา, `user_agent` ที่คืนมา **และ**พร็อกซีตัวเดียวกับตอนสร้างงานพร้อมกัน `cf_clearance` ผูกกับ User-Agent และ IP ขาออก หากอย่างใดอย่างหนึ่งไม่ตรงกัน หน้าตรวจสอบ 5 วินาทีจะปรากฏอีกครั้ง 2. ควรส่ง request header ตาม `request_headers` และใช้ TLS fingerprint ที่ตรงกับเบราว์เซอร์ (เช่น พารามิเตอร์ `impersonate` ของ curl\_cffi) 3. `cf_clearance` มีอายุการใช้งาน (กำหนดโดยเว็บไซต์เป้าหมาย บางเว็บนานถึง 1 ชั่วโมง) ภายในช่วงนี้ไม่ต้องผ่านการตรวจสอบซ้ำ หากส่งคำขอถี่เกินไป Cloudflare อาจบล็อก IP 4. หากต้องการเพียงเนื้อหาของหน้าเว็บ ใช้ `content` ได้โดยตรง ไม่ต้องขอหน้าเว็บอีกครั้ง ## ข้อผิดพลาดที่พบบ่อย ข้อผิดพลาดที่คืนตอนสร้างงานจะไม่หักพอยต์ หากสร้างงานสำเร็จแล้วล้มเหลวหรือหมดเวลา ระบบจะคืนพอยต์อัตโนมัติ API คืนเพียงรหัสข้อผิดพลาดและคำอธิบายทั่วไป สาเหตุที่แท้จริงให้ดูจากตารางด้านล่าง | รหัสข้อผิดพลาด | คืนค่าเมื่อใด | แก้ไขอย่างไร | | --- | --- | --- | | `ERROR_REQUIRED_FIELDS` | ตอนสร้างงาน: ไม่มี `websiteURL` หรือ `proxy` | เพิ่มฟิลด์ที่จำเป็นทั้งสองรายการ | | `ERROR_ILLEGAL_PARAMETERS` | ตอนสร้างงาน: `websiteURL` ไม่ใช่ URL สาธารณะที่ขึ้นต้นด้วย `http://` / `https://`, `postData` ไม่ใช่ object หรือ `requiredCookies` ไม่ใช่อาร์เรย์ของสตริง ตอนเรียกดูผลลัพธ์: resolve โดเมนของ URL เป้าหมายผ่านพร็อกซีไม่ได้ | แก้ไขพารามิเตอร์ ตรวจสอบการสะกด URL และดูว่าพร็อกซีเข้าถึงเว็บไซต์นี้ได้หรือไม่ | | `ERROR_PROXY_INCORRECT` | ตอนสร้างงาน: รูปแบบพร็อกซีไม่ถูกต้อง ไม่มีพอร์ต ใช้พร็อกซี `https://` หรือ socks5 ที่มีบัญชีและรหัสผ่าน | แก้ตามรูปแบบใน “ข้อกำหนดของพร็อกซี” ข้างต้น หากต้องใช้บัญชีและรหัสผ่านให้ใช้พร็อกซี http | | `ERROR_PROXY_BANNED` | ตอนสร้างงาน: พร็อกซีเป็นที่อยู่เครื่องตัวเอง เครือข่ายภายใน หรือที่อยู่สงวน หรือพร็อกซีนี้เชื่อมต่อไม่ได้หลายครั้งในเวลาสั้น ๆ ตอนเรียกดูผลลัพธ์: Cloudflare ของเว็บไซต์เป้าหมายบล็อก IP ของพร็อกซีนี้โดยตรง (หน้า “Sorry, you have been blocked”, “Access denied”) | เปลี่ยนพร็อกซี IP คุณภาพดีผ่านได้ง่ายกว่า | | `ERROR_PROXY_CONNECT_REFUSED` | เชื่อมต่อพร็อกซีไม่ได้ (ปฏิเสธการเชื่อมต่อ หรือ resolve โดเมนของพร็อกซีไม่ได้) หรือเปิดหน้าเว็บผ่านพร็อกซีแล้วการเชื่อมต่อถูกปฏิเสธหรือถูก reset | ตรวจสอบที่อยู่และพอร์ตของพร็อกซี ยืนยันว่าพร็อกซีออนไลน์และอนุญาตการเข้าถึงจากภายนอก หากยังล้มเหลวให้เปลี่ยนพร็อกซี | | `ERROR_PROXY_CONNECT_TIMEOUT` | เชื่อมต่อพร็อกซี หรือเปิดหน้าเว็บผ่านพร็อกซี แล้วหมดเวลา | เปลี่ยนไปใช้พร็อกซีที่เร็วและเสถียรกว่า | | `ERROR_PROXY_NOT_AUTHORISED` | บัญชีหรือรหัสผ่านของพร็อกซีไม่ถูกต้อง | ตรวจสอบบัญชีและรหัสผ่านใน `proxy` อักขระพิเศษต้องทำ URL encode | | `ERROR_PROXY_TLS_ERROR` | TLS handshake ผิดพลาดตอนเปิดหน้าเว็บผ่านพร็อกซี | ตรวจสอบว่าที่อยู่ พอร์ต และโปรโตคอลของพร็อกซีไม่ได้กรอกผิด หากยังล้มเหลวให้เปลี่ยนพร็อกซี | | `ERROR_CAPTCHA_UNSOLVABLE` | ไม่ผ่านการตรวจสอบภายในเวลาที่กำหนด ผ่านแล้วแต่ยังค้างอยู่ที่หน้าตรวจสอบ หรือไม่ได้ Cookie ที่ระบุใน `requiredCookies` | เปลี่ยนพร็อกซีแล้วลองใหม่ สำหรับบางเว็บไซต์ติดต่อฝ่ายสนับสนุนได้ | | `ERROR_NO_SLOT_AVAILABLE` | ตอนสร้างงาน: คิวเต็ม ตอนเรียกดูผลลัพธ์: รอคิวนานเกินไปและยังไม่เริ่ม คืนพอยต์แล้ว | รอสองสามวินาทีแล้วสร้างงานใหม่ | | `ERROR_TASK_TIMEOUT` | งานไม่เสร็จภายในเวลาที่กำหนด | สร้างงานใหม่ หากหมดเวลาต่อเนื่อง มักเป็นเพราะพร็อกซีช้าเกินไป | ดูรหัสข้อผิดพลาดทั้งหมดที่ [รหัสข้อผิดพลาด](https://docs.yescaptcha.com/th/api/errors.md) ## ที่เกี่ยวข้อง - [วิธีระบุประเภท CAPTCHA](https://docs.yescaptcha.com/th/guides/identify-captcha.md): ความแตกต่างระหว่างหน้าตรวจสอบ 5 วินาทีกับ Turnstile - [Cloudflare Turnstile](https://docs.yescaptcha.com/th/tasks/turnstile.md) --- # การอ่านตัวอักษรและตัวเลขจากภาพ > ใช้ YesCaptcha อ่านตัวอักษรภาษาอังกฤษและตัวเลขในภาพ โดย ImageToTextTaskOcrBase และ ImageToTextTaskMuggle คืนผลแบบซิงโครนัส ส่วน ImageToTextTask และ ImageToTextTaskM1 เป็นแบบอะซิงโครนัสและรองรับเงื่อนไขตัวพิมพ์ใหญ่เล็ก ตัวเลขล้วน นิพจน์คำนวณ รวมถึงโมเดลที่สร้างเฉพาะ Source: https://docs.yescaptcha.com/th/tasks/image-to-text/ · 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/image-to-text/ ส่งภาพ CAPTCHA แบบตัวอักษรเป็น Base64 แล้วรับตัวอักษรภาษาอังกฤษและตัวเลขในภาพกลับมา (`solution.text`) `ImageToTextTaskOcrBase` ราคาภาพละ 2 พอยต์ (≈ $0.30 / 1k) และคืนผลแบบซิงโครนัส คือได้ผลลัพธ์จากคำขอ `createTask` เพียงครั้งเดียว หากต้องการกำหนดเงื่อนไข เช่น ตัวพิมพ์ใหญ่เล็ก ตัวเลขล้วน หรือนิพจน์คำนวณ ให้ใช้ `ImageToTextTask` แบบอะซิงโครนัส - POST `https://api.yescaptcha.com/createTask` (endpoint ทั่วโลก) - POST `https://cn.yescaptcha.com/createTask` (endpoint จีน) เนื้อหาคำขอเป็น JSON และยืนยันตัวตนด้วย `clientKey` ## ประเภทงานและราคา | ประเภทงาน | ราคา | รูปแบบการคืนผลลัพธ์ | หมายเหตุ | | --- | --- | --- | --- | | `ImageToTextTaskOcrBase` | $0.30 / 1k; 2 พอยต์/งาน · ¥2 / 1k | แบบซิงโครนัส | | | `ImageToTextTaskMuggle` | $0.30 / 1k; 2 พอยต์/งาน · ¥2 / 1k | แบบซิงโครนัส | ไม่รองรับตัวเลือก case และ numeric ใช้ project\_name เพื่อเลือกโมเดลที่กำหนดเองได้ | | `ImageToTextTask` | $0.60 / 1k; 4 พอยต์/งาน · ¥4 / 1k | แบบอะซิงโครนัส | | | `ImageToTextTaskM1` | $2.25 / 1k; 15 พอยต์/งาน · ¥15 / 1k | แบบอะซิงโครนัส | | ราคาเป็นดอลลาร์สหรัฐเป็นเพียงค่าประมาณที่ US$1 ≈ ¥6.67 งานจะถูกหักเป็นพอยต์ | ความต้องการ | ประเภทที่ใช้ | | --- | --- | | CAPTCHA ตัวอักษรและตัวเลขทั่วไป ราคาถูกและเร็วที่สุด | `ImageToTextTaskOcrBase`, `ImageToTextTaskMuggle` (แบบซิงโครนัส) | | ใช้โมเดลที่สร้างเฉพาะสำหรับคุณ | `ImageToTextTaskMuggle` พร้อม `project_name` | | ต้องแยกตัวพิมพ์ใหญ่เล็ก ตัวเลขล้วน คำนวณนิพจน์ หรือจำกัดความยาว | `ImageToTextTask`, `ImageToTextTaskM1` (แบบอะซิงโครนัส) | แต่ละประเภทงานใช้โมเดลและเส้นทางที่ต่างกัน ผลลัพธ์กับภาพประเภทเดียวกันจึงอาจไม่เท่ากัน ลองทดสอบหลายประเภทก่อนเลือกใช้ ## พารามิเตอร์ของคำขอ | ฟิลด์ | ประเภท | จำเป็น | คำอธิบาย | | --- | --- | --- | --- | | `type` | string | ใช่ | ประเภทงาน ดูค่าที่ใช้ได้ในหัวข้อ "ประเภทงานและราคา" ของหน้านี้ | | `body` | string | ใช่ | รูปภาพที่เข้ารหัส Base64 โดยไม่มีคำนำหน้า `data:image/...;base64,` และไม่มีการขึ้นบรรทัดใหม่ | | `project_name` | string | ไม่ | ชื่อโมเดลที่กำหนดเอง รองรับเฉพาะ `ImageToTextTaskMuggle` หากไม่ระบุจะใช้โมเดลตัวอักษรและตัวเลขทั่วไป หากต้องการโมเดลที่กำหนดเองโปรดติดต่อฝ่ายสนับสนุน (เฉพาะ ImageToTextTaskMuggle) | | `phrase` | boolean | ไม่ | true หมายถึงคำตอบมีช่องว่างอย่างน้อยหนึ่งช่อง (เฉพาะ ImageToTextTask, ImageToTextTaskM1) | | `case` | boolean | ไม่ | true หมายถึงคำตอบแยกแยะตัวพิมพ์ใหญ่และตัวพิมพ์เล็ก (เฉพาะ ImageToTextTask, ImageToTextTaskM1) | | `numeric` | integer | ไม่ | 0 ไม่มีข้อกำหนด; 1 ตัวเลขเท่านั้น; 2 ไม่มีตัวเลข (เฉพาะ ImageToTextTask, ImageToTextTaskM1) | | `math` | boolean | ไม่ | true หมายถึงรูปภาพเป็นนิพจน์ทางคณิตศาสตร์ และคำตอบคือผลลัพธ์ของนิพจน์นั้น (เฉพาะ ImageToTextTask, ImageToTextTaskM1) | | `minLength` | integer | ไม่ | ความยาวขั้นต่ำของคำตอบ 0 หมายถึงไม่จำกัด (เฉพาะ ImageToTextTask, ImageToTextTaskM1) | | `maxLength` | integer | ไม่ | ความยาวสูงสุดของคำตอบ 0 หมายถึงไม่จำกัด (เฉพาะ ImageToTextTask, ImageToTextTaskM1) | `body` คือ Base64 ของไฟล์ภาพ ภาพ WebP จะถูกแปลงให้อัตโนมัติ > **คำเตือน:** Base64 ต้องไม่มีคำนำหน้า `data:image/...;base64,` และต้องไม่มีการขึ้นบรรทัดใหม่ ## ตัวอย่างคำขอ POST https://api.yescaptcha.com/createTask ```json { "clientKey": "YOUR_CLIENT_KEY", "task": { "type": "ImageToTextTaskOcrBase", "body": "BASE64_IMAGE" } } ``` โค้ดฉบับเต็ม (อ่านไฟล์ `captcha.png` ในไดเรกทอรีปัจจุบัน): **curl** ```bash # Replace BASE64_IMAGE with the Base64-encoded image curl -s https://api.yescaptcha.com/createTask \ -H 'Content-Type: application/json' \ -d '{ "clientKey": "YOUR_CLIENT_KEY", "task": { "type": "ImageToTextTaskOcrBase", "body": "BASE64_IMAGE" } }' ``` **Python** solve.py ```python import os import base64 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): return call("createTask", {"task": task})["solution"] # Base64-encode the image (no data: prefix) with open("captcha.png", "rb") as f: image_b64 = base64.b64encode(f.read()).decode() solution = solve({ "type": "ImageToTextTaskOcrBase", "body": image_b64, }) print(solution["text"]) ``` **Node.js** solve.mjs ```js import { readFileSync } from 'node:fs'; 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 { solution } = await call('createTask', { task }); return solution; } // Base64-encode the image (no data: prefix) const imageB64 = readFileSync('captcha.png').toString('base64'); const solution = await solve({ type: "ImageToTextTaskOcrBase", body: imageB64, }); console.log(solution.text); ``` งานแบบอะซิงโครนัสที่มีเงื่อนไข: POST https://api.yescaptcha.com/createTask ```json { "clientKey": "YOUR_CLIENT_KEY", "task": { "type": "ImageToTextTask", "body": "BASE64_IMAGE", "case": true, "numeric": 0, "minLength": 4, "maxLength": 6 } } ``` ## ผลลัพธ์ที่ได้รับ ประเภทงานแบบซิงโครนัสจะคืนผลใน `createTask` โดยตรง: ```json { "errorId": 0, "status": "ready", "solution": { "text": "LMResm" }, "taskId": "2376919c-1863-11ec-a012-94e6f7355a0b" } ``` ประเภทงานแบบอะซิงโครนัส (`ImageToTextTask`, `ImageToTextTaskM1`) จะคืน `taskId` ก่อน จากนั้นให้เรียก `getTaskResult` ตรวจซ้ำทุก 5 วินาที เมื่อเสร็จแล้ว `solution` จะมีรูปแบบเดียวกัน | ฟิลด์ | ประเภท | คำอธิบาย | | --- | --- | --- | | `text` | string | ข้อความที่จดจำได้ | ## โมเดลที่สร้างเฉพาะ โมเดลทั่วไปใช้ได้กับ CAPTCHA ตัวอักษรและตัวเลขทุกแบบ แต่ความแม่นยำต่ำกว่าโมเดลที่ฝึกมาเฉพาะเล็กน้อย หากภาพที่ต้องการอ่านมีรูปแบบเดียวกันเสมอ คุณสามารถ [ติดต่อฝ่ายสนับสนุน](https://docs.yescaptcha.com/th/help/contact.md) เพื่อสร้างโมเดลเฉพาะ จากนั้นระบุด้วย `ImageToTextTaskMuggle` พร้อม `project_name` ## คำถามที่พบบ่อย ### ถ้าอ่านผิดจะถูกหักพอยต์หรือไม่? ประเภทงานแบบซิงโครนัสจะหักพอยต์เมื่อมีผลลัพธ์คืนมา แม้ผลลัพธ์จะไม่ถูกต้อง คุณสามารถเปลี่ยนไปลองประเภทงานอื่นเพื่อเปรียบเทียบ หรือสร้างโมเดลเฉพาะ ### ได้รับ `ERROR_ZERO_CAPTCHA_FILESIZE` หรือ `ERROR_PARSE_IMAGE_FAIL`? Base64 ของภาพไม่สมบูรณ์ หรือมีคำนำหน้า `data:` หรือการขึ้นบรรทัดใหม่ ให้ตรวจสอบการเข้ารหัส ดูที่ [รหัสข้อผิดพลาด](https://docs.yescaptcha.com/th/api/errors.md) ## ตัวอย่างที่เกี่ยวข้อง - [เริ่มต้นใช้งานอย่างรวดเร็ว](https://docs.yescaptcha.com/th/getting-started/quickstart.md): ส่งคำขอแรกด้วย `ImageToTextTaskOcrBase` - [ตัวอย่าง Python](https://docs.yescaptcha.com/th/samples/python.md) --- # การจดจำภาพ reCAPTCHA v2 > ใช้ YesCaptcha จดจำโจทย์ภาพของ reCAPTCHA v2 (ReCaptchaV2Classification) โดยอัปโหลดภาพ 3x3, 4x4 หรือ 1x1 พร้อม ID ของคำถาม แล้วรับช่องที่ต้องคลิกกลับมาแบบซิงโครนัส คิดราคาตามขนาดภาพ พร้อมตารางเทียบ ID ของคำถาม Source: https://docs.yescaptcha.com/th/tasks/recaptcha-classification/ · 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/recaptcha-classification/ `ReCaptchaV2Classification` ใช้จดจำโจทย์ภาพที่ reCAPTCHA v2 แสดงขึ้นมา โดยส่งภาพและ ID ของคำถามเข้าไป แล้วจะได้ช่องที่ควรคลิกกลับมา จากนั้นโปรแกรมของคุณจะเป็นฝ่ายคลิกในเบราว์เซอร์เอง ประเภทนี้**ไม่คืนค่า token** และทำงานแบบซิงโครนัส คือได้ผลลัพธ์จากคำขอ `createTask` เพียงครั้งเดียว ภาพ 3x3 และ 4x4 คิดภาพละ 6 พอยต์ (≈ $0.90 / 1k) ส่วนภาพเล็ก 1x1 ราคาถูกกว่า ดูได้จากตารางด้านล่าง > **เคล็ดลับ:** หากไม่ต้องการเขียนโค้ดคลิกเอง ใช้ [ส่วนขยายเบราว์เซอร์](https://docs.yescaptcha.com/th/extension.md) ได้เลย ซึ่งคลิกให้อัตโนมัติโดยอาศัย API นี้ - POST `https://api.yescaptcha.com/createTask` (endpoint ทั่วโลก) - POST `https://cn.yescaptcha.com/createTask` (endpoint จีน) ## ประเภทงานและราคา | ประเภทงาน | ราคา | รูปแบบการคืนผลลัพธ์ | หมายเหตุ | | --- | --- | --- | --- | | `ReCaptchaV2Classification` | $0.90 / 1k; 6 พอยต์/งาน · ¥6 / 1k | แบบซิงโครนัส | ภาพเล็ก 1x1 (100x100) 2 พอยต์ ส่วน 3x3 (300x300) และ 4x4 (450x450) 6 พอยต์ | ราคาเป็นดอลลาร์สหรัฐเป็นเพียงค่าประมาณที่ US$1 ≈ ¥6.67 งานจะถูกหักเป็นพอยต์ ## พารามิเตอร์ของคำขอ | ฟิลด์ | ประเภท | จำเป็น | คำอธิบาย | | --- | --- | --- | --- | | `type` | string | ใช่ | ประเภทงาน ดูค่าที่ใช้ได้ในหัวข้อ "ประเภทงานและราคา" ของหน้านี้ | | `image` | string | ใช่ | รูปภาพโจทย์ที่เข้ารหัส Base64 โดยไม่มีคำนำหน้า `data:` | | `question` | string | ใช่ | ID ของคำถาม เช่น `/m/0k4j` ดูในหัวข้อ "ID คำถาม" ของหน้านี้ | | `confidence` | number | ไม่ | เกณฑ์ค่าความเชื่อมั่น ตั้งแต่ 0 ถึง 1 ใช้กับภาพ 3x3 เท่านั้น หากระบุ (แนะนำเริ่มที่ 0.5) ระบบจะคืนทุกช่องที่สูงกว่าค่านี้ หากไม่ระบุจะคืน 3 ช่องที่มีแนวโน้มมากที่สุด | > **คำเตือน:** ต้องปรับขนาดภาพให้เป็นขนาดมาตรฐานตามตารางด้านล่าง เซิร์ฟเวอร์จะใช้ขนาดภาพเป็นตัวตัดสินประเภทของโจทย์ | ประเภทโจทย์ | ขนาดภาพ | ผลลัพธ์ที่ได้ | | --- | --- | --- | | ตาราง 3x3 (“เลือกทุกภาพ”) | 300 × 300 | `objects`: ช่องที่ต้องคลิก | | ตาราง 4x4 (“เลือกทุกช่อง”) | 450 × 450 | `objects`: ช่องที่ต้องคลิก | | ภาพเล็ก 1x1 (ภาพเดี่ยวที่โผล่มาแทนหลังคลิกในตาราง 3x3) | 100 × 100 | `hasObject`: ภาพนี้ต้องคลิกหรือไม่ | หากใช้ภาพหน้าจอ ให้ดูจากข้อความของคำถาม: โจทย์ 3x3 คือ “เลือกทุกภาพ” (Select all images with …) ส่วน 4x4 คือ “เลือกทุกช่อง” (Select all squares with …) ## ตัวอย่างคำขอ POST https://api.yescaptcha.com/createTask ```json { "clientKey": "YOUR_CLIENT_KEY", "task": { "type": "ReCaptchaV2Classification", "image": "BASE64_IMAGE", "question": "/m/0k4j" } } ``` ## ผลลัพธ์ 3x3 และ 4x4: ```json { "errorId": 0, "status": "ready", "solution": { "objects": [1, 5, 8], "type": "multi" }, "taskId": "3a9e8cb8-3871-11ec-9794-94e6f7355a0b" } ``` ภาพเล็ก 1x1: ```json { "errorId": 0, "status": "ready", "solution": { "hasObject": true, "type": "single" } } ``` | ฟิลด์ | ประเภท | คำอธิบาย | | --- | --- | --- | | `objects` | array | ลำดับของภาพที่ต้องคลิก เริ่มจาก 0 เรียงจากซ้ายไปขวาและจากบนลงล่าง | | `hasObject` | boolean | คืนค่าเมื่อเป็นภาพย่อย 1x1 ระบุว่าภาพนี้มีเป้าหมายหรือไม่ | | `type` | string | ประเภทโจทย์: `multi` (ภาพใหญ่ 3x3 หรือ 4x4 ดู `objects`), `single` (ภาพย่อย 1x1 ดู `hasObject`) ส่วนโจทย์ลากของ hCaptcha จะเป็น `drag` | ช่องจะนับเลขตั้งแต่ 0 เรียงจากซ้ายไปขวา และจากบนลงล่าง: ![หมายเลขช่อง 0 ถึง 8 ของตาราง 3x3](https://docs.yescaptcha.com/_astro/recaptcha-3x3-index.C2AG6XA0_1qgyOb.webp) ![หมายเลขช่อง 0 ถึง 15 ของตาราง 4x4](https://docs.yescaptcha.com/_astro/recaptcha-4x4-index.CE_Q3Ngp_Z1pmx9g.webp) ## confidence: รับทุกช่องที่ตรงเงื่อนไขในครั้งเดียว หลังคลิกโจทย์ 3x3 แล้ว มักจะมีภาพเล็ก 1x1 โผล่ขึ้นมาให้ตัดสินต่อ หากจับภาพเล็กเหล่านั้นไม่สะดวก (เช่น พัฒนาบนมือถือ) สามารถส่ง `confidence` ได้: - หากไม่ส่ง ภาพ 3x3 จะคืน 3 ช่องที่ได้คะแนนสูงสุด (reCAPTCHA กำหนดให้คลิกอย่างน้อย 3 ช่อง) - หากส่ง (แนะนำ `0.5`) จะคืนทุกช่องที่คะแนนสูงกว่าค่านี้ ซึ่งอาจมากกว่าหรือน้อยกว่า 3 ช่อง และหากไม่มีช่องที่ตรงเงื่อนไขจะคืนอาร์เรย์ว่าง ทำให้ไม่ต้องจับภาพเล็ก 1x1 อีก - ไม่มีผลกับภาพ 4x4 และ 1x1 ## ID ของคำถาม `question` ให้ใส่ ID ของคำถาม (ขึ้นต้นด้วย `/m/`) ไม่ใช่ข้อความของคำถาม โดย ID จะมาพร้อมกับภาพในการตอบกลับของคำขอที่ reCAPTCHA ใช้โหลดโจทย์ (`reload` หรือ `userverify`) ตารางด้านล่างคือคำถามที่พบบ่อย คำแปลภาษาจีนใช้อ้างอิงเท่านั้น: ทั้งหมด 16 รายการ | ID คำถาม | คำถาม (อังกฤษ) | | --- | --- | | `/m/0pg52` | `taxis` | | `/m/01bjv` | `bus` | | `/m/04_sv` | `motorcycles` | | `/m/013xlm` | `tractors` | | `/m/01jk_4` | `chimneys` | | `/m/014xcs` | `crosswalks` | | `/m/015qff` | `traffic lights` | | `/m/0199g` | `bicycles` | | `/m/015qbp` | `parking meters` | | `/m/0k4j` | `cars` | | `/m/015kr` | `bridges` | | `/m/019jd` | `boats` | | `/m/0cdl1` | `palm trees` | | `/m/09d_r` | `mountains or hills` | | `/m/01pns0` | `fire hydrant` | | `/m/01lynh` | `stairs` | ไม่พบคำถามที่ตรงกัน หากได้ `ERROR_UNKNOWN_QUESTION` แสดงว่ากรอก ID ผิดหรือโจทย์นี้ยังไม่รองรับ ส่วน `ERROR_UNKNOW_450x450_QUESTION` แสดงว่าโจทย์นี้ยังไม่รองรับภาพ 4x4 ให้รีเฟรชบนหน้าเว็บเพื่อเปลี่ยนโจทย์ ## การรายงานและคืนพอยต์ หากคลิกแล้วการยืนยันไม่ผ่าน สามารถรายงานด้วย [report](https://docs.yescaptcha.com/th/api/report.md) ภายใน 1 ชั่วโมง และจะคืนพอยต์หลังรายงานเมื่อผ่านไปประมาณ 24 ชั่วโมง ดูกฎได้ที่ [การคิดเงินและการคืนพอยต์](https://docs.yescaptcha.com/th/getting-started/billing.md) หากยืนยันผ่านก็ขอให้รายงานด้วย report โดยส่ง `isSuccess: true` เช่นกัน ## บทความที่เกี่ยวข้อง - [การจำลองการคลิกภาพ reCAPTCHA v2 (Selenium)](https://docs.yescaptcha.com/th/guides/recaptcha-click-selenium.md) - [reCAPTCHA v2 (คืนค่า token)](https://docs.yescaptcha.com/th/tasks/recaptcha-v2.md) --- # การจดจำภาพ hCaptcha > ใช้ YesCaptcha จดจำโจทย์ภาพของ hCaptcha (HCaptchaClassification) ได้แก่ การเลือกในตาราง การคลิกตำแหน่งที่กำหนด การลากไปยังตำแหน่งที่กำหนด และโจทย์แบบแอนิเมชัน ส่งผลลัพธ์แบบซิงโครนัส และไม่หักพอยต์เมื่อไม่พบเป้าหมาย Source: https://docs.yescaptcha.com/th/tasks/hcaptcha-classification/ · 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-classification/ `HCaptchaClassification` จดจำโจทย์ภาพที่ hCaptcha แสดงขึ้นมา: ส่งคำถามและรูปภาพเข้ามา แล้วระบบจะคืนค่าว่าควรเลือกรูปใด ควรคลิกตำแหน่งใด หรือควรลากจากจุดไหนไปจุดไหน จากนั้นให้โปรแกรมของคุณดำเนินการในเบราว์เซอร์ **ไม่คืนค่า token** ส่งผลลัพธ์แบบซิงโครนัส ราคาครั้งละ 8 พอยต์ (≈ $1.20 / 1k) และไม่หักพอยต์เมื่อไม่พบเป้าหมาย (ผลลัพธ์ว่าง) > **เคล็ดลับ:** หากไม่ต้องการเขียนโค้ดสำหรับคลิกเอง สามารถใช้ [ส่วนขยายเบราว์เซอร์](https://docs.yescaptcha.com/th/extension.md) ได้เลย ซึ่งรองรับโจทย์ทุกรูปแบบเหล่านี้ หากต้องการ token แทนตำแหน่งที่ต้องคลิก ให้ใช้ [hCaptcha](https://docs.yescaptcha.com/th/tasks/hcaptcha.md) - POST `https://api.yescaptcha.com/createTask` (endpoint ทั่วโลก) - POST `https://cn.yescaptcha.com/createTask` (endpoint จีน) ## ประเภทงานและราคา | ประเภทงาน | ราคา | รูปแบบการคืนผลลัพธ์ | หมายเหตุ | | --- | --- | --- | --- | | `HCaptchaClassification` | $1.20 / 1k; 8 พอยต์/งาน · ¥8 / 1k | แบบซิงโครนัส | ไม่หักพอยต์เมื่อไม่พบเป้าหมาย | ราคาเป็นดอลลาร์สหรัฐเป็นเพียงค่าประมาณที่ US$1 ≈ ¥6.67 งานจะถูกหักเป็นพอยต์ ## พารามิเตอร์ของคำขอ | ฟิลด์ | ประเภท | จำเป็น | คำอธิบาย | | --- | --- | --- | --- | | `type` | string | ใช่ | ประเภทงาน ดูค่าที่ใช้ได้ในหัวข้อ "ประเภทงานและราคา" ของหน้านี้ | | `queries` | array | ใช่ | รายการภาพโจทย์ที่เข้ารหัส Base64 เรียงตามลำดับบนหน้าเว็บ (ตาราง 3×3 จะมี 9 ภาพย่อย) | | `question` | string | ไม่ | คำถามฉบับเต็มตามที่แสดงบนหน้าเว็บ (แนะนำภาษาจีนตัวย่อหรือภาษาอังกฤษ) เช่น `Please click each image containing a bicycle` ต้องส่ง `question` หรือ `anchors` อย่างน้อยหนึ่งรายการ และแนะนำให้ส่งทั้งสองรายการ | | `anchors` | array | ไม่ | รายการภาพตัวอย่างที่แสดงอยู่ข้างคำถาม เข้ารหัส Base64 โจทย์ที่มีภาพตัวอย่างต้องส่งด้วย | - `question` ให้ส่งประโยคคำถามทั้งประโยคตามที่แสดงบนหน้าเว็บ ไม่ต้องแปลเป็นภาษาอื่น และแนะนำให้ตั้งค่า hCaptcha เป็นภาษาจีนตัวย่อหรือภาษาอังกฤษ โจทย์รูปแบบใหม่มักได้รับการรองรับอย่างรวดเร็ว ส่วนหมวดหมู่ใหม่ทั้งหมดจะรองรับภายใน 3 วันทำการ > **คำเตือน:** หากมีภาพตัวอย่างขนาดเล็กที่มุมขวาบนของโจทย์ ต้องใส่ภาพนั้นใน `anchors` โจทย์ที่ต้องดูภาพตัวอย่างจึงจะตัดสินได้ จะจดจำไม่ได้หากไม่ส่ง `anchors` ## การเลือกในตาราง โจทย์ในรูปแบบ “Please click each image containing …” โดยมีรูปเล็ก 9 รูปด้านล่าง ใส่ Base64 ของรูปทั้ง 9 ใน `queries` ตามลำดับ: POST https://api.yescaptcha.com/createTask ```json { "clientKey": "YOUR_CLIENT_KEY", "task": { "type": "HCaptchaClassification", "question": "Please click each image containing a bicycle", "queries": ["BASE64_IMAGE_1", "BASE64_IMAGE_2"] } } ``` ผลลัพธ์: ```json { "errorId": 0, "status": "ready", "solution": { "objects": [true, false, false, true, true, false, true, true, false], "top_k": [0, 3, 4, 6, 7], "confidences": [1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 1.0, 1.0, 0.0] } } ``` `objects` และ `top_k` มีความหมายเดียวกัน โดยอย่างแรกบอกว่าแต่ละรูปเป็นเป้าหมายหรือไม่ ส่วนอย่างหลังเป็นลำดับของรูปที่เป็นเป้าหมาย (เริ่มจาก 0) ให้คลิกรูปเหล่านั้น ## คลิกตำแหน่งที่กำหนด โจทย์ในรูปแบบ “Please click on …” โดยมีรูปใหญ่หนึ่งรูปด้านล่าง และต้องคลิกตำแหน่งหนึ่งหรือหลายตำแหน่งบนรูปนั้น 1. ใช้ `question` ตามที่แสดงบนหน้าเว็บ หากมีภาพตัวอย่างขนาดเล็ก ให้ใส่ใน `anchors` 2. ใส่รูปหนึ่งรูปใน `queries` ควรใช้รูปต้นฉบับที่ส่งออกจาก canvas โดยตรง (แนะนำให้แปลงเป็น JPG) หากทำได้เพียงแคปหน้าจอ ให้แคปเฉพาะพื้นที่รูปใหญ่ในกรอบสีแดงด้านล่าง ห้ามเกินหรือขาด 3. `box` ในผลลัพธ์คือพิกัดที่ต้องคลิก เรียงเป็น x1, y1, x2, y2, … โดยใช้มุมซ้ายบนของรูปที่อัปโหลดเป็นจุดเริ่มต้น 4. หากขนาดของรูปที่อัปโหลดต่างจากขนาดที่แสดงบนหน้าเว็บ ต้องแปลงค่า: x บนหน้าเว็บ = x ที่ได้รับ × ความกว้างที่แสดง ÷ ความกว้างของรูปที่อัปโหลด (y ก็เช่นเดียวกัน) ตัวอย่างเช่น ได้ x = 769 โดย canvas แสดงกว้าง 350 และรูปที่อัปโหลดกว้าง 1000 บนหน้าเว็บต้องคลิกที่ 769 × 350 ÷ 1000 ≈ 269 ![ขอบเขตการแคปหน้าจอของโจทย์แบบคลิก: ข้อความโจทย์เป็น question, ภาพตัวอย่างเล็กสามรูปเป็น anchors, รูปใหญ่ด้านล่างเป็น queries](https://docs.yescaptcha.com/_astro/hcaptcha-click-areas.DCBFUFPf_Z123RnJ.webp) POST https://api.yescaptcha.com/createTask ```json { "clientKey": "YOUR_CLIENT_KEY", "task": { "type": "HCaptchaClassification", "question": "Please click on the entity present in the sample image.", "anchors": ["BASE64_ANCHOR_1", "BASE64_ANCHOR_2", "BASE64_ANCHOR_3"], "queries": ["BASE64_OF_THE_BIG_IMAGE"] } } ``` ผลลัพธ์: ```json { "errorId": 0, "status": "ready", "solution": { "box": ["221", "213"] } } ``` หากต้องคลิกเป้าหมายหลายจุด `box` จะเป็นพิกัดหลายคู่เรียงต่อกัน: `["221", "213", "340", "118", ...]` ## ลากไปยังตำแหน่งที่กำหนด โจทย์ในรูปแบบ “Drag … to …” ต้องลากชิ้นส่วนเล็กทางด้านขวาไปยังตำแหน่งที่ตรงกันในรูป 1. ใช้ `question` ตามที่แสดงบนหน้าเว็บ 2. แคปรูปหนึ่งรูปใส่ใน `queries` โดยในรูปต้องมี**ทั้ง**ชิ้นส่วนที่ต้องลากและตำแหน่งปลายทาง และแต่ละด้านของรูปต้องไม่น้อยกว่า 260 พิกเซล 3. แต่ละรายการใน `box` ของผลลัพธ์คือการลากหนึ่งครั้ง โดย `start` คือตำแหน่งของชิ้นส่วน และ `end` คือตำแหน่งที่ต้องลากไปวาง หากมีหลายชิ้นส่วนให้ลากทีละชิ้น ```json { "errorId": 0, "status": "ready", "solution": { "type": "drag", "box": [ { "start": [644, 218], "end": [239, 315] } ] } } ``` ![ตัวอย่างผลการจดจำโจทย์แบบลาก: Start คือชิ้นส่วนที่ต้องลาก End คือตำแหน่งปลายทาง](https://docs.yescaptcha.com/_astro/hcaptcha-drag-result.vEj4iyUz_1Ou9zz.webp) หากสิ่งที่คุณได้รับเป็นข้อมูลระดับโปรโตคอล (รูปของชิ้นส่วน พิกัดของชิ้นส่วน และรูปพื้นหลังขนาดใหญ่) ไม่ใช่ภาพที่แคปหน้าจอ ให้นำชิ้นส่วนไปวางบนรูปพื้นหลังตามพิกัดก่อน เพื่อให้ได้ภาพที่หน้าตาเหมือนภาพแคปหน้าจอ แล้วจึงส่งเข้ามา ## โจทย์แบบแอนิเมชัน เมื่อรูปของโจทย์เป็นแอนิเมชัน ให้ใส่ Base64 ของแอนิเมชัน (GIF หรือรูปแบบอื่น) ใน `queries` แนะนำให้แอนิเมชันยาวอย่างน้อย 3 วินาที ควรเป็น 5 ถึง 6 วินาที และมีเฟรมเรตประมาณ 12 FPS ## การรายงานและการคืนพอยต์ หากคลิกแล้วการตรวจสอบไม่ผ่าน สามารถรายงานด้วย [report](https://docs.yescaptcha.com/th/api/report.md) ภายใน 1 ชั่วโมง และจะคืนพอยต์หลังรายงานเมื่อครบประมาณ 24 ชั่วโมง ดูกฎได้ที่ [การเรียกเก็บเงินและการคืนพอยต์](https://docs.yescaptcha.com/th/getting-started/billing.md) ## บทความที่เกี่ยวข้อง - [การจดจำภาพ hCaptcha และจำลองการคลิก (Selenium)](https://docs.yescaptcha.com/th/guides/hcaptcha-click-selenium.md) --- # การจดจำภาพ FunCaptcha > ใช้ YesCaptcha จดจำโจทย์ภาพของ FunCaptcha (Arkose Labs) (FunCaptchaClassification) โดยอัปโหลดภาพโจทย์ (ตาราง 6 ช่อง หรือโจทย์ลูกศรที่ต่อภาพซ้ายขวา) และคำถามภาษาอังกฤษ แล้วรับผลแบบซิงโครนัสว่าควรเลือกภาพที่เท่าไร รองรับโจทย์ทุกรูปแบบ Source: https://docs.yescaptcha.com/th/tasks/funcaptcha-classification/ · Last verified: 2026-10-16 > This page was machine-translated from the Chinese version. If anything differs, the Chinese version prevails: https://docs.yescaptcha.com/zh/tasks/funcaptcha-classification/ `FunCaptchaClassification` ใช้จดจำโจทย์ภาพของ FunCaptcha (Arkose Labs) โดยส่งภาพโจทย์และคำถามภาษาอังกฤษมา แล้วจะได้ผลลัพธ์ว่าควรเลือกภาพที่เท่าไร จากนั้นโปรแกรมของคุณจะคลิกในเบราว์เซอร์เอง ประเภทนี้**ไม่คืนค่า token** ทำงานแบบซิงโครนัส ราคาครั้งละ 3 พอยต์ (≈ $0.45 / 1k) > **เคล็ดลับ:** หากไม่ต้องการเขียนโค้ด สามารถใช้ [ส่วนขยายเบราว์เซอร์](https://docs.yescaptcha.com/th/extension.md) เพื่อแก้โจทย์บนหน้าเว็บโดยอัตโนมัติ - POST `https://api.yescaptcha.com/createTask` (endpoint ทั่วโลก) - POST `https://cn.yescaptcha.com/createTask` (endpoint จีน) ## ประเภทงานและราคา | ประเภทงาน | ราคา | รูปแบบการคืนผลลัพธ์ | หมายเหตุ | | --- | --- | --- | --- | | `FunCaptchaClassification` | $0.45 / 1k; 3 พอยต์/งาน · ¥3 / 1k | แบบซิงโครนัส | | ราคาเป็นดอลลาร์สหรัฐเป็นเพียงค่าประมาณที่ US$1 ≈ ¥6.67 งานจะถูกหักเป็นพอยต์ ## พารามิเตอร์ของคำขอ | ฟิลด์ | ประเภท | จำเป็น | คำอธิบาย | | --- | --- | --- | --- | | `type` | string | ใช่ | ประเภทงาน ดูค่าที่ใช้ได้ในหัวข้อ "ประเภทงานและราคา" ของหน้านี้ | | `image` | string | ใช่ | รูปภาพโจทย์ที่เข้ารหัส Base64 โดยไม่มีคำนำหน้า `data:` | | `question` | string | ใช่ | ข้อความคำถามเป็นภาษาอังกฤษ (เช่น `Pick the image that is the correct way up`) คำถามที่รองรับดูได้ในหน้านี้ | - `image` ใส่เฉพาะส่วนภาพของโจทย์ (ตาราง 6 ช่อง หรือภาพโจทย์ลูกศรที่ต่อซ้ายขวา) ไม่ต้องรวมหัวข้อและปุ่มด้านบนเข้ามาในภาพ ภาพต้องครบถ้วน หากขาดไปส่วนหนึ่งจะส่งผลต่อความแม่นยำ สำหรับตาราง 6 ช่องแบบแนวตั้ง อัปโหลดภาพต้นฉบับได้เลย - `question` ใช้ข้อความคำถามภาษาอังกฤษทั้งหมดตามที่แสดงบนหน้าเว็บ โดยตัวพิมพ์เล็กใหญ่ต้องถูกต้อง อย่าแปลเอง หากหน้าเว็บเป็นภาษาอื่น ให้สลับ CAPTCHA เป็นภาษาอังกฤษก่อน เซิร์ฟเวอร์ใช้คำถามในการระบุรูปแบบโจทย์ จึงต้องถูกต้องตรงกัน ## ตัวอย่างคำขอ POST https://api.yescaptcha.com/createTask ```json { "clientKey": "YOUR_CLIENT_KEY", "task": { "type": "FunCaptchaClassification", "image": "BASE64_IMAGE", "question": "Pick the bread" } } ``` ## ผลลัพธ์ที่ได้ ```json { "errorId": 0, "status": "ready", "solution": { "objects": [4], "labels": ["parrot", "panda", "octopus", "owl", "bread", "dog"] }, "taskId": "04a3fa76-11a0-11ed-a58c-0ef20f419382" } ``` | ฟิลด์ | ประเภท | คำอธิบาย | | --- | --- | --- | | `objects` | array | ลำดับของภาพที่ต้องเลือก เริ่มจาก 0 เรียงจากซ้ายไปขวาและจากบนลงล่าง | | `labels` | array | ป้ายกำกับที่จดจำได้ | `objects: [4]` หมายถึงให้เลือกภาพที่ 5 (ลำดับเริ่มจาก 0 นับจากซ้ายไปขวาและจากบนลงล่าง) โจทย์หนึ่งชุดมักต้องทำต่อเนื่องหลายรอบ ในแต่ละรอบต้องจับภาพหน้าจอใหม่และเรียกใช้ใหม่ทุกครั้ง ## โจทย์ที่รองรับ **รองรับโจทย์ทุกรูปแบบ** จึงไม่ต้องตรวจรายการโจทย์ก่อน เพียงส่งคำถามภาษาอังกฤษและภาพโจทย์จากหน้าเว็บมาได้เลย หากได้รับ `ERROR_UNKNOWN_QUESTION` โปรด[ติดต่อฝ่ายสนับสนุน](https://docs.yescaptcha.com/th/help/contact.md) ปัจจุบันที่พบบ่อยคือโจทย์ลูกศรที่ต่อภาพซ้ายขวา ฝั่งซ้ายเป็นตัวอย่างที่ต้องเทียบ ฝั่งขวาเป็นภาพปัจจุบัน บนหน้าเว็บจะใช้ลูกศรสลับภาพฝั่งขวาเพื่อหาภาพที่ตรงกับคำถาม ให้อัปโหลดภาพทั้งใบ (ทั้งสองฝั่ง) ตามที่แสดงบนหน้าเว็บ เช่น ![Use the arrows to change the number of objects until it matches the left image](https://docs.yescaptcha.com/_astro/q62.DGQezOOy_Z1EsIgX.webp) `Use the arrows to change the number of objects until it matches the left image`จำนวนตรงกับภาพซ้าย ![use the arrows to choose the image where all the darts add up to the number in the left image](https://docs.yescaptcha.com/_astro/q78.0vWcO51p_2wPQvu.webp) `use the arrows to choose the image where all the darts add up to the number in the left image`ผลรวมของเลขบนลูกดอกเท่ากับเลขในภาพซ้าย ![use the arrows to find the jigsaw puzzle that is missing the puzzle piece shown on the left](https://docs.yescaptcha.com/_astro/q82.BcIr6l9k_4eMdV.webp) `use the arrows to find the jigsaw puzzle that is missing the puzzle piece shown on the left`ชิ้นที่ขาดคือชิ้นจิ๊กซอว์ทางซ้าย ![find the image that has the prize on the left held by the claw in the machine on the right](https://docs.yescaptcha.com/_astro/q85.BtNj_O28_pJLGa.webp) `find the image that has the prize on the left held by the claw in the machine on the right`ก้ามหนีบคีบรางวัลทางซ้าย อีกแบบคือโจทย์เลือกภาพแบบตาราง 6 ช่อง (เช่น `Pick the bread`) ให้อัปโหลดเฉพาะส่วนตาราง 6 ช่อง ดูตัวอย่างคำขอด้านบน ## การรายงานและคืนพอยต์หลังรายงาน หากการส่งผลสุดท้ายของโจทย์ชุดหนึ่งล้มเหลว แต่ไม่ทราบว่ารอบใดผิด สามารถนำ ID งานของทั้งชุดไป[รายงาน](https://docs.yescaptcha.com/th/api/report.md)ด้วย `report` พร้อมกัน (ภายใน 1 ชั่วโมง) โดยจะคืนพอยต์หลังรายงานหลังจากประมาณ 24 ชั่วโมง ดูกฎได้ที่ [การคิดค่าบริการและการคืนพอยต์](https://docs.yescaptcha.com/th/getting-started/billing.md) --- # การจดจำภาพ AWS WAF / bCaptcha > ใช้ YesCaptcha จดจำโจทย์ภาพตาราง 3×3 ของ AWS WAF CAPTCHA และ bCaptcha (AwsClassification, bCaptchaClassification) โดยอัปโหลดภาพทั้งภาพและคำถาม แล้วรับช่องที่ต้องคลิกกลับมาแบบซิงโครนัส Source: https://docs.yescaptcha.com/th/tasks/aws-bcaptcha-classification/ · 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/aws-bcaptcha-classification/ `AwsClassification` จดจำโจทย์ภาพตาราง 3×3 ของ AWS WAF CAPTCHA และ `bCaptchaClassification` จดจำโจทย์ภาพตาราง 3×3 ของ bCaptcha: ส่งภาพทั้งภาพและคำถามมา แล้วระบบจะคืนช่องที่ต้องคลิก โดยโปรแกรมของคุณเป็นผู้คลิกในเบราว์เซอร์ ทั้งสองประเภท**ไม่คืนค่า token** ทำงานแบบซิงโครนัส ราคาครั้งละ 8 พอยต์ (≈ $1.20 / 1k) หากไม่ต้องการเขียนโค้ด ใช้ [ส่วนขยายเบราว์เซอร์](https://docs.yescaptcha.com/th/extension.md) ได้ - POST `https://api.yescaptcha.com/createTask` (endpoint ทั่วโลก) - POST `https://cn.yescaptcha.com/createTask` (endpoint จีน) ## ประเภทงานและราคา | ประเภทงาน | ราคา | รูปแบบการคืนผลลัพธ์ | หมายเหตุ | | --- | --- | --- | --- | | `AwsClassification` | $1.20 / 1k; 8 พอยต์/งาน · ¥8 / 1k | แบบซิงโครนัส | | | `bCaptchaClassification` | $1.20 / 1k; 8 พอยต์/งาน · ¥8 / 1k | แบบซิงโครนัส | | ราคาเป็นดอลลาร์สหรัฐเป็นเพียงค่าประมาณที่ US$1 ≈ ¥6.67 งานจะถูกหักเป็นพอยต์ ทั้งสองประเภทใช้พารามิเตอร์และรูปแบบข้อมูลที่คืนกลับเหมือนกัน ให้เลือกตามที่มาของ CAPTCHA: ใช้ `AwsClassification` กับ AWS WAF และใช้ `bCaptchaClassification` กับ bCaptcha ## พารามิเตอร์ของคำขอ | ฟิลด์ | ประเภท | จำเป็น | คำอธิบาย | | --- | --- | --- | --- | | `type` | string | ใช่ | ประเภทงาน ดูค่าที่ใช้ได้ในหัวข้อ "ประเภทงานและราคา" ของหน้านี้ | | `queries` | string | ใช่ | Base64 ของภาพตาราง 3×3 ทั้งภาพ (ภาพเดียว) | | `question` | string | ไม่ | คำถามฉบับเต็มตามที่แสดงบนหน้าเว็บ เช่น `Select all hats` ภาษาอื่นจะถูกแปลให้อัตโนมัติ | `queries` ใส่ภาพตาราง 3×3 **ทั้งภาพ** (หนึ่งภาพ ไม่ใช่ 9 ภาพย่อย) ส่วน `question` ให้นำประโยคคำถามทั้งประโยคจากหน้าเว็บมาใส่ได้เลย ใช้ได้ทั้งภาษาจีนและภาษาอังกฤษ ส่วนภาษาอื่นระบบจะแปลให้อัตโนมัติ ## ตัวอย่างคำขอ POST https://api.yescaptcha.com/createTask ```json { "clientKey": "YOUR_CLIENT_KEY", "task": { "type": "AwsClassification", "queries": "BASE64_IMAGE", "question": "Select all hats" } } ``` ## ผลลัพธ์ที่ได้ ```json { "errorId": 0, "status": "ready", "solution": { "label": "Select All Hats", "objects": [false, true, false, false, true, true, true, true, false], "top_k": [1, 4, 5, 6, 7], "confidences": [0.0, 1.0, 0.0, 0.255, 1.0, 1.0, 0.9637, 0.9999, 0.0] }, "taskId": "2053f690-3c3b-11f0-8ffb-d2c180657082" } ``` | ฟิลด์ | ประเภท | คำอธิบาย | | --- | --- | --- | | `label` | string | เป้าหมายของคำถามที่จดจำได้ | | `objects` | array | แต่ละช่องจากทั้ง 9 ช่องเป็นเป้าหมายหรือไม่ (true / false) เรียงจากซ้ายไปขวาและจากบนลงล่าง | | `top_k` | array | ลำดับ (เริ่มจาก 0) ของภาพที่เป็นเป้าหมาย มีความหมายเหมือน `objects` เลือกใช้อย่างใดอย่างหนึ่งก็ได้ | | `confidences` | array | ค่าความเชื่อมั่นของแต่ละผลลัพธ์ | ทั้ง 9 ช่องมีหมายเลข 0 ถึง 8 เรียงตามตาราง 3×3 จากซ้ายไปขวาและจากบนลงล่าง `objects` และ `top_k` มีความหมายเหมือนกัน เลือกใช้อย่างใดอย่างหนึ่ง: คลิกช่องที่ `objects` เป็น `true` หรือคลิกช่องตามหมายเลขใน `top_k` ## รายงานและคืนพอยต์หลังรายงาน หากคลิกแล้วการตรวจสอบไม่ผ่าน สามารถรายงานด้วย [report](https://docs.yescaptcha.com/th/api/report.md) ภายใน 1 ชั่วโมง และจะสรุปการคืนพอยต์หลังรายงานประมาณ 24 ชั่วโมงต่อมา ดูกฎได้ที่ [การคิดค่าบริการและการคืนพอยต์](https://docs.yescaptcha.com/th/getting-started/billing.md) --- # YesCaptcha Assistant > YesCaptcha Assistant (ส่วนขยายเบราว์เซอร์) สำหรับ Chrome และ Firefox ที่จดจำและคลิก CAPTCHA ของ reCAPTCHA, hCaptcha, FunCaptcha, AWS WAF และอื่น ๆ โดยอัตโนมัติ ส่วนขยายใช้ฟรี หักพอยต์ตาม API ที่ใช้จดจำ มีลิงก์สโตร์ ดาวน์โหลดแพ็กเกจ และวิดีโอติดตั้งบน Chrome, BitBrowser และ Kiwi Browser Source: https://docs.yescaptcha.com/th/extension/ · Last verified: 2026-10-24 > This page was machine-translated from the Chinese version. If anything differs, the Chinese version prevails: https://docs.yescaptcha.com/zh/extension/ YesCaptcha Assistant เป็นส่วนขยายเบราว์เซอร์สำหรับ Chrome และ Firefox เมื่อเปิดหน้าเว็บที่มี CAPTCHA ส่วนขยายจะส่งภาพ CAPTCHA ไปให้ YesCaptcha จดจำ แล้วคลิกให้อัตโนมัติ โดยไม่ต้องเขียนโค้ด ส่วนขยายใช้ฟรี ขณะจดจำจะหักพอยต์ตาม API ที่ใช้ โดยใช้บัญชีและยอดคงเหลือเดียวกับ API ## ทำอะไรได้บ้าง - จดจำและคลิกโจทย์ภาพของ reCAPTCHA v2, hCaptcha, FunCaptcha, AWS WAF และ bCaptcha โดยอัตโนมัติ - CAPTCHA แบบตัวอักษรทั่วไป: คลิกขวาที่ภาพแล้วเลือก “ทำเครื่องหมายเป็น CAPTCHA” คลิกขวาที่ช่องกรอกแล้วเลือก “กรอก CAPTCHA” ส่วนขยายจะจดจำและกรอกให้ - เปิดหรือปิด CAPTCHA แต่ละประเภทได้ในการตั้งค่า รวมถึงปรับความเร็วในการคลิก การลองใหม่เมื่อล้มเหลว ฯลฯ > **หมายเหตุ:** ไม่ใช่ทุกเว็บไซต์ที่ผ่านได้ แนะนำให้ทดลองใช้ก่อน ## การติดตั้ง **ติดตั้งจากสโตร์ (แนะนำ อัปเดตอัตโนมัติ):** - Chrome (และเบราว์เซอร์ที่ใช้ Chromium เช่น Edge): [Chrome Web Store](https://chromewebstore.google.com/detail/yescaptcha-assistant/jiofmdifioeejeilfkpegipdjiopiekl) - Firefox: [Firefox Add-ons](https://addons.mozilla.org/firefox/addon/yescaptcha-assistant/) เปิดหน้าส่วนขยายใน Chrome Web Store คลิก “เพิ่มลงใน Chrome” แล้วคลิกไอคอนส่วนขยายบนแถบเครื่องมือเพื่อกรอก `clientKey`: เบราว์เซอร์ของคุณไม่สามารถเล่นวิดีโอนี้ได้ ดาวน์โหลดเพื่อดูแทน: [วิดีโอ: ติดตั้งจาก Chrome Web Store (34 วินาที)](https://docs.yescaptcha.com/videos/extension-chrome-store.mp4) วิดีโอ: ติดตั้งจาก Chrome Web Store (34 วินาที) **หากเปิดสโตร์ไม่ได้ ให้ดาวน์โหลดแพ็กเกจ:** Chrome เวอร์ชัน 1.4.12 ขนาด 1.1 MB อัปเดตเมื่อ 2026-11-10 [ดาวน์โหลด](https://api.yescaptcha.com/extension/chrome/latest)[Chrome Web Store](https://chromewebstore.google.com/detail/yescaptcha-assistant/jiofmdifioeejeilfkpegipdjiopiekl) Firefox เวอร์ชัน 0.4.6 ขนาด 0.9 MB อัปเดตเมื่อ 2026-10-31 [ดาวน์โหลด](https://api.yescaptcha.com/extension/firefox/latest)[Firefox Add-ons](https://addons.mozilla.org/firefox/addon/yescaptcha-assistant/) เวอร์ชันในสโตร์ของ Firefox อาจเก่ากว่าแพ็กเกจที่นี่ หากต้องการเวอร์ชันล่าสุดให้ใช้แพ็กเกจ ### ติดตั้ง Chrome ด้วยแพ็กเกจ 1. ดาวน์โหลดไฟล์ zip แล้วแตกไฟล์ไปยังโฟลเดอร์ที่ไม่ย้ายที่ 2. เปิด `chrome://extensions` ในแถบที่อยู่ แล้วเปิด “โหมดนักพัฒนาซอฟต์แวร์” ที่มุมขวาบน 3. คลิก “โหลดส่วนขยายที่ไม่ได้แพ็ก” แล้วเลือกโฟลเดอร์ที่เพิ่งแตกไฟล์ 4. คลิกไอคอนส่วนขยายบนแถบเครื่องมือ แล้วกรอก `clientKey` ของคุณ ก่อนโหลด คุณยังเปิด `config.js` ที่แตกไฟล์ออกมาด้วยโปรแกรมแก้ไขข้อความ กรอก `clientKey` ของคุณในเครื่องหมายคำพูดของ `clientKey: ''` แล้วบันทึก เมื่อติดตั้งเสร็จจะไม่ต้องกรอกอีก วิธีนี้สะดวกกว่าเมื่อติดตั้งส่วนขยายในหลายสภาพแวดล้อมเบราว์เซอร์ เบราว์เซอร์ของคุณไม่สามารถเล่นวิดีโอนี้ได้ ดาวน์โหลดเพื่อดูแทน: [วิดีโอ: ติดตั้ง Chrome ด้วยแพ็กเกจ โดยกรอก clientKey ใน config.js ก่อน (44 วินาที วิดีโอเป็นเวอร์ชันเก่า ขั้นตอนเหมือนกัน)](https://docs.yescaptcha.com/videos/extension-chrome-zip.mp4) วิดีโอ: ติดตั้ง Chrome ด้วยแพ็กเกจ โดยกรอก clientKey ใน config.js ก่อน (44 วินาที วิดีโอเป็นเวอร์ชันเก่า ขั้นตอนเหมือนกัน) > **คำเตือน:** หลังจากนั้นอย่าลบหรือย้ายโฟลเดอร์ที่แตกไฟล์ มิฉะนั้นเบราว์เซอร์จะโหลดส่วนขยายไม่ได้ ส่วนขยายที่ติดตั้งด้วยแพ็กเกจจะไม่อัปเดตอัตโนมัติ เมื่อมีเวอร์ชันใหม่ต้องดาวน์โหลดใหม่ ### ติดตั้ง Firefox ด้วยแพ็กเกจ 1. ดาวน์โหลดไฟล์ `.xpi` 2. เปิด `about:addons` ในแถบที่อยู่ คลิกไอคอนเฟือง เลือก “ติดตั้งส่วนเสริมจากไฟล์” แล้วเลือกไฟล์ที่ดาวน์โหลด 3. คลิกไอคอนส่วนขยายบนแถบเครื่องมือ แล้วกรอก `clientKey` ของคุณ ## ติดตั้งใน BitBrowser เบราว์เซอร์ anti-detect (anti-detect browser) อย่าง BitBrowser ใช้แกนเดียวกับ Chrome ต้องเพิ่มส่วนขยายใน “Extension Center (扩展中心)” แล้วเลือกให้ใช้กับทุกหน้าต่างหรือเฉพาะหน้าต่างที่กำหนดได้ ขั้นตอนและวิดีโอด้านล่างบันทึกด้วย BitBrowser 6.0 หน้าตาในเวอร์ชันใหม่อาจต่างออกไปเล็กน้อย ### เพิ่มจาก Chrome Web Store 1. ใน BitBrowser คลิก “Extension Center (扩展中心)” ที่แถบด้านซ้าย คลิก “เพิ่มส่วนขยายกำหนดเอง (添加自定义扩展)” แล้วเลือก “เพิ่มส่วนขยายจาก Chrome Web Store (添加 Chrome 商店扩展)” 2. วางที่อยู่ของส่วนขยายใน Chrome Web Store `https://chromewebstore.google.com/detail/yescaptcha-assistant/jiofmdifioeejeilfkpegipdjiopiekl` ลงในช่อง “URL รายละเอียดส่วนขยาย (扩展详情 URL)” แล้วคลิกปุ่มด้านขวาของช่องเพื่อระบุส่วนขยาย เมื่อระบุ “YesCaptcha Assistant” ได้แล้วคลิก “ตกลง (确定)” 3. หลังเพิ่มแล้ว คลิก “การตั้งค่า (设置)” บนการ์ดของ YesCaptcha Assistant ใน “ตั้งค่าวิธีเปิดใช้งานส่วนขยาย (设置扩展开启方式)” เลือก “ทุกหน้าต่าง (所有窗口)” หรือเลือก “หน้าต่างที่กำหนด (指定窗口)” แล้วติ๊กหน้าต่างที่ต้องการใช้ จากนั้นคลิก “ตกลง (确定)” 4. เปิดหน้าต่างเบราว์เซอร์ คลิกไอคอนส่วนขยายบนแถบเครื่องมือ หา YesCaptcha Assistant แล้วกรอก `clientKey` ของคุณ เมื่อเห็นยอดคงเหลือแสดงว่าตั้งค่าเรียบร้อย เบราว์เซอร์ของคุณไม่สามารถเล่นวิดีโอนี้ได้ ดาวน์โหลดเพื่อดูแทน: [วิดีโอ: เพิ่มส่วนขยายจาก Chrome Web Store ใน BitBrowser (30 วินาที)](https://docs.yescaptcha.com/videos/extension-bit-store.mp4) วิดีโอ: เพิ่มส่วนขยายจาก Chrome Web Store ใน BitBrowser (30 วินาที) ### เพิ่มด้วยแพ็กเกจ 1. ดาวน์โหลดแพ็กเกจ Chrome ด้านบน แล้วแตกไฟล์ไปยังโฟลเดอร์ที่ไม่ย้ายที่ 2. (ไม่บังคับ) เปิด `config.js` ในโฟลเดอร์ด้วยโปรแกรมแก้ไขข้อความ กรอก `clientKey` ของคุณในเครื่องหมายคำพูดของ `clientKey: ''` แล้วบันทึก เมื่อติดตั้งในแต่ละหน้าต่างแล้วจะไม่ต้องกรอกอีก 3. ใน “Extension Center (扩展中心)” คลิก “เพิ่มส่วนขยายกำหนดเอง (添加自定义扩展)” เลือก “เพิ่มส่วนขยายในเครื่อง (添加本地扩展)” แล้วเลือกโฟลเดอร์ที่แตกไฟล์ใน “อัปโหลดส่วนขยาย (上传扩展)” (ชั้นที่มี `manifest.json` อยู่ข้างใน) คลิก “ตกลง (确定)” 4. หลังอัปโหลดสำเร็จ คลิก “การตั้งค่า (设置)” บนการ์ดของ YesCaptcha Assistant เลือกวิธีเปิดใช้งาน (ทุกหน้าต่างหรือหน้าต่างที่กำหนด) แล้วคลิก “ตกลง (确定)” 5. เปิดหน้าต่างเบราว์เซอร์ คลิก YesCaptcha Assistant ในไอคอนส่วนขยาย เมื่อเห็น ClientKey และยอดคงเหลือแสดงว่าตั้งค่าเรียบร้อย เบราว์เซอร์ของคุณไม่สามารถเล่นวิดีโอนี้ได้ ดาวน์โหลดเพื่อดูแทน: [วิดีโอ: เพิ่มด้วยแพ็กเกจใน BitBrowser (46 วินาที วิดีโอเป็นเวอร์ชันเก่า ขั้นตอนเหมือนกัน)](https://docs.yescaptcha.com/videos/extension-bit-zip.mp4) วิดีโอ: เพิ่มด้วยแพ็กเกจใน BitBrowser (46 วินาที วิดีโอเป็นเวอร์ชันเก่า ขั้นตอนเหมือนกัน) ## ใช้บนมือถือ Android (Kiwi Browser) > **คำเตือน:** Kiwi Browser หยุดการดูแลตั้งแต่เดือนมกราคม 2025 และถูกถอดออกจาก Google Play จึงไม่มีการอัปเดตและแพตช์ความปลอดภัยอีก ขั้นตอนและวิดีโอด้านล่างมาจากเอกสารเก่า ไว้เป็นข้อมูลอ้างอิงสำหรับผู้ที่ยังใช้ Kiwi Browser ส่วนขยายเวอร์ชันปัจจุบันยังไม่ได้ทดสอบซ้ำบน Kiwi Browser 1. ดาวน์โหลดแพ็กเกจ Chrome (`.zip`) ลงมือถือ ไม่ต้องแตกไฟล์ หากต้องการกรอก ClientKey ไว้ล่วงหน้า ให้แตกไฟล์บนคอมพิวเตอร์ แก้ `config.js` แล้วบีบอัดเป็น zip อีกครั้ง (`manifest.json` ต้องอยู่ชั้นนอกสุดของไฟล์บีบอัด) 2. ใน Kiwi Browser แตะเมนูที่มุมขวาบน แล้วเลือก “Extensions” (ส่วนขยาย) 3. เปิด “Developer mode” (โหมดนักพัฒนาซอฟต์แวร์) แตะ “+ (from .zip/.crx/.user.js)” แล้วเลือกแพ็กเกจที่ดาวน์โหลด 4. แตะเมนูที่มุมขวาบนอีกครั้ง YesCaptcha Assistant จะปรากฏที่ด้านล่างสุด แตะเข้าไปแล้วกรอก `clientKey` ของคุณ เมื่อเห็นยอดคงเหลือแสดงว่าตั้งค่าเรียบร้อย เบราว์เซอร์ของคุณไม่สามารถเล่นวิดีโอนี้ได้ ดาวน์โหลดเพื่อดูแทน: [วิดีโอ: ติดตั้งใน Kiwi Browser (16 วินาที วิดีโอเป็นเวอร์ชันเก่า ขั้นตอนเหมือนกัน)](https://docs.yescaptcha.com/videos/extension-kiwi.mp4) วิดีโอ: ติดตั้งใน Kiwi Browser (16 วินาที วิดีโอเป็นเวอร์ชันเก่า ขั้นตอนเหมือนกัน) ## การตั้งค่า 1. สมัครสมาชิกและเติมเงินที่ [yescaptcha.com](https://yescaptcha.com/) แล้วคัดลอก `clientKey` จากแดชบอร์ด ดู [เริ่มต้นใช้งาน](https://docs.yescaptcha.com/th/getting-started/quickstart.md) 2. คลิกไอคอนส่วนขยาย แล้วกรอก ClientKey ในแผงการตั้งค่า เมื่อเห็นยอดคงเหลือแสดงว่าตั้งค่าเรียบร้อย 3. เปิดหน้าเว็บที่มี CAPTCHA ส่วนขยายจะเริ่มจดจำโดยอัตโนมัติ ## ค่าใช้จ่าย ส่วนขยายใช้ฟรี ขณะจดจำจะหักพอยต์ตามประเภทงานที่ใช้ เช่น โจทย์ภาพของ reCAPTCHA คิดราคาตาม [การจดจำภาพ reCAPTCHA v2](https://docs.yescaptcha.com/th/tasks/recaptcha-classification.md) ส่วน hCaptcha คิดราคาตาม [การจดจำภาพ hCaptcha](https://docs.yescaptcha.com/th/tasks/hcaptcha-classification.md) หากคลิกผิดสามารถขอคืนพอยต์ได้ ดู [การคิดราคาและการคืนพอยต์](https://docs.yescaptcha.com/th/getting-started/billing.md) --- # การระบุประเภท CAPTCHA > วิธีดูว่าหน้าเว็บใช้ CAPTCHA ชนิดใด ได้แก่ reCAPTCHA v2, v2 แบบ invisible, v3, Enterprise, hCaptcha, ความแตกต่างระหว่าง Cloudflare Turnstile กับหน้าตรวจสอบของ Cloudflare และควรใช้ประเภทงานใดของ YesCaptcha Source: https://docs.yescaptcha.com/th/guides/identify-captcha/ · 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/guides/identify-captcha/ ขั้นแรกของการเลือกประเภทงานที่ถูกต้องคือการระบุ CAPTCHA ให้ได้ วิธีที่เชื่อถือได้ที่สุดคือเปิดเครื่องมือสำหรับนักพัฒนาของเบราว์เซอร์ (F12) แล้วดูในแผง Network ว่าหน้าเว็บโหลดสคริปต์ของ CAPTCHA ใด นอกจากนี้ยังดูจากหน้าตาได้ด้วย ## ดูจากหน้าตา ด้านล่างคือหน้าตาของ CAPTCHA แต่ละชนิดบนหน้าเว็บ (ภาพเคลื่อนไหวประกอบ ไม่ใช่ภาพหน้าจอ) คลิกการ์ดเพื่อไปยังหน้าของประเภทงานนั้น หากดูจากหน้าตาแล้วแยกไม่ออก ให้ใช้ตารางสรุปด้านล่างและแผง Network ยืนยัน - [reCAPTCHA v2: ช่องทำเครื่องหมาย · แบบซ่อน](https://docs.yescaptcha.com/th/tasks/recaptcha-v2.md) - [reCAPTCHA v3](https://docs.yescaptcha.com/th/tasks/recaptcha-v3.md) - [การจดจำภาพ reCAPTCHA v2: ตาราง 3×3 · ตาราง 4×4 · ภาพเดี่ยว 1×1](https://docs.yescaptcha.com/th/tasks/recaptcha-classification.md) - [hCaptcha](https://docs.yescaptcha.com/th/tasks/hcaptcha.md) - [การจดจำภาพ hCaptcha: ตารางภาพ · คลิกที่จุด · ลากและวาง · แบบแอนิเมชัน](https://docs.yescaptcha.com/th/tasks/hcaptcha-classification.md) - [Cloudflare Turnstile: อัตโนมัติ · ช่องทำเครื่องหมาย](https://docs.yescaptcha.com/th/tasks/turnstile.md) - [Cloudflare challenge page (5 วินาที): อัตโนมัติ · ช่องทำเครื่องหมาย](https://docs.yescaptcha.com/th/tasks/cloudflare-challenge.md) - [การจดจำภาพ FunCaptcha: ลูกศร · ตาราง 6 ภาพ](https://docs.yescaptcha.com/th/tasks/funcaptcha-classification.md) - [การจดจำภาพ AWS WAF / bCaptcha: AWS WAF · bCaptcha](https://docs.yescaptcha.com/th/tasks/aws-bcaptcha-classification.md) - [การอ่านตัวอักษรและตัวเลขจากภาพ: มีจุดรบกวน · เส้นรบกวน · โจทย์คณิตศาสตร์](https://docs.yescaptcha.com/th/tasks/image-to-text.md) ## ตารางสรุป | สิ่งที่คุณเห็น | คืออะไร | ใช้ประเภทงานใด | | --- | --- | --- | | ช่องทำเครื่องหมาย “I’m not a robot” (ยืนยันว่าคุณเป็นมนุษย์) | reCAPTCHA v2 | [reCAPTCHA v2](https://docs.yescaptcha.com/th/tasks/recaptcha-v2.md) | | ไม่มีช่องทำเครื่องหมาย โจทย์รูปภาพจะแสดงหลังกดส่งเท่านั้น และมีโลโก้ reCAPTCHA เล็กๆ ที่มุมขวาล่าง | reCAPTCHA v2 แบบ invisible (หรือ v3) | ดูหัวข้อ “เวอร์ชันของ reCAPTCHA” ด้านล่าง | | ไม่มีการโต้ตอบใดๆ มีเพียงโลโก้ reCAPTCHA ที่มุมขวาล่าง | reCAPTCHA v3 | [reCAPTCHA v3](https://docs.yescaptcha.com/th/tasks/recaptcha-v3.md) | | ช่องทำเครื่องหมาย “I am human” และโจทย์รูปภาพที่ระบุว่า hCaptcha | hCaptcha | [hCaptcha](https://docs.yescaptcha.com/th/tasks/hcaptcha.md) | | กล่องตรวจสอบของ Cloudflare ฝังอยู่ในฟอร์ม และหน้าไม่เปลี่ยนหลังทำเครื่องหมาย | Cloudflare Turnstile | [Turnstile](https://docs.yescaptcha.com/th/tasks/turnstile.md) | | ทั้งหน้าแสดงข้อความ “Just a moment…” / “กำลังตรวจสอบการเชื่อมต่อของคุณ” แล้วเปลี่ยนหน้าอัตโนมัติ | หน้าตรวจสอบของ Cloudflare | [หน้าตรวจสอบของ Cloudflare](https://docs.yescaptcha.com/th/tasks/cloudflare-challenge.md) | | จิ๊กซอว์หรือโจทย์เลือกภาพของ Arkose Labs (เช่น “เลือกภาพที่หันขึ้นถูกทาง”) | FunCaptcha | [การจดจำภาพ FunCaptcha](https://docs.yescaptcha.com/th/tasks/funcaptcha-classification.md) | | รูปภาพที่มีตัวอักษรและตัวเลขบิดเบี้ยว | CAPTCHA แบบตัวอักษร | [การรู้จำตัวอักษรและตัวเลขจากภาพ](https://docs.yescaptcha.com/th/tasks/image-to-text.md) | ## เวอร์ชันของ reCAPTCHA ค้นหา `api.js` หรือ `enterprise.js` ในแผง Network: | สคริปต์ที่โหลด | เวอร์ชัน | | --- | --- | | `recaptcha/api.js` ที่ไม่มีพารามิเตอร์ `render` หรือ `render=explicit` | v2 แบบปกติ | | เหมือนข้างต้น และ URL ของคำขอ `anchor` มี `size=invisible` | v2 แบบ invisible ให้เพิ่ม `"isInvisible": true` ในงาน | | `recaptcha/api.js?render=ไซต์คีย์ของเว็บไซต์` (`render` ไม่ใช่ `explicit`) | v3 แบบปกติ | | `recaptcha/enterprise.js` ที่ไม่มีพารามิเตอร์ `render` หรือ `render=explicit` | v2 Enterprise | | `recaptcha/enterprise.js?render=ไซต์คีย์ของเว็บไซต์` | v3 Enterprise | ตัวอย่าง: ```text https://www.google.com/recaptcha/api.js?onload=onloadcallback&render=explicit → v2 https://www.google.com/recaptcha/api.js?render=6LdyC2cUAAAAACGuDKpXeDorzUDWXmdqeg-xy696 → v3 https://www.google.com/recaptcha/enterprise.js?render=explicit → v2 Enterprise ``` บางครั้ง v2 แบบ invisible จะผ่านได้เฉพาะเมื่อใช้ประเภทงานของ v3 ลองใช้ทั้งสองแบบ คุณยังรันโค้ดด้านล่างในคอนโซล (Console) ได้ โค้ดนี้จะแสดงรายการ reCAPTCHA ทั้งหมดในหน้า พร้อมเวอร์ชัน ไซต์คีย์ URL ของหน้า และฟังก์ชัน callback: find-recaptcha-clients.js ```js // Paste into the browser DevTools console on a page with reCAPTCHA, then run findRecaptchaClients(). // Lists every reCAPTCHA on the page: version (V2/V3), sitekey, page URL and the callback function. function findRecaptchaClients() { if (typeof ___grecaptcha_cfg === 'undefined') return []; return Object.entries(___grecaptcha_cfg.clients).map(([cid, client]) => { const data = { id: cid, version: cid >= 10000 ? 'V3' : 'V2' }; const objects = Object.entries(client).filter(([, value]) => value && typeof value === 'object'); objects.forEach(([toplevelKey, toplevel]) => { const found = Object.entries(toplevel).find( ([, value]) => value && typeof value === 'object' && 'sitekey' in value && 'size' in value, ); if (toplevel instanceof HTMLElement && toplevel.tagName === 'DIV') data.pageurl = toplevel.baseURI; if (found) { const [sublevelKey, sublevel] = found; data.sitekey = sublevel.sitekey; const callbackKey = data.version === 'V2' ? 'callback' : 'promise-callback'; const callback = sublevel[callbackKey]; if (!callback) { data.callback = null; data.function = null; } else { data.function = callback; const keys = [cid, toplevelKey, sublevelKey, callbackKey].map((key) => `['${key}']`).join(''); data.callback = `___grecaptcha_cfg.clients${keys}`; } } }); return data; }); } findRecaptchaClients(); ``` ตัวอย่างผลลัพธ์: ```json [ { "id": "0", "version": "V2", "sitekey": "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-", "function": "onSuccess", "callback": "___grecaptcha_cfg.clients['0']['l']['l']['callback']", "pageurl": "https://www.google.com/recaptcha/api2/demo" } ] ``` ใช้หน้าเดโมอย่างเป็นทางการของ Google เปรียบเทียบได้: v2 แบบปกติ `https://www.google.com/recaptcha/api2/demo` และ v2 แบบ invisible `https://www.google.com/recaptcha/api2/demo?invisible=true` ## Turnstile กับหน้าตรวจสอบของ Cloudflare ทั้งสองอย่างมาจาก Cloudflare แต่ไม่ใช่สิ่งเดียวกัน: - **Turnstile** คือกล่องตรวจสอบที่ฝังอยู่ในฟอร์มของหน้าเว็บ เมื่อตรวจสอบเสร็จจะแสดงเครื่องหมายถูก และหน้าเว็บไม่เปลี่ยน หน้าเว็บจะโหลด `challenges.cloudflare.com/turnstile/v0/api.js` ให้ใช้ [Turnstile](https://docs.yescaptcha.com/th/tasks/turnstile.md) - **หน้าตรวจสอบของ Cloudflare** คือหน้าที่ถูกแทนที่ทั้งหน้าด้วยหน้าตรวจสอบของ Cloudflare ซึ่งแสดงข้อความ “Just a moment…” หรือ “xx.com ต้องตรวจสอบความปลอดภัยของการเชื่อมต่อของคุณก่อน” และอาจมีกล่องตรวจสอบอยู่ด้วย เมื่อผ่านแล้วจะเปลี่ยนไปยังหน้าจริงโดยอัตโนมัติ ในซอร์สโค้ดจะมี `__cf_chl_rt_tk` หรือ `cdn-cgi/challenge-platform` ให้ใช้ [หน้าตรวจสอบของ Cloudflare](https://docs.yescaptcha.com/th/tasks/cloudflare-challenge.md) หากส่งคำขอด้วยโปรแกรมแล้วได้ 403 พร้อมข้อความ “Just a moment…” แต่เปิดด้วยเบราว์เซอร์ได้ตามปกติ มักเป็นเพราะถูกบล็อกจาก TLS fingerprint เท่านั้น ให้เปลี่ยนไปใช้ไลบรารีที่เลียนแบบ TLS fingerprint ของเบราว์เซอร์ได้ (เช่น curl\_cffi) ก็ส่งคำขอได้ โดยไม่ต้องแก้หน้าตรวจสอบ --- # ค้นหาพารามิเตอร์ของ reCAPTCHA > วิธีค้นหา websiteKey (sitekey), websiteURL, pageAction ของ v3 และฟังก์ชัน callback ของ reCAPTCHA จากแผง Network, Sources และ Console ในเครื่องมือสำหรับนักพัฒนา พร้อมสคริปต์ค้นหาอัตโนมัติ Source: https://docs.yescaptcha.com/th/guides/find-recaptcha-parameters/ · 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/guides/find-recaptcha-parameters/ การสร้างงาน reCAPTCHA ต้องใช้ `websiteURL` (ที่อยู่ของหน้าเว็บที่มี CAPTCHA) และ `websiteKey` (คีย์ของเว็บไซต์) ส่วน v3 ต้องใช้ `pageAction` ด้วย หากจำลองการส่งข้อมูลด้วยเครื่องมืออย่าง Selenium คุณต้องทราบฟังก์ชัน callback ด้วย ทั้งหมดนี้หาได้จากเครื่องมือสำหรับนักพัฒนาของเบราว์เซอร์ (F12) ## วิธีที่เร็วที่สุด: สคริปต์ค้นหาอัตโนมัติ เปิดหน้าเว็บที่มี CAPTCHA แล้วกด F12 เพื่อเปิดแผง Console จากนั้นวางและรันสคริปต์นี้: find-recaptcha-clients.js ```js // Paste into the browser DevTools console on a page with reCAPTCHA, then run findRecaptchaClients(). // Lists every reCAPTCHA on the page: version (V2/V3), sitekey, page URL and the callback function. function findRecaptchaClients() { if (typeof ___grecaptcha_cfg === 'undefined') return []; return Object.entries(___grecaptcha_cfg.clients).map(([cid, client]) => { const data = { id: cid, version: cid >= 10000 ? 'V3' : 'V2' }; const objects = Object.entries(client).filter(([, value]) => value && typeof value === 'object'); objects.forEach(([toplevelKey, toplevel]) => { const found = Object.entries(toplevel).find( ([, value]) => value && typeof value === 'object' && 'sitekey' in value && 'size' in value, ); if (toplevel instanceof HTMLElement && toplevel.tagName === 'DIV') data.pageurl = toplevel.baseURI; if (found) { const [sublevelKey, sublevel] = found; data.sitekey = sublevel.sitekey; const callbackKey = data.version === 'V2' ? 'callback' : 'promise-callback'; const callback = sublevel[callbackKey]; if (!callback) { data.callback = null; data.function = null; } else { data.function = callback; const keys = [cid, toplevelKey, sublevelKey, callbackKey].map((key) => `['${key}']`).join(''); data.callback = `___grecaptcha_cfg.clients${keys}`; } } }); return data; }); } findRecaptchaClients(); ``` ในผลลัพธ์ `sitekey` คือ `websiteKey`, `pageurl` คือ `websiteURL`, `version` บอกว่าเป็น v2 หรือ v3 ส่วน `function` และ `callback` คือฟังก์ชัน callback: ```json [ { "id": "0", "version": "V2", "sitekey": "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-", "function": "onSuccess", "callback": "___grecaptcha_cfg.clients['0']['l']['l']['callback']", "pageurl": "https://www.google.com/recaptcha/api2/demo" } ] ``` หากได้อาร์เรย์ว่าง แสดงว่าหน้าเว็บยังไม่ได้โหลด reCAPTCHA ให้รันอีกครั้งหลังจาก CAPTCHA ปรากฏแล้ว ## websiteKey และ websiteURL ในแผง Network ให้ค้นหา `anchor` แล้วหาคำขอที่มีลักษณะดังนี้: ```text https://www.google.com/recaptcha/api2/anchor?ar=1&k=6LfW6wATAAAAAHLqO2pb8bDBahxlMxNdo9g947u9&co=...&hl=en&size=normal ``` - ค่าที่อยู่หลัง `k=` คือ `websiteKey` - `websiteURL` ให้ใส่ที่อยู่เต็มของหน้าเว็บที่มี CAPTCHA (โดยทั่วไปคือ `Referer` ของคำขอนี้) นอกจากนี้ยังค้นหา `data-sitekey` ในซอร์สโค้ดของหน้าเว็บได้ ## pageAction (v3) `pageAction` คือ `action` ที่หน้าเว็บส่งเมื่อเรียก `grecaptcha.execute(คีย์ของเว็บไซต์, {action: '...'})` และต้องตรงกับของหน้าเว็บ **วิธีที่ 1: ค้นหาในซอร์สโค้ด** ในแผง Sources ของเครื่องมือสำหรับนักพัฒนา คลิกขวาแล้วเลือก “Search in all files” สำหรับ v3 ทั่วไปให้ค้นหา `.execute(` ส่วน v3 เวอร์ชัน Enterprise ให้ค้นหา `.enterprise.execute` แล้วดู `action` ที่ตามมา: ```js grecaptcha.ready(function () { grecaptcha.execute('6LdpS-gUAAAAAL3Qr2yP7rkrQjkKBVvEY_48JS5l', { action: 'login' }).then(function (token) { // ... }); }); ``` ในตัวอย่างนี้ `pageAction` คือ `login` **วิธีที่ 2: breakpoint** เมื่อโค้ดถูก obfuscate จนค้นหาไม่เจอ ให้รัน `debug(grecaptcha.execute)` ใน Console (เวอร์ชัน Enterprise ใช้ `debug(grecaptcha.enterprise.execute)`) แล้วทำสิ่งที่ทำให้เกิดการตรวจสอบบนหน้าเว็บ เช่น คลิกเข้าสู่ระบบ เมื่อโปรแกรมดีบักหยุดทำงาน ให้ดูค่าของ `action` ในส่วน Scope ทางด้านขวา เว็บไซต์อาจใช้ `action` ต่างกันในแต่ละขั้นตอน (เช่น ตอนสมัครสมาชิกใช้ `signup/submit_email` ก่อน แล้วจึงใช้ `signup/success`) ให้ใช้ค่าของขั้นตอนที่คุณต้องการผ่าน กด F8 เพื่อทำงานต่อ จะเห็น `action` ถัดไป ## ฟังก์ชัน callback เมื่อใช้เครื่องมืออย่าง Selenium ใส่ token ในเบราว์เซอร์ หลังใส่เสร็จต้องเรียกฟังก์ชัน callback ของหน้าเว็บ เพื่อแจ้งให้หน้าเว็บทราบว่าการตรวจสอบเสร็จสิ้นแล้ว: - ค้นหา `data-callback` ในแผง Elements ค่าของมันคือชื่อฟังก์ชัน callback เช่น `data-callback="onSuccess"` - หรือค้นหา `grecaptcha.render` แล้วดู `callback` ในพารามิเตอร์ - หรือดู `___grecaptcha_cfg.clients` ใน Console หรือใช้สคริปต์ค้นหาอัตโนมัติข้างต้น วิธีเรียก: ```python driver.execute_script("onSuccess(arguments[0])", g_recaptcha_response) ``` บางหน้าเว็บไม่มีฟังก์ชัน callback ให้ใส่ token ลงในกล่องข้อความ `g-recaptcha-response` แล้วส่งฟอร์มได้เลย ดูขั้นตอนทั้งหมดที่ [ใช้ token ผ่าน reCAPTCHA](https://docs.yescaptcha.com/th/guides/submit-recaptcha-token.md) --- # ค้นหาพารามิเตอร์ของ hCaptcha > วิธีค้นหา websiteKey (sitekey), websiteURL และ rqdata ของเวอร์ชัน Enterprise ของ hCaptcha ทำได้โดยค้นหา data-sitekey ในซอร์สของหน้าเว็บ หรือหาคำขอ checksiteconfig และ getcaptcha ในแท็บ Network Source: https://docs.yescaptcha.com/th/guides/find-hcaptcha-parameters/ · 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/guides/find-hcaptcha-parameters/ การสร้างงาน [hCaptcha](https://docs.yescaptcha.com/th/tasks/hcaptcha.md) ต้องใช้ `websiteURL` (ที่อยู่ของหน้าเว็บที่แสดง CAPTCHA) และ `websiteKey` (คีย์ของเว็บไซต์ในรูปแบบ UUID) ส่วนเวอร์ชัน Enterprise บางครั้งต้องใช้ `rqdata` ด้วย ทั้งหมดนี้หาได้จากเครื่องมือสำหรับนักพัฒนาของเบราว์เซอร์ (F12) ## websiteKey **วิธีที่ 1: ค้นหาในซอร์สของหน้าเว็บ** ในแผง Elements กด Ctrl+F (บน Mac กด Cmd+F) แล้วค้นหา `data-sitekey`: ```html
``` ค่าของ `data-sitekey` คือ `websiteKey` **วิธีที่ 2: ดูคำขอเครือข่าย** ในแผง Network ค้นหา `hcaptcha` แล้วหาคำขอ `checksiteconfig` ค่าที่อยู่หลัง `sitekey=` ในที่อยู่คือ `websiteKey`: ```text https://api.hcaptcha.com/checksiteconfig?v=...&host=example.com&sitekey=51829642-2cda-4b09-896c-594f89d700cc&sc=1&swa=1 ``` ## websiteURL ใส่ที่อยู่แบบเต็มของหน้าเว็บที่แสดง CAPTCHA **ไม่ใช่** `hcaptcha.com` ค่า `host=` ในคำขอด้านบนคือโดเมนของหน้าเว็บนั้น ## rqdata (เวอร์ชัน Enterprise) บางเว็บไซต์ใช้ hCaptcha เวอร์ชัน Enterprise โดยเว็บไซต์จะส่ง `rqdata` มาให้ทุกครั้งที่โหลด CAPTCHA หากไม่ส่งค่านี้จะไม่ผ่านการตรวจสอบ ค่านี้มักอยู่ในการตอบกลับจาก API ของเว็บไซต์เอง (เช่น `captcha_rqdata` ที่ API เข้าสู่ระบบคืนมา) หรือถูกส่งเข้าไปตอนเรียก `hcaptcha.render` / `hcaptcha.setData` เมื่อได้ค่าแล้วให้ใส่ในฟิลด์ `rqdata` ของงาน โดยทั่วไป `rqdata` ใช้ได้เพียงครั้งเดียว จึงต้องขอค่าใหม่ทุกครั้ง ## userAgent `userAgent` ต้องใช้ค่าที่ [/useragent](https://docs.yescaptcha.com/th/api/useragent.md) คืนมาเท่านั้น และเมื่อส่ง token ให้ใช้ `userAgent` ที่คืนมาพร้อมผลการจดจำ --- # ค้นหาพารามิเตอร์ของ Turnstile > วิธีค้นหา websiteKey (sitekey ขึ้นต้นด้วย 0x) และ websiteURL ของ Cloudflare Turnstile โดยค้นหา data-sitekey หรือ turnstile.render ในซอร์สของหน้าเว็บ หรือดูคำขอไปยัง challenges.cloudflare.com ใน Network Source: https://docs.yescaptcha.com/th/guides/find-turnstile-parameters/ · Last verified: 2026-10-21 > This page was machine-translated from the Chinese version. If anything differs, the Chinese version prevails: https://docs.yescaptcha.com/zh/guides/find-turnstile-parameters/ การสร้างงาน [Turnstile](https://docs.yescaptcha.com/th/tasks/turnstile.md) ต้องใช้ `websiteURL` (ที่อยู่ของหน้าเว็บที่แสดงกล่องยืนยัน) และ `websiteKey` (site key ของเว็บไซต์ โดยทั่วไปขึ้นต้นด้วย `0x`) ก่อนอื่นให้ตรวจสอบว่าเป็น Turnstile ไม่ใช่หน้าตรวจสอบของ Cloudflare ดู [ระบุประเภท CAPTCHA](https://docs.yescaptcha.com/th/guides/identify-captcha.md) ## websiteKey **วิธีที่ 1: ค้นหาในซอร์สของหน้าเว็บ** ในแผง Elements ของเครื่องมือสำหรับนักพัฒนา (F12) ให้ค้นหา `data-sitekey`: ```html
``` **วิธีที่ 2: ค้นหาในสคริปต์** สำหรับกล่องยืนยันที่เรนเดอร์ด้วย JavaScript ให้คลิกขวาในแผง Sources เลือก “Search in all files” ค้นหา `turnstile.render` แล้วดู `sitekey` ในพารามิเตอร์: ```js turnstile.render('#container', { sitekey: '0x4AAAAAAAxxxxxxxxxxxxxx', callback: onDone }); ``` **วิธีที่ 3: ดูคำขอเครือข่าย** ค้นหา `challenges.cloudflare.com` ในแผง Network ที่อยู่ของ iframe ของกล่องยืนยันจะมี site key ที่ขึ้นต้นด้วย `0x` ## websiteURL ใส่ที่อยู่แบบเต็มของหน้าเว็บที่แสดงกล่องยืนยัน เช่น `https://example.com/login` ## action และ cData (โดยทั่วไปไม่จำเป็น) โดยส่วนใหญ่ไม่จำเป็นต้องใช้ ให้หาก็ต่อเมื่อแน่ใจว่า `websiteKey` และ `websiteURL` ถูกต้องแล้วแต่งานยังไม่ผ่าน โดยดูที่พารามิเตอร์ของ `turnstile.render` หรือที่องค์ประกอบของกล่องยืนยันว่ามี `action` และ `cData` หรือไม่ (บนองค์ประกอบคือ `data-action` และ `data-cdata`): ```js turnstile.render('#container', { sitekey: '0x4AAAAAAAxxxxxxxxxxxxxx', action: 'login', cData: 'c0bd4b36-7419-4e18-83c6-378699f2a9a2' }); ``` หากมี ให้ใส่ `action` ใน `pageAction` และ `cData` ใน `data` เมื่อสร้างงาน ดู [Turnstile](https://docs.yescaptcha.com/th/tasks/turnstile.md) ## ส่ง token เมื่อได้ผลลัพธ์แล้ว ให้ใส่ `token` ลงในฟิลด์ซ่อนที่ชื่อ `cf-turnstile-response` ของฟอร์ม (หากใช้ `turnstile.render` และตั้งค่า `callback` ไว้ ให้เรียกฟังก์ชัน callback นั้นพร้อมส่ง token) แล้วจึงส่งฟอร์ม ใช้ `userAgent` จากผลลัพธ์เป็น User-Agent ของคำขอที่ส่งฟอร์ม --- # ส่ง token ของ reCAPTCHA > วิธีใช้ token ของ reCAPTCHA (gRecaptchaResponse) หลังได้รับมาแล้ว ได้แก่ หลักการทำงาน, ส่งคำขอโดยตรง (ฟิลด์ g-recaptcha-response), กรอกในเบราว์เซอร์แล้วเรียกฟังก์ชัน callback พร้อมตัวอย่าง Python ฉบับเต็มบนหน้าเดโมของ Google Source: https://docs.yescaptcha.com/th/guides/submit-recaptcha-token/ · 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/guides/submit-recaptcha-token/ `gRecaptchaResponse` ที่ YesCaptcha คืนให้ คือผลลัพธ์เดียวกับที่ Google ส่งให้เว็บเพจหลังจากที่คุณทำ CAPTCHA บนหน้าเว็บเสร็จ เมื่อได้รับแล้ว คุณต้อง**ส่งให้เว็บไซต์เป้าหมาย**เหมือนที่เบราว์เซอร์ทำ (ไม่ใช่ส่งให้ Google หรือ YesCaptcha) เว็บไซต์จะนำไปตรวจสอบกับ Google แล้วจึงอนุญาตให้ผ่าน มีสองวิธี คือ ส่งคำขอโดยตรง หรือกรอกลงในหน้าเว็บในเบราว์เซอร์แล้วส่ง ## หลักการทำงาน ขั้นตอนเมื่อเข้าใช้งานตามปกติ: 1. เว็บเพจโหลด reCAPTCHA และผู้ใช้ทำการยืนยันให้เสร็จ; 2. Google ส่ง token ให้เว็บเพจ และเว็บเพจใส่ไว้ในช่องข้อความ `g-recaptcha-response` (หรือส่งให้ฟังก์ชัน callback); 3. ผู้ใช้ส่งฟอร์ม และ token ถูกส่งไปยังเซิร์ฟเวอร์ของเว็บไซต์พร้อมกับฟอร์ม; 4. เซิร์ฟเวอร์ของเว็บไซต์นำ token ไปตรวจสอบกับ Google ถ้าผ่านก็อนุญาตให้เข้า เมื่อใช้ YesCaptcha เราจะทำขั้นตอนที่ 1 และ 2 ให้ คุณสร้างงานด้วย `websiteURL` และ `websiteKey` รับ token แล้วทำต่อจากขั้นตอนที่ 3 > **คำเตือน:** token ใช้ได้ครั้งเดียวและมีอายุประมาณ 120 วินาที แนะนำให้ส่งภายใน 60 วินาทีหลังได้รับ เว็บไซต์จะไม่ยอมรับ token ที่หมดอายุ ## วิธีที่ 1: ส่งคำขอโดยตรง (แนะนำ) 1. ลองทำด้วยมือหนึ่งครั้งในเบราว์เซอร์: กด F12 เพื่อเปิดแผง Network ทำ CAPTCHA ให้เสร็จแล้วส่งฟอร์ม จากนั้นหาคำขอที่ใช้ส่งฟอร์ม 2. ใน Payload (หรือ Form Data) ของคำขอ ให้หาฟิลด์ที่มี token ซึ่งมักชื่อ `g-recaptcha-response` และค่าของ token ขึ้นต้นด้วย `03A` บางเว็บไซต์เปลี่ยนชื่อฟิลด์ เช่น `grecaptcharesponse` หรือ `captcha` 3. ส่งคำขอแบบเดียวกันจากโปรแกรมของคุณ โดยเปลี่ยนค่าของฟิลด์นั้นเป็น token ที่ YesCaptcha คืนให้ ฟิลด์อื่น, Cookie และ header ต้องตรงกับที่เบราว์เซอร์ส่งด้วย เพราะเว็บไซต์มักตรวจสิ่งเหล่านี้พร้อมกัน ตัวอย่างฉบับเต็มบนหน้าเดโมของ Google: ขอ token ก่อน แล้วส่ง token กลับไปยังหน้าเดโมด้วยฟิลด์ `g-recaptcha-response`: recaptcha_requests.py ```python """Solve reCAPTCHA v2 on Google's demo page and submit the token with plain HTTP (no browser). Run: pip install requests export YESCAPTCHA_CLIENT_KEY=your_client_key python recaptcha_requests.py Each run creates one NoCaptchaTaskProxyless task (charged per the price list). """ import os import time import requests CLIENT_KEY = os.environ["YESCAPTCHA_CLIENT_KEY"] API = "https://api.yescaptcha.com" WEBSITE_URL = "https://www.google.com/recaptcha/api2/demo" WEBSITE_KEY = "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-" def call(method, payload): data = requests.post(f"{API}/{method}", json={"clientKey": CLIENT_KEY, **payload}, timeout=30).json() if data.get("errorId"): raise RuntimeError(f"{data.get('errorCode')}: {data.get('errorDescription')}") return data def get_token(): task = {"type": "NoCaptchaTaskProxyless", "websiteURL": WEBSITE_URL, "websiteKey": WEBSITE_KEY} 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"]["gRecaptchaResponse"] raise TimeoutError(task_id) token = get_token() print("token:", token[:40], "...") # Submit the token the same way the browser does: the demo form posts the field # "g-recaptcha-response" back to the page. Check your own site's request in DevTools > Network. page = requests.post(WEBSITE_URL, data={"g-recaptcha-response": token}, timeout=30) print("passed" if "Verification Success" in page.text else "not passed", page.status_code) ``` ## วิธีที่ 2: กรอกในเบราว์เซอร์ (Selenium และเครื่องมืออื่น) เมื่อควบคุมเบราว์เซอร์จริงด้วยเครื่องมือเช่น Selenium หรือ Playwright: 1. อ่านค่า `data-sitekey` จากหน้าเว็บ แล้วใช้ค่านั้นสร้างงานเพื่อรับ token 2. เขียน token ลงในช่องข้อความ `g-recaptcha-response` บนหน้าเว็บ 3. ถ้าหน้าเว็บกำหนดฟังก์ชัน callback ไว้ (`data-callback="..."`) ให้เรียกฟังก์ชันนั้นพร้อมส่ง token บางเว็บไซต์ปุ่มส่งจะกดได้ก็ต่อเมื่อเรียก callback แล้วเท่านั้น 4. ส่งฟอร์ม ```js // Step 2: write the token (run in the page) document.getElementById('g-recaptcha-response').value = 'TOKEN'; // Step 3: call the callback if there is one, e.g. data-callback="onSuccess" onSuccess('TOKEN'); ``` ถ้าหน้าเว็บมี reCAPTCHA หลายตัว id ของช่องข้อความอาจเป็นแบบ `g-recaptcha-response-1` หากหาช่องข้อความนี้ไม่เจอ ให้ทำการยืนยันด้วยมือหนึ่งครั้ง แล้วค้นหา `03A` ใน Elements เพื่อดูว่าผลลัพธ์ถูกเก็บไว้ที่ใด วิธีหาฟังก์ชัน callback ดูได้ที่ [ค้นหาพารามิเตอร์ reCAPTCHA](https://docs.yescaptcha.com/th/guides/find-recaptcha-parameters.md) ตัวอย่างฉบับเต็ม (Selenium 4): recaptcha_selenium.py ```python """Solve reCAPTCHA v2 on Google's demo page in a real browser with Selenium 4: get a token from YesCaptcha, put it into the page, then submit the form. Run: pip install requests selenium export YESCAPTCHA_CLIENT_KEY=your_client_key python recaptcha_selenium.py Each run creates one NoCaptchaTaskProxyless task (charged per the price list). """ import os import time import requests from selenium import webdriver from selenium.webdriver.common.by import By CLIENT_KEY = os.environ["YESCAPTCHA_CLIENT_KEY"] API = "https://api.yescaptcha.com" WEBSITE_URL = "https://www.google.com/recaptcha/api2/demo" def call(method, payload): data = requests.post(f"{API}/{method}", json={"clientKey": CLIENT_KEY, **payload}, timeout=30).json() if data.get("errorId"): raise RuntimeError(f"{data.get('errorCode')}: {data.get('errorDescription')}") return data def get_token(website_url, website_key): task = {"type": "NoCaptchaTaskProxyless", "websiteURL": website_url, "websiteKey": website_key} task_id = call("createTask", {"task": task})["taskId"] for _ in range(36): time.sleep(5) result = call("getTaskResult", {"taskId": task_id}) if result.get("status") == "ready": return result["solution"]["gRecaptchaResponse"] raise TimeoutError(task_id) driver = webdriver.Chrome() # Selenium 4 downloads a matching chromedriver automatically try: driver.get(WEBSITE_URL) site_key = driver.find_element(By.CSS_SELECTOR, "[data-sitekey]").get_attribute("data-sitekey") token = get_token(WEBSITE_URL, site_key) # Put the token where reCAPTCHA keeps it ... driver.execute_script( "document.getElementById('g-recaptcha-response').value = arguments[0];", token ) # ... and, if the page uses a callback (data-callback="..."), call it: callback = driver.find_element(By.CSS_SELECTOR, "[data-sitekey]").get_attribute("data-callback") if callback: driver.execute_script(f"window[{callback!r}](arguments[0]);", token) driver.find_element(By.ID, "recaptcha-demo-submit").click() time.sleep(2) print("passed" if "Verification Success" in driver.page_source else "not passed") finally: driver.quit() ``` ## reCAPTCHA v3 v3 ไม่มีช่องติ๊ก เว็บเพจจะเรียก `grecaptcha.execute(SITE_KEY, {action: '...'})` เมื่อต้องการ token แล้วใส่ token ลงในคำขอของตัวเอง (ชื่อฟิลด์ขึ้นอยู่กับเว็บไซต์ ที่พบบ่อยคือ `g-recaptcha-response`, `token` และ `recaptchaToken`) วิธีทำเหมือนวิธีที่ 1 คือหาคำขอที่มี token ในแผง Network แล้วส่งตามแบบนั้น และตอนสร้างงาน `pageAction` ต้องตรงกับ `action` ของหน้าเว็บ ## ส่งแล้วแต่ยังไม่ผ่าน - token หมดอายุ: ส่งโดยเร็วหลังได้รับ อย่าเกิน 60 วินาที - ส่งผิดฟิลด์ที่เว็บไซต์ตรวจสอบ หรือขาดฟิลด์อื่นหรือ Cookie: เทียบกับคำขอในเบราว์เซอร์ทีละรายการ - เว็บไซต์ตรวจสอบ IP, User-Agent ฯลฯ พร้อมกัน: ใช้ประเภทงานที่มีพร็อกซีในตัว (เช่น `NoCaptchaTask`) และส่งผ่านพร็อกซีตัวเดียวกัน - คะแนน (score) ของ v3 ไม่พอ: ตรวจสอบ `pageAction` หรือเปลี่ยนไปใช้ประเภทงานที่ให้คะแนนสูงคงที่ ดู [reCAPTCHA v3](https://docs.yescaptcha.com/th/tasks/recaptcha-v3.md) - ระบบควบคุมความเสี่ยงของเว็บไซต์ตรวจสัญญาณพฤติกรรมอื่นด้วย ถ้า token ผ่านน้อย ให้เปลี่ยนไปใช้ [การจดจำภาพ](https://docs.yescaptcha.com/th/tasks/recaptcha-classification.md) แล้วคลิกจริงในเบราว์เซอร์ หรือใช้ [ส่วนขยายเบราว์เซอร์](https://docs.yescaptcha.com/th/extension.md) --- # การคลิกภาพ reCAPTCHA v2 ด้วย Selenium > ใช้ Python, Selenium 4 และ ReCaptchaV2Classification เพื่อคลิกโจทย์ภาพของ reCAPTCHA v2 ในเบราว์เซอร์จริง ตั้งแต่เรียกให้ CAPTCHA แสดง อ่านคำถามและภาพ เรียก API คลิกช่อง จนถึงส่งฟอร์ม พร้อมโค้ดตัวอย่างฉบับสมบูรณ์ Source: https://docs.yescaptcha.com/th/guides/recaptcha-click-selenium/ · 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/guides/recaptcha-click-selenium/ บทช่วยสอนนี้ใช้ Selenium 4 เปิดหน้าเดโมของ reCAPTCHA จาก Google แล้วทำโจทย์ภาพให้เสร็จในเบราว์เซอร์จริง โดยอ่านคำถามและภาพ ส่งให้ [reCAPTCHA v2 การจดจำภาพ](https://docs.yescaptcha.com/th/tasks/recaptcha-classification.md) (`ReCaptchaV2Classification`) ตัดสินว่าควรคลิกช่องใดบ้าง แล้วจำลองการคลิก เมื่อเทียบกับวิธีขอ token วิธีนี้ผ่านการตรวจสอบในเบราว์เซอร์จริง เหมาะกับเว็บไซต์ที่ token ผ่านได้ยาก หากไม่ต้องการเขียนโค้ด สามารถใช้ [ส่วนขยายเบราว์เซอร์](https://docs.yescaptcha.com/th/extension.md) ได้เลย เพราะทำงานด้วยการคลิกอัตโนมัติผ่าน API เดียวกัน ## การเตรียมตัว ```bash pip install requests selenium pillow export YESCAPTCHA_CLIENT_KEY=your_client_key ``` ต้องติดตั้ง Chrome โดย Selenium 4 จะดาวน์โหลด chromedriver ที่ตรงกันให้อัตโนมัติ ## ขั้นตอน 1. **คลิกช่องกาเครื่องหมาย** ช่องนี้อยู่ใน iframe ที่มี `title="reCAPTCHA"` ให้สลับเข้าไปก่อน แล้วคลิก `#recaptcha-anchor` 2. **สลับไปยัง iframe ของโจทย์** โจทย์อยู่ใน iframe อีกตัวที่ title มีคำว่า “challenge” 3. **อ่านคำถาม** ข้อความตัวหนาใน `.rc-imageselect-desc-wrapper strong` คือสิ่งที่ต้องหา เช่น “traffic lights” API ต้องใช้ ID ของคำถาม จึงต้องแปลงชื่อเป็น ID (`/m/015qff`) ด้วยตารางเทียบ ดู [ID ของคำถาม](https://docs.yescaptcha.com/th/tasks/recaptcha-classification.md) หน้าจอเบราว์เซอร์ภาษาอังกฤษจะเทียบได้สะดวกที่สุด 4. **ดึงภาพ** ภาพในแต่ละช่องจริง ๆ แล้วเป็นภาพใหญ่ภาพเดียวกัน ให้ดาวน์โหลดจาก `src` ของ `td.rc-imageselect-tile img` สำหรับ 9 ช่อง (3x3) ปรับขนาดเป็น 300×300 และสำหรับ 16 ช่อง (4x4) ปรับเป็น 450×450 แล้วแปลงเป็น Base64 5. **จดจำภาพ** เรียก `createTask` ด้วยประเภทงาน `ReCaptchaV2Classification` และส่ง `image` กับ `question` เพิ่ม `"confidence": 0.5` แล้วภาพ 3x3 จะคืนทุกช่องที่ตรงเงื่อนไขในครั้งเดียว ไม่ต้องจัดการกับภาพเล็กที่โหลดใหม่หลังคลิก 6. **คลิก** `objects` ที่คืนมาคือลำดับของช่อง เริ่มจาก 0 เรียงจากซ้ายไปขวาและบนลงล่าง ให้คลิก `td` ที่ตรงกันตามลำดับ 7. **ยืนยัน** คลิก `#recaptcha-verify-button` หากมีโจทย์รอบใหม่ขึ้นมาอีก ให้กลับไปขั้นตอนที่ 3 เมื่อหน้าต่างโจทย์ปิดไปแสดงว่าผ่านแล้ว 8. **ส่งฟอร์ม** กลับมาที่หน้าหลักแล้วคลิกปุ่มส่ง ## โค้ดฉบับสมบูรณ์ recaptcha_click_selenium.py ```python """Click through a reCAPTCHA v2 image challenge with Selenium 4 and ReCaptchaV2Classification. Flow: open the page -> click the checkbox -> read the target name and the grid image -> ask YesCaptcha which tiles to click -> click them -> press Verify. Repeat if a new challenge appears. Run: pip install requests selenium pillow export YESCAPTCHA_CLIENT_KEY=your_client_key python recaptcha_click_selenium.py Each recognized image is charged (see the price list). reCAPTCHA's page structure can change; adjust the selectors below if a step stops working. """ import base64 import io import os import time import requests from PIL import Image from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.support.wait import WebDriverWait CLIENT_KEY = os.environ["YESCAPTCHA_CLIENT_KEY"] PAGE_URL = "https://www.google.com/recaptcha/api2/demo" # Target names shown in the challenge (English UI) -> question IDs. # Full list: https://docs.yescaptcha.com/en/tasks/recaptcha-classification/ QUESTION_IDS = { "taxis": "/m/0pg52", "bus": "/m/01bjv", "buses": "/m/01bjv", "motorcycles": "/m/04_sv", "tractors": "/m/013xlm", "chimneys": "/m/01jk_4", "crosswalks": "/m/014xcs", "traffic lights": "/m/015qff", "bicycles": "/m/0199g", "parking meters": "/m/015qbp", "cars": "/m/0k4j", "bridges": "/m/015kr", "boats": "/m/019jd", "palm trees": "/m/0cdl1", "mountains or hills": "/m/09d_r", "fire hydrants": "/m/01pns0", "a fire hydrant": "/m/01pns0", "stairs": "/m/01lynh", } def classify(image_b64, question): task = {"type": "ReCaptchaV2Classification", "image": image_b64, "question": question, "confidence": 0.5} data = requests.post( "https://api.yescaptcha.com/createTask", json={"clientKey": CLIENT_KEY, "task": task}, timeout=30, ).json() if data.get("errorId"): raise RuntimeError(f"{data.get('errorCode')}: {data.get('errorDescription')}") return data["solution"] # synchronous: the solution comes back right away def grid_image_b64(url, size): """Download the challenge image and scale it to the standard size (300 for 3x3, 450 for 4x4).""" img = Image.open(io.BytesIO(requests.get(url, timeout=30).content)).convert("RGB") img = img.resize((size, size)) buf = io.BytesIO() img.save(buf, format="JPEG") return base64.b64encode(buf.getvalue()).decode() driver = webdriver.Chrome() wait = WebDriverWait(driver, 15) try: driver.get(PAGE_URL) # 1. Click the checkbox (inside the "reCAPTCHA" iframe) wait.until(EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR, 'iframe[title="reCAPTCHA"]'))) wait.until(EC.element_to_be_clickable((By.ID, "recaptcha-anchor"))).click() driver.switch_to.default_content() # 2. Switch to the challenge iframe and solve rounds until it closes wait.until(EC.frame_to_be_available_and_switch_to_it( (By.XPATH, '//iframe[contains(@title, "challenge")]'))) for _ in range(5): target = wait.until(EC.presence_of_element_located( (By.CSS_SELECTOR, ".rc-imageselect-desc-wrapper strong"))).text.strip().lower() question = QUESTION_IDS.get(target) if not question: print("unsupported target, reloading:", target) driver.find_element(By.ID, "recaptcha-reload-button").click() time.sleep(2) continue tiles = driver.find_elements(By.CSS_SELECTOR, "td.rc-imageselect-tile") size = 450 if len(tiles) == 16 else 300 url = driver.find_element(By.CSS_SELECTOR, "td.rc-imageselect-tile img").get_attribute("src") solution = classify(grid_image_b64(url, size), question) for index in solution.get("objects", []): tiles[index].click() time.sleep(0.3) time.sleep(1) driver.find_element(By.ID, "recaptcha-verify-button").click() time.sleep(3) driver.switch_to.default_content() frame = driver.find_element(By.XPATH, '//iframe[contains(@title, "challenge")]') if not frame.is_displayed(): # challenge closed: passed break driver.switch_to.frame(frame) driver.switch_to.default_content() driver.find_element(By.ID, "recaptcha-demo-submit").click() time.sleep(2) print("passed" if "Verification Success" in driver.page_source else "not passed") finally: driver.quit() ``` ## หมายเหตุ - โครงสร้างหน้าเว็บของ reCAPTCHA มีการอัปเดตอยู่เสมอ หาก selector ในโค้ดใช้ไม่ได้ ให้ปรับตามหน้าเว็บจริง - การจดจำภาพทุกครั้งจะหักพอยต์ (ดูราคาได้ที่ [reCAPTCHA v2 การจดจำภาพ](https://docs.yescaptcha.com/th/tasks/recaptcha-classification.md)) งานที่คลิกแล้วยืนยันไม่ผ่านสามารถ [รายงาน](https://docs.yescaptcha.com/th/api/report.md) ภายใน 1 ชั่วโมงเพื่อขอคืนพอยต์หลังรายงานได้ - หากพบคำถามที่ไม่มีในตารางเทียบ ให้คลิกปุ่มรีเฟรชเพื่อเปลี่ยนโจทย์ หรือติดต่อฝ่ายสนับสนุนเพื่อขอให้เพิ่มการรองรับ --- # การคลิกภาพ hCaptcha อัตโนมัติด้วย Selenium > ใช้ Python, Selenium 4 และ HCaptchaClassification ทำ hCaptcha แบบภาพตาราง 3×3 ให้เสร็จในเบราว์เซอร์จริง ตั้งแต่คลิกช่องทำเครื่องหมาย อ่านคำถามและภาพทั้ง 9 ภาพ เรียก API คลิก และส่งคำตอบ พร้อมโค้ดตัวอย่างฉบับสมบูรณ์ Source: https://docs.yescaptcha.com/th/guides/hcaptcha-click-selenium/ · 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/guides/hcaptcha-click-selenium/ บทความนี้ใช้ Selenium 4 เปิดหน้าเดโมของ hCaptcha แล้วทำโจทย์ภาพตาราง 3×3 ในเบราว์เซอร์จริง โดยอ่านคำถามและภาพทั้ง 9 ภาพ ส่งให้ [การจดจำภาพ hCaptcha](https://docs.yescaptcha.com/th/tasks/hcaptcha-classification.md) (`HCaptchaClassification`) ตรวจว่าภาพไหนเป็นเป้าหมาย แล้วจำลองการคลิก hCaptcha ยังมีโจทย์แบบ “คลิกตำแหน่งที่กำหนด” และ “ลาก” ซึ่งคืนค่าเป็นพิกัดแทนที่จะเป็นช่อง ดูวิธีจัดการได้ที่ [การจดจำภาพ hCaptcha](https://docs.yescaptcha.com/th/tasks/hcaptcha-classification.md) หากไม่ต้องการเขียนโค้ด ใช้ [ส่วนขยายเบราว์เซอร์](https://docs.yescaptcha.com/th/extension.md) ได้เลย ซึ่งรองรับโจทย์เหล่านี้ทั้งหมด ## การเตรียมตัว ```bash pip install requests selenium export YESCAPTCHA_CLIENT_KEY=your_client_key ``` ## ขั้นตอน 1. **คลิกช่องทำเครื่องหมาย** ช่องนี้อยู่ใน iframe ของ hCaptcha ที่ URL มี `frame=checkbox` ให้สลับเข้าไปแล้วคลิก `#checkbox` 2. **สลับไปยัง iframe ของโจทย์** โจทย์อยู่ใน iframe ที่ URL มี `frame=challenge` 3. **อ่านคำถาม** ข้อความใน `.prompt-text` คือคำถาม ให้ส่งไปยัง API ตามต้นฉบับ (แนะนำให้เปลี่ยนภาษาของ hCaptcha เป็นจีนตัวย่อหรืออังกฤษ) หากมีภาพตัวอย่างขนาดเล็กอยู่ข้างคำถาม ให้ใส่ภาพนั้นใน `anchors` ด้วย 4. **ดึงภาพ** พื้นหลังของ `.task-image .image` ในแต่ละช่องคือภาพหนึ่งภาพ ให้ดาวน์โหลดตามลำดับ แปลงเป็น Base64 แล้วสร้างรายการ `queries` 5. **จดจำภาพ** เรียก `createTask` ด้วยประเภทงาน `HCaptchaClassification` ค่า `objects` ที่ได้จะตรงกับแต่ละช่องตามลำดับ ช่องที่เป็น `true` คือเป้าหมาย 6. **คลิกและส่งคำตอบ** คลิกช่องที่เป็นเป้าหมายแล้วกดปุ่มส่ง อาจมีโจทย์ตามมาอีกหลายรอบ ให้ทำซ้ำขั้นตอนที่ 3 ถึง 6 7. **เสร็จสิ้น** เมื่อผ่านแล้ว ช่อง `h-captcha-response` บนหน้าเว็บจะมี token ให้ส่งไปพร้อมกับฟอร์ม ## โค้ดฉบับสมบูรณ์ hcaptcha_click_selenium.py ```python """Click through an hCaptcha 3x3 image challenge with Selenium 4 and HCaptchaClassification. Flow: open the page -> click the checkbox -> read the question and the 9 images -> ask YesCaptcha which images match -> click them -> submit. Repeat while new rounds appear. Run: pip install requests selenium export YESCAPTCHA_CLIENT_KEY=your_client_key python hcaptcha_click_selenium.py Each recognized round is charged (see the price list; rounds with no target found are free). hCaptcha changes its page structure often; adjust the selectors below if a step stops working. Click and drag questions return coordinates instead; see the HCaptchaClassification page. """ import base64 import os import re import time import requests from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.support.wait import WebDriverWait CLIENT_KEY = os.environ["YESCAPTCHA_CLIENT_KEY"] PAGE_URL = "https://accounts.hcaptcha.com/demo" def classify(question, images_b64): task = {"type": "HCaptchaClassification", "question": question, "queries": images_b64} data = requests.post( "https://api.yescaptcha.com/createTask", json={"clientKey": CLIENT_KEY, "task": task}, timeout=60, ).json() if data.get("errorId"): raise RuntimeError(f"{data.get('errorCode')}: {data.get('errorDescription')}") return data["solution"] # synchronous def background_image_b64(element): """The tiles are
s with a CSS background image; download it and Base64-encode it.""" style = element.get_attribute("style") or "" match = re.search(r'url\("?(.*?)"?\)', style) if not match: return None return base64.b64encode(requests.get(match.group(1), timeout=30).content).decode() driver = webdriver.Chrome() wait = WebDriverWait(driver, 15) try: driver.get(PAGE_URL) # 1. Click the checkbox (inside the first hCaptcha iframe) wait.until(EC.frame_to_be_available_and_switch_to_it( (By.CSS_SELECTOR, 'iframe[src*="hcaptcha"][src*="frame=checkbox"]'))) wait.until(EC.element_to_be_clickable((By.ID, "checkbox"))).click() driver.switch_to.default_content() # 2. Solve rounds in the challenge iframe wait.until(EC.frame_to_be_available_and_switch_to_it( (By.CSS_SELECTOR, 'iframe[src*="hcaptcha"][src*="frame=challenge"]'))) for _ in range(5): question = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, ".prompt-text"))).text.strip() tiles = driver.find_elements(By.CSS_SELECTOR, ".task-image") images = [background_image_b64(t.find_element(By.CSS_SELECTOR, ".image")) for t in tiles] if not tiles or None in images: print("not a 3x3 image challenge; see the docs for click/drag questions") break solution = classify(question, images) for tile, hit in zip(tiles, solution.get("objects", [])): if hit: tile.click() time.sleep(0.3) driver.find_element(By.CSS_SELECTOR, ".button-submit").click() time.sleep(3) if not driver.find_elements(By.CSS_SELECTOR, ".task-image"): break driver.switch_to.default_content() token = driver.find_element(By.NAME, "h-captcha-response").get_attribute("value") print("token received" if token else "not passed") finally: driver.quit() ``` ## หมายเหตุ - โครงสร้างหน้าเว็บของ hCaptcha เปลี่ยนบ่อย หาก selector ในโค้ดใช้ไม่ได้ ให้ปรับตามหน้าเว็บจริง - การจดจำภาพแต่ละรอบจะหักพอยต์ รอบที่ไม่พบเป้าหมายจะไม่หักพอยต์ หากคลิกแล้วการตรวจสอบไม่ผ่าน สามารถ [รายงาน](https://docs.yescaptcha.com/th/api/report.md) ภายใน 1 ชั่วโมงเพื่อขอคืนพอยต์หลังรายงาน - หากพบคำถามใหม่และได้รับ `ERROR_UNKNOWN_QUESTION` ให้รีเฟรชเพื่อเปลี่ยนโจทย์ หรือติดต่อฝ่ายสนับสนุน --- # โค้ดตัวอย่างและ SDK > โค้ดตัวอย่างของ YesCaptcha ที่รันได้จริง (Python, Node.js, curl, C#, Easy Language) และ SDK ที่ไม่เป็นทางการจากชุมชน (Python, Node.js, Go) Source: https://docs.yescaptcha.com/th/samples/ · 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/samples/ ตัวอย่างทั้งหมดในหน้านี้เป็นไฟล์ที่สมบูรณ์และรันได้ทันที โดยอ่าน ClientKey จากตัวแปรสภาพแวดล้อม `YESCAPTCHA_CLIENT_KEY` นอกจากนี้ หน้าของแต่ละประเภทงานยังมีตัวอย่าง curl, Python และ Node.js ที่สร้างขึ้นสำหรับประเภทงานนั้นด้วย [Python](https://docs.yescaptcha.com/th/samples/python.md)ตรวจสอบยอดคงเหลือ, คำขอแรก, ไคลเอนต์ที่นำกลับมาใช้ซ้ำได้, การควบคุมงานพร้อมกัน, Selenium [Node.js](https://docs.yescaptcha.com/th/samples/nodejs.md)Node.js 18+ ไม่ต้องใช้ไลบรารีภายนอก [C#](https://docs.yescaptcha.com/th/samples/csharp.md).NET 6+ [Easy Language](https://docs.yescaptcha.com/th/samples/easy-language.md)ตัวอย่างการจำลองการคลิกจากผู้ใช้ หากต้องการทดสอบผ่านบรรทัดคำสั่งเท่านั้น ดูตัวอย่าง curl ได้ที่ [เริ่มต้นใช้งานอย่างรวดเร็ว](https://docs.yescaptcha.com/th/getting-started/quickstart.md) และ [getBalance](https://docs.yescaptcha.com/th/api/get-balance.md) ## SDK จากชุมชน SDK ต่อไปนี้มาจากผู้ใช้ **ไม่เป็นทางการ** เรายังไม่ได้ตรวจสอบโค้ด โปรดประเมินด้วยตนเองก่อนใช้งาน หากมีปัญหาโปรดติดต่อผู้พัฒนาโดยตรง: | ภาษา | โปรเจกต์ | | --- | --- | | Python | [github.com/yescaptcha/yescaptcha-python](https://github.com/yescaptcha/yescaptcha-python) | | Node.js | [github.com/ScoLib/yescaptcha](https://github.com/ScoLib/yescaptcha) | | Go | [github.com/FreedWu/yescaptcha](https://github.com/FreedWu/yescaptcha) | | Go | [github.com/deanxv/yescaptcha-go](https://github.com/deanxv/yescaptcha-go) | ไม่ว่าจะใช้ SDK ใดก็ตาม โปรดตรวจสอบว่า SDK เรียกใช้ที่อยู่ API เป็น `api.yescaptcha.com` หรือ `cn.yescaptcha.com` และใช้ชื่อประเภทงานตรงกับเว็บไซต์นี้ --- # Python > ตัวอย่าง Python ของ YesCaptcha ได้แก่ การตรวจสอบยอดคงเหลือ การจดจำ CAPTCHA แบบภาพ คลาสไคลเอนต์ที่นำกลับมาใช้ซ้ำได้ (สร้างงาน แล้ว polling ทุก 5 วินาที) การควบคุมงานพร้อมกันด้วย asyncio และการส่ง reCAPTCHA ด้วย requests และ Selenium Source: https://docs.yescaptcha.com/th/samples/python/ · 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/samples/python/ สภาพแวดล้อม: Python 3.8 ขึ้นไป และ `pip install requests` ก่อนรันให้ตั้งค่าตัวแปรสภาพแวดล้อม: ```bash export YESCAPTCHA_CLIENT_KEY=your_client_key ``` ## ตรวจสอบยอดคงเหลือ ไม่หักพอยต์ ใช้ยืนยันว่า ClientKey ถูกต้อง: get_balance.py ```python """Check the balance. getBalance is free and is a quick way to verify your clientKey.""" import os import requests CLIENT_KEY = os.environ["YESCAPTCHA_CLIENT_KEY"] r = requests.post( "https://api.yescaptcha.com/getBalance", json={"clientKey": CLIENT_KEY}, timeout=30, ) data = r.json() if data.get("errorId"): # e.g. ERROR_KEY_DOES_NOT_EXIST when the clientKey is wrong print("error:", data.get("errorCode"), data.get("errorDescription")) else: print("balance (points):", data["balance"]) ``` ## จดจำ CAPTCHA แบบภาพหนึ่งภาพ ประเภทงานแบบซิงโครนัส `ImageToTextTaskOcrBase` ได้ผลลัพธ์ในคำขอเดียว ภาพตัวอย่าง: [captcha.jpg](https://docs.yescaptcha.com/samples/captcha.jpg) quickstart.py ```python """First request: read an alphanumeric image captcha with ImageToTextTaskOcrBase (synchronous, 2 points per image). Usage: export YESCAPTCHA_CLIENT_KEY=your_client_key python quickstart.py captcha.png """ import base64 import os import sys import requests CLIENT_KEY = os.environ["YESCAPTCHA_CLIENT_KEY"] image_path = sys.argv[1] if len(sys.argv) > 1 else "captcha.png" with open(image_path, "rb") as f: body = base64.b64encode(f.read()).decode() # no "data:" prefix r = requests.post( "https://api.yescaptcha.com/createTask", json={ "clientKey": CLIENT_KEY, "task": {"type": "ImageToTextTaskOcrBase", "body": body}, }, timeout=30, ) data = r.json() if data.get("errorId"): raise SystemExit(f"{data.get('errorCode')}: {data.get('errorDescription')}") print("text:", data["solution"]["text"]) ``` ## ไคลเอนต์ที่นำกลับมาใช้ซ้ำได้ คัดลอกไฟล์ด้านล่างไปไว้ในโปรเจกต์ของคุณ ใช้ได้ทั้งประเภทงานแบบซิงโครนัสและแบบอะซิงโครนัส: yescaptcha.py ```python """A small client you can copy into your project: create tasks, poll results, check the balance. from yescaptcha import YesCaptcha client = YesCaptcha(os.environ["YESCAPTCHA_CLIENT_KEY"]) solution = client.solve({ "type": "NoCaptchaTaskProxyless", "websiteURL": "https://www.google.com/recaptcha/api2/demo", "websiteKey": "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-", }) print(solution["gRecaptchaResponse"]) """ import os import time import requests class YesCaptchaError(Exception): def __init__(self, code, description): super().__init__(f"{code}: {description}") self.code = code self.description = description class YesCaptcha: def __init__(self, client_key, endpoint="https://api.yescaptcha.com", poll_interval=5, timeout=180): self.client_key = client_key self.endpoint = endpoint.rstrip("/") self.poll_interval = poll_interval # 5 s: polling the same taskId more often only returns "processing" self.timeout = timeout self.session = requests.Session() def call(self, method, payload=None): body = {"clientKey": self.client_key, **(payload or {})} data = self.session.post(f"{self.endpoint}/{method}", json=body, timeout=30).json() if data.get("errorId"): raise YesCaptchaError(data.get("errorCode"), data.get("errorDescription")) return data def balance(self): return self.call("getBalance")["balance"] def solve(self, task): created = self.call("createTask", {"task": task}) if created.get("status") == "ready": # synchronous types return the solution directly return created["solution"] task_id = created["taskId"] deadline = time.time() + self.timeout while time.time() < deadline: time.sleep(self.poll_interval) result = self.call("getTaskResult", {"taskId": task_id}) if result.get("status") == "ready": return result["solution"] raise TimeoutError(f"task {task_id} not ready after {self.timeout}s") if __name__ == "__main__": client = YesCaptcha(os.environ["YESCAPTCHA_CLIENT_KEY"]) print("balance:", client.balance()) ``` ```python from yescaptcha import YesCaptcha client = YesCaptcha(os.environ["YESCAPTCHA_CLIENT_KEY"]) solution = client.solve({ "type": "HCaptchaTaskProxyless", "websiteURL": "https://accounts.hcaptcha.com/demo", "websiteKey": "a5f74b19-9e45-40e0-b45d-47ff91b7a6c2", }) print(solution["gRecaptchaResponse"]) ``` เมื่อเกิดข้อผิดพลาดจะ raise `YesCaptchaError` โดย `e.code` คือรหัสข้อผิดพลาด ดูความหมายได้ที่ [รหัสข้อผิดพลาด](https://docs.yescaptcha.com/th/api/errors.md) ## ควบคุมงานพร้อมกัน เมื่อส่งงานเป็นชุด ให้จำกัดจำนวนคำขอที่กำลังประมวลผลพร้อมกัน และเมื่อได้รับ `ERROR_THREADS_MAXIMUM` ให้รอสักครู่แล้วลองใหม่ (ต้อง `pip install aiohttp`) ดูคำอธิบายได้ที่ [ขีดจำกัดงานพร้อมกันและการหยุดชั่วคราวอัตโนมัติ](https://docs.yescaptcha.com/th/api/rate-limits.md): concurrency.py ```python """Limit concurrency: keep the number of requests waiting for a result below your limit, and back off on ERROR_THREADS_MAXIMUM (rejected requests are not charged). Requires: pip install aiohttp""" import asyncio import os import aiohttp CLIENT_KEY = os.environ["YESCAPTCHA_CLIENT_KEY"] LIMIT = 15 # below your concurrency limit sem = asyncio.Semaphore(LIMIT) async def solve(session, task): async with sem: # at most LIMIT requests in progress at a time result = {} for attempt in range(5): async with session.post( "https://api.yescaptcha.com/createTask", json={"clientKey": CLIENT_KEY, "task": task}, ) as resp: result = await resp.json() if result.get("errorCode") != "ERROR_THREADS_MAXIMUM": return result await asyncio.sleep(1 + attempt) # over the limit: wait and retry return result async def main(tasks): async with aiohttp.ClientSession() as session: return await asyncio.gather(*(solve(session, t) for t in tasks)) if __name__ == "__main__": print(asyncio.run(main([]))) ``` ## ส่ง token ของ reCAPTCHA - ส่งด้วย requests โดยตรง: ดู [ทำ reCAPTCHA ให้สำเร็จด้วย token](https://docs.yescaptcha.com/th/guides/submit-recaptcha-token.md) - กรอกในเบราว์เซอร์ด้วย Selenium: ดู [ทำ reCAPTCHA ให้สำเร็จด้วย token](https://docs.yescaptcha.com/th/guides/submit-recaptcha-token.md) - จำลองการคลิกโจทย์ภาพด้วย Selenium: ดู [จำลองการคลิกการจดจำภาพ reCAPTCHA v2](https://docs.yescaptcha.com/th/guides/recaptcha-click-selenium.md) และ [จำลองการคลิกการจดจำภาพ hCaptcha](https://docs.yescaptcha.com/th/guides/hcaptcha-click-selenium.md) --- # Node.js > ตัวอย่าง Node.js ของ YesCaptcha (Node.js 18+ ใช้ fetch ที่มีในตัว ไม่ต้องติดตั้งไลบรารีเพิ่ม) ครอบคลุมการตรวจสอบยอดคงเหลือ การจดจำภาพ CAPTCHA และคลาส client ที่นำกลับมาใช้ซ้ำได้ (สร้างงาน และ polling ทุก 5 วินาที) Source: https://docs.yescaptcha.com/th/samples/nodejs/ · 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/samples/nodejs/ สภาพแวดล้อมที่ใช้งาน: Node.js 18 ขึ้นไป (มี `fetch` ในตัว) ตัวอย่างเป็น ES module (`.mjs`) ไม่ต้องติดตั้งไลบรารีเพิ่ม ก่อนรันให้ตั้งค่าตัวแปรสภาพแวดล้อม: ```bash export YESCAPTCHA_CLIENT_KEY=your_client_key ``` ## ตรวจสอบยอดคงเหลือ ไม่หักพอยต์ ใช้ยืนยันว่า ClientKey ถูกต้อง: get-balance.mjs ```js // Check the balance. getBalance is free and is a quick way to verify your clientKey. Node.js 18+ const CLIENT_KEY = process.env.YESCAPTCHA_CLIENT_KEY; const res = await fetch('https://api.yescaptcha.com/getBalance', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ clientKey: CLIENT_KEY }), }); const data = await res.json(); if (data.errorId) { // e.g. ERROR_KEY_DOES_NOT_EXIST when the clientKey is wrong console.log('error:', data.errorCode, data.errorDescription); } else { console.log('balance (points):', data.balance); } ``` ## จดจำภาพ CAPTCHA ประเภทงานแบบซิงโครนัส `ImageToTextTaskOcrBase` ได้ผลลัพธ์ในคำขอเดียว ภาพตัวอย่าง: [captcha.jpg](https://docs.yescaptcha.com/samples/captcha.jpg) รัน `node quickstart.mjs captcha.jpg` quickstart.mjs ```js // First request: read an alphanumeric image captcha with ImageToTextTaskOcrBase (synchronous, 2 points per image). // Usage: YESCAPTCHA_CLIENT_KEY=your_client_key node quickstart.mjs captcha.png import { readFileSync } from 'node:fs'; const CLIENT_KEY = process.env.YESCAPTCHA_CLIENT_KEY; const body = readFileSync(process.argv[2] ?? 'captcha.png').toString('base64'); // no "data:" prefix const res = await fetch('https://api.yescaptcha.com/createTask', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ clientKey: CLIENT_KEY, task: { type: 'ImageToTextTaskOcrBase', body } }), }); const data = await res.json(); if (data.errorId) throw new Error(`${data.errorCode}: ${data.errorDescription}`); console.log('text:', data.solution.text); ``` ## client ที่นำกลับมาใช้ซ้ำได้ yescaptcha.mjs ```js // A small client you can copy into your project: create tasks, poll results, check the balance. Node.js 18+ // // import { YesCaptcha } from './yescaptcha.mjs'; // const client = new YesCaptcha(process.env.YESCAPTCHA_CLIENT_KEY); // const solution = await client.solve({ type: 'NoCaptchaTaskProxyless', websiteURL: '...', websiteKey: '...' }); export class YesCaptchaError extends Error { constructor(code, description) { super(`${code}: ${description}`); this.code = code; } } export class YesCaptcha { constructor(clientKey, { endpoint = 'https://api.yescaptcha.com', pollInterval = 5000, timeout = 180000 } = {}) { this.clientKey = clientKey; this.endpoint = endpoint.replace(/\/$/, ''); this.pollInterval = pollInterval; // 5 s: polling the same taskId more often only returns "processing" this.timeout = timeout; } async call(method, payload = {}) { const res = await fetch(`${this.endpoint}/${method}`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ clientKey: this.clientKey, ...payload }), }); const data = await res.json(); if (data.errorId) throw new YesCaptchaError(data.errorCode, data.errorDescription); return data; } async balance() { return (await this.call('getBalance')).balance; } async solve(task) { const created = await this.call('createTask', { task }); if (created.status === 'ready') return created.solution; // synchronous types return the solution directly const deadline = Date.now() + this.timeout; while (Date.now() < deadline) { await new Promise((r) => setTimeout(r, this.pollInterval)); const result = await this.call('getTaskResult', { taskId: created.taskId }); if (result.status === 'ready') return result.solution; } throw new Error(`task ${created.taskId} not ready after ${this.timeout} ms`); } } if (import.meta.url === `file://${process.argv[1]}`) { const client = new YesCaptcha(process.env.YESCAPTCHA_CLIENT_KEY); console.log('balance:', await client.balance()); } ``` ```js import { YesCaptcha } from './yescaptcha.mjs'; const client = new YesCaptcha(process.env.YESCAPTCHA_CLIENT_KEY); const solution = await client.solve({ type: 'TurnstileTaskProxyless', websiteURL: 'https://example.com/login', websiteKey: '0x4AAAAAAA_SITE_KEY', }); console.log(solution.token); ``` เมื่อเกิดข้อผิดพลาด จะโยน `YesCaptchaError` โดย `err.code` คือรหัสข้อผิดพลาด ดูความหมายได้ที่ [รหัสข้อผิดพลาด](https://docs.yescaptcha.com/th/api/errors.md) --- # C# > ตัวอย่าง C# ของ YesCaptcha (.NET 6+, HttpClient + System.Text.Json) ตรวจสอบยอดคงเหลือ สร้างงาน reCAPTCHA v2 และ polling (เรียกตรวจซ้ำเป็นระยะ) ผลลัพธ์ทุก 5 วินาที Source: https://docs.yescaptcha.com/th/samples/csharp/ · 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/samples/csharp/ สภาพแวดล้อมที่ใช้งาน: .NET 6 ขึ้นไป ใช้เฉพาะไลบรารีมาตรฐาน (`HttpClient`, `System.Text.Json`) ```bash dotnet new console -o YesCaptchaDemo cd YesCaptchaDemo # replace Program.cs with the code below export YESCAPTCHA_CLIENT_KEY=your_client_key dotnet run ``` Program.cs ```csharp // YesCaptcha C# sample (.NET 6+): check the balance, then solve a reCAPTCHA v2. // Run: dotnet new console -o YesCaptchaDemo, replace Program.cs with this file, set YESCAPTCHA_CLIENT_KEY, then dotnet run using System; using System.Net.Http; using System.Net.Http.Json; using System.Text.Json; using System.Text.Json.Nodes; using System.Threading.Tasks; class Program { const string Api = "https://api.yescaptcha.com"; static readonly HttpClient Http = new HttpClient { Timeout = TimeSpan.FromSeconds(30) }; static readonly string ClientKey = Environment.GetEnvironmentVariable("YESCAPTCHA_CLIENT_KEY") ?? ""; static async Task Call(string method, JsonObject payload) { payload["clientKey"] = ClientKey; var res = await Http.PostAsJsonAsync($"{Api}/{method}", payload); var data = JsonNode.Parse(await res.Content.ReadAsStringAsync())!; if ((int?)data["errorId"] != 0) throw new Exception($"{data["errorCode"]}: {data["errorDescription"]}"); return data; } static async Task Solve(JsonObject task) { var created = await Call("createTask", new JsonObject { ["task"] = task }); if ((string?)created["status"] == "ready") return created["solution"]!; // synchronous types var taskId = (string)created["taskId"]!; for (var i = 0; i < 36; i++) // poll every 5 seconds, for up to about 3 minutes { await Task.Delay(5000); var result = await Call("getTaskResult", new JsonObject { ["taskId"] = taskId }); if ((string?)result["status"] == "ready") return result["solution"]!; } throw new TimeoutException(taskId); } static async Task Main() { var balance = await Call("getBalance", new JsonObject()); Console.WriteLine($"balance (points): {balance["balance"]}"); var solution = await Solve(new JsonObject { ["type"] = "NoCaptchaTaskProxyless", ["websiteURL"] = "https://www.google.com/recaptcha/api2/demo", ["websiteKey"] = "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-", }); Console.WriteLine(solution["gRecaptchaResponse"]); } } ``` หากเปลี่ยนเป็นประเภทงานอื่น ให้แก้เฉพาะออบเจ็กต์งานใน `Solve` โดยดูฟิลด์ได้ในหน้า [ประเภทงาน](https://docs.yescaptcha.com/th/tasks.md) แต่ละหน้า ประเภทแบบซิงโครนัส (การจดจำภาพ, `ImageToTextTaskOcrBase`) จะคืนผลลัพธ์ทันทีใน `createTask` ซึ่ง `Solve` รองรับกรณีนี้อยู่แล้ว --- # Easy Language (易语言) > ตัวอย่าง YesCaptcha ด้วยภาษา Easy Language (易语言) ที่ผู้ใช้ร่วมสร้างขึ้น ได้แก่ การคลิก reCAPTCHA และ hCaptcha, การจดจำภาพ FunCaptcha และการส่ง token ของ reCAPTCHA พร้อมแพ็กเกจดาวน์โหลดและประเด็นสำคัญในการเรียก API Source: https://docs.yescaptcha.com/th/samples/easy-language/ · 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/samples/easy-language/ Easy Language (易语言) เป็นภาษาโปรแกรมภาษาจีนที่ได้รับความนิยมในจีน ตัวอย่างเหล่านี้ผู้ใช้เป็นผู้ร่วมสร้าง (南方填表, 松 และอื่น ๆ) ใช้เพื่อการอ้างอิงเท่านั้น เรายังไม่ได้ตรวจสอบทีละบรรทัด ตัวอย่างประกอบด้วย: - การคลิก reCAPTCHA และ hCaptcha (เปิดเบราว์เซอร์แล้วจดจำและคลิกอัตโนมัติ) - การจดจำภาพ FunCaptcha - การส่ง token ของ reCAPTCHA > **แพ็กเกจดาวน์โหลด:** แพ็กเกจตัวอย่าง (ชุดที่ใหญ่ที่สุดประมาณ 87 MB รวมเบราว์เซอร์) กำลังย้ายไปยังที่ดาวน์โหลดใหม่ ระหว่างนี้โปรด[ติดต่อฝ่ายสนับสนุน](https://docs.yescaptcha.com/th/help/contact.md)เพื่อขอรับ ## ประเด็นสำคัญในการเรียก API ด้วย Easy Language ไม่ต้องใช้แพ็กเกจตัวอย่าง เพียงใช้คำสั่งเข้าถึงเว็บ (POST) ของ Easy Language ก็เรียก API ได้: 1. URL `https://api.yescaptcha.com/createTask` เมธอด `POST` เพิ่ม header `Content-Type: application/json` 2. เนื้อหาที่ส่งเป็นข้อความ JSON เช่น `{"clientKey":"YOUR_CLIENT_KEY","task":{"type":"ImageToTextTaskOcrBase","body":"BASE64_IMAGE"}}` 3. หาก `errorId` ใน JSON ที่ตอบกลับเป็น 0 แสดงว่าสำเร็จ สำหรับประเภทงานแบบอะซิงโครนัส ให้นำ `taskId` ไปส่ง `{"clientKey":"…","taskId":"…"}` ที่ `https://api.yescaptcha.com/getTaskResult` ทุก 5 วินาที จนกว่า `status` จะเป็น `ready` 4. Base64 ของรูปภาพต้องไม่มี prefix `data:image/...;base64,` และต้องไม่มีการขึ้นบรรทัดใหม่ รูปแบบคำขอและการตอบกลับดูที่ [คำขอและการตอบกลับ](https://docs.yescaptcha.com/th/api/overview.md) ## ตัวอย่างรันไม่ได้ - แจ้งว่าสร้างเบราว์เซอร์ไม่ได้: ใช้เบราว์เซอร์ที่มาพร้อมแพ็กเกจตัวอย่างก่อน ถอนการติดตั้งเบราว์เซอร์อื่นที่อาจขัดแย้งกัน หรือคอมไพล์เป็นโปรแกรมแล้วค่อยรัน - ได้รับรหัสข้อผิดพลาด: ตรวจสอบพารามิเตอร์ตาม [รหัสข้อผิดพลาด](https://docs.yescaptcha.com/th/api/errors.md) --- # หลาย ClientKey: ขีดจำกัด, IP allowlist และเวลาหมดอายุ > บัญชี YesCaptcha หนึ่งบัญชีมี ClientKey ได้สูงสุด 20 รายการ โดยหักจากยอดคงเหลือของบัญชีเดียวกัน แต่ละรายการตั้งขีดจำกัดการใช้จ่าย (ต่อวัน ต่อสัปดาห์ ต่อเดือน หรือยอดรวมครั้งเดียว รีเซ็ตตามเวลาปักกิ่ง) IP allowlist และเวลาหมดอายุแยกกันได้ และมีผลภายในไม่กี่วินาที Source: https://docs.yescaptcha.com/th/account/client-keys/ · Last verified: 2026-10-29 > This page was machine-translated from the Chinese version. If anything differs, the Chinese version prevails: https://docs.yescaptcha.com/zh/account/client-keys/ บัญชี YesCaptcha หนึ่งบัญชีมี `clientKey` ได้สูงสุด 20 รายการ (รวมรายการเดิม) จัดการได้ที่หน้า「คีย์และความปลอดภัย」ในแดชบอร์ด [yescaptcha.com](https://yescaptcha.com/security) ทุก `clientKey` สร้างงานและตรวจสอบยอดคงเหลือได้ และหักจากยอดคงเหลือของบัญชีเดียวกัน แต่ละรายการตั้งขีดจำกัดการใช้จ่าย IP allowlist และเวลาหมดอายุแยกกันได้ และมีผลภายในไม่กี่วินาที เหมาะกับกรณีเหล่านี้: แยกใช้ระหว่างสภาพแวดล้อมทดสอบกับ production หรือแยกตามโปรเจกต์; แจกให้ลูกค้าปลายทางหรือพันธมิตรโดยกำหนดขีดจำกัดของแต่ละราย; หาก `clientKey` ใดรั่วไหล ก็ลบเฉพาะรายการนั้น โปรแกรมอื่นไม่ได้รับผลกระทบ ## Key หลักและ Key ย่อย | | Key หลัก | Key ย่อย | | --- | --- | --- | | คืออะไร | `clientKey` เดิม มีบัญชีละหนึ่งรายการ | สร้างเพิ่มนอกเหนือจาก Key หลัก ได้สูงสุด 19 รายการ | | ขีดจำกัด, IP allowlist, เวลาหมดอายุ | ตั้งได้ | ตั้งได้ | | รีเซ็ต | ได้: รายการเก่าใช้ไม่ได้ทันที และยอดคงเหลือย้ายไปที่รายการใหม่ | รีเซ็ตไม่ได้ ให้ลบแล้วสร้างใหม่ | | ลบ | ไม่ได้ | ได้: ใช้ไม่ได้ภายในไม่กี่วินาที และกู้คืนไม่ได้ | - รูปแบบเหมือนกันทั้งหมด: 40 ตัวอักษรแรกเป็นคีย์ลับ ตามด้วย ID ผู้ใช้ของคุณ - การรีเซ็ต Key หลักไม่กระทบ Key ย่อย - ไม่ว่าจะใช้ `clientKey` ใดสร้างงานหรือตรวจสอบยอดคงเหลือ ก็ใช้อินเทอร์เฟซและได้ผลลัพธ์เหมือนกัน ต่างกันเพียงมีการตรวจสอบขีดจำกัด IP allowlist และเวลาหมดอายุเพิ่ม ## สร้าง ClientKey ใหม่ 1. เข้าสู่ระบบที่ [yescaptcha.com](https://yescaptcha.com/) แล้วเปิดหน้า「คีย์และความปลอดภัย」([yescaptcha.com/security](https://yescaptcha.com/security)) 2. ใน “Key ทั้งหมด” คลิก “สร้าง Key ย่อย” ชื่อ (ไม่เกิน 40 ตัวอักษร) ขีดจำกัด IP allowlist และเวลาหมดอายุไม่ต้องกรอกก็ได้ และแก้ไขภายหลังได้ 3. ยืนยันตัวตนอีกครั้งตามที่ระบบแจ้ง การสร้าง แก้ไข และลบต้องยืนยันตัวตนทุกครั้ง 4. หลังสร้างแล้วให้คัดลอก `clientKey` แบบเต็มไปตั้งค่าในโปรแกรม ภายหลังสามารถคลิกไอคอนรูปตาในรายการเพื่อดูอีกครั้งได้ > **หมายเหตุ:** การสร้าง แก้ไข และลบมีผลภายในไม่กี่วินาที หากเรียกใช้ทันทีหลังสร้าง อาจได้รับ `ERROR_KEY_DOES_NOT_EXIST` ให้รอสักครู่แล้วลองใหม่ ภายในไม่กี่วินาทีหลังลบหรือเข้มงวดการตั้งค่าขึ้น คำขอที่กำลังส่งอยู่อาจยังถูกประมวลผลตามการตั้งค่าเดิม ## ขีดจำกัดการใช้จ่าย ขีดจำกัดกำหนดว่า `clientKey` หนึ่งใช้จ่ายได้สูงสุดกี่พอยต์ในหนึ่งรอบ (1,000 พอยต์ = ¥1) ตั้งได้ตั้งแต่ 1 ถึง 10,000,000,000 พอยต์ มีสี่รอบ รีเซ็ตตามเวลาปักกิ่ง (UTC+8): | รอบ | รีเซ็ตเมื่อใด | | --- | --- | | ต่อวัน | ทุกวันเวลา 00:00 | | ต่อสัปดาห์ | ทุกวันจันทร์เวลา 00:00 | | ต่อเดือน | วันที่ 1 ของทุกเดือนเวลา 00:00 | | ยอดรวมครั้งเดียว | ไม่รีเซ็ต เมื่อใช้หมดแล้ว `clientKey` นี้จะสร้างงานไม่ได้อีก หากต้องการใช้ต่อให้เพิ่มขีดจำกัด | - คำนวณตามพอยต์ที่หักจริง: พอยต์ที่คืนจากการจดจำล้มเหลวหรือหมดเวลา จะคืนเข้าขีดจำกัดด้วย - เมื่อขีดจำกัดที่เหลือในรอบนี้ไม่พอสำหรับการหักพอยต์ของงานนี้ `createTask` จะคืนค่า [`ERROR_KEY_QUOTA_EXCEEDED`](https://docs.yescaptcha.com/th/api/errors.md#ERROR_KEY_QUOTA_EXCEEDED) ไม่หักพอยต์ และไม่นับรวมใน[การหยุดชั่วคราวอัตโนมัติ](https://docs.yescaptcha.com/th/api/rate-limits.md) - รายการในแดชบอร์ดแสดงว่าแต่ละ `clientKey` ใช้ไปเท่าไรในรอบนี้ และจะรีเซ็ตครั้งถัดไปเมื่อใด - ขีดจำกัดไม่ใช่ยอดคงเหลือแยกต่างหาก: ทุก `clientKey` หักจากยอดคงเหลือของบัญชีเดียวกัน เมื่อยอดคงเหลือของบัญชีไม่พอจะคืนค่า `ERROR_ZERO_BALANCE` ตามปกติ เมื่อเรียก [`getBalance`](https://docs.yescaptcha.com/th/api/get-balance.md) ด้วย `clientKey` ที่ตั้งขีดจำกัดไว้ `balance` จะเป็นค่าที่น้อยกว่าระหว่างยอดคงเหลือของบัญชีกับขีดจำกัดที่เหลือในรอบนี้ และมีฟิลด์ `keyQuotaRemaining` เพิ่มเข้ามา (ขีดจำกัดที่เหลือ หน่วยพอยต์) `clientKey` ที่ไม่ได้ตั้งขีดจำกัดจะไม่มีฟิลด์นี้ และผลลัพธ์เหมือนเดิม ```json { "errorId": 0, "balance": 20000, "softBalance": 0, "inviteBalance": 0, "inviteBy": 0, "keyQuotaRemaining": 20000 } ``` ## IP allowlist `clientKey` ที่ตั้ง IP allowlist ไว้ จะใช้ได้เฉพาะคำขอที่ส่งจาก IP ในรายการเท่านั้น หากเว้นว่างไว้คือไม่จำกัด - ให้กรอก **IP สาธารณะของเครื่องที่เรียกใช้ API ของ YesCaptcha** (IP ขาออก) ไม่ใช่พร็อกซีในพารามิเตอร์ของงาน หากเรียกจากหลายเครื่อง ต้องเพิ่ม IP สาธารณะของทุกเครื่อง - หนึ่งบรรทัดต่อหนึ่งที่อยู่ IPv4 หรือ IPv6 หรือช่วง CIDR ได้สูงสุด 50 รายการ ที่อยู่เดี่ยวหมายถึงอนุญาตเฉพาะ IP นั้น - ช่วง IP ต้องเขียนเป็นที่อยู่เครือข่าย: `203.0.113.0/24` ใช้ได้ แต่ `203.0.113.5/24` ใช้ไม่ได้ (บิตโฮสต์ไม่เป็น 0) ```text 203.0.113.10 198.51.100.0/24 2001:db8::/32 ``` - เมื่อ IP ของคำขอไม่อยู่ในรายการ `createTask` และ `getBalance` จะคืนค่า [`ERROR_KEY_IP_NOT_ALLOWED`](https://docs.yescaptcha.com/th/api/errors.md#ERROR_KEY_IP_NOT_ALLOWED) ไม่หักพอยต์ และไม่นับรวมในการหยุดชั่วคราวอัตโนมัติ - หาก IP ขาออกเปลี่ยนได้ (อินเทอร์เน็ตบ้าน, cloud function, egress ที่หมุนเวียน) อย่าตั้งค่า หรือตั้งเป็นทั้งช่วง ## เวลาหมดอายุ - `clientKey` ใดก็ได้ (รวม Key หลัก) ตั้งเวลาหมดอายุได้ ต้องอยู่ภายในสิบปี และแก้ไขหรือลบออกได้ทุกเมื่อ - หลังหมดอายุ การเรียก `createTask` และ `getBalance` ด้วยรายการนั้นจะคืนค่า [`ERROR_KEY_EXPIRED`](https://docs.yescaptcha.com/th/api/errors.md#ERROR_KEY_EXPIRED) และไม่หักพอยต์ งานที่สร้างไว้แล้วยังใช้ `getTaskResult` ดึงผลได้ตามปกติ - `clientKey` ที่ไม่ได้ใช้งานเป็นเวลานาน ระบบจะตั้งเวลาหมดอายุให้เพื่อความปลอดภัยของบัญชี และส่งอีเมลแจ้งเตือนก่อนหมดอายุ เวลาหมดอายุแบบนี้แก้ไขไม่ได้: ให้สร้าง Key หลักใหม่ (ยอดคงเหลือย้ายไปที่รายการใหม่โดยอัตโนมัติ) หรือสร้าง `clientKey` ใหม่ แล้วอัปเดตในโปรแกรม ## ยอดคงเหลือ ขีดจำกัดงานพร้อมกัน และการหยุดชั่วคราวอัตโนมัติ - **ยอดคงเหลือ**: ทุก `clientKey` หักจากยอดคงเหลือของบัญชีเดียวกัน การเติมเงิน โบนัส VIP รางวัลแนะนำเพื่อน และส่วนแบ่งรายได้นักพัฒนา ล้วนคิดตามบัญชี ไม่เกี่ยวกับว่าใช้ `clientKey` ใด - **ขีดจำกัดงานพร้อมกัน**: คิดตามบัญชี ทุก `clientKey` ใช้เพดานเดียวกันรวมกัน ดู[ขีดจำกัดงานพร้อมกันและการหยุดชั่วคราวอัตโนมัติ](https://docs.yescaptcha.com/th/api/rate-limits.md) - **การหยุดชั่วคราวอัตโนมัติ**: คิดแยกตาม `clientKey` หาก `clientKey` หนึ่งมีข้อผิดพลาดมากเกินไปจนถูกหยุดชั่วคราว รายการอื่นไม่ได้รับผลกระทบ ## รหัสข้อผิดพลาดที่เกี่ยวข้อง | รหัสข้อผิดพลาด | คืนค่าเมื่อใด | | --- | --- | | [`ERROR_KEY_QUOTA_EXCEEDED`](https://docs.yescaptcha.com/th/api/errors.md#ERROR_KEY_QUOTA_EXCEEDED) | ขีดจำกัดที่เหลือในรอบนี้ไม่พอสำหรับงานนี้ (`createTask`) | | [`ERROR_KEY_IP_NOT_ALLOWED`](https://docs.yescaptcha.com/th/api/errors.md#ERROR_KEY_IP_NOT_ALLOWED) | IP ของคำขอไม่อยู่ใน IP allowlist ของ `clientKey` นี้ (`createTask`, `getBalance`) | | [`ERROR_KEY_EXPIRED`](https://docs.yescaptcha.com/th/api/errors.md#ERROR_KEY_EXPIRED) | `clientKey` หมดอายุแล้ว (`createTask`, `getBalance`) | ทั้งสามรายการไม่หักพอยต์ วิธีจัดการดู[รหัสข้อผิดพลาด](https://docs.yescaptcha.com/th/api/errors.md) --- # เติมเงินและ VIP > วิธีเติมเงิน YesCaptcha (WeChat Pay, Alipay, PayPal, สกุลเงินดิจิทัล) โดย 1,000 พอยต์ = ¥1 เมื่อยอดเติมเงินสะสมถึงเกณฑ์ ระบบจะอัปเกรดระดับ VIP 1 ถึง VIP 10 ให้อัตโนมัติ และทุกการเติมเงินหลังจากนั้นจะได้รับโบนัสพอยต์ตามสัดส่วน Source: https://docs.yescaptcha.com/th/account/recharge/ · 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/account/recharge/ เติมเงินได้ที่หน้าเติมเงินออนไลน์ในแดชบอร์ดของ [yescaptcha.com](https://yescaptcha.com/) ([yescaptcha.com/payment.html](https://yescaptcha.com/payment.html)) โดย 1,000 พอยต์ = ¥1 และใช้งานได้ทันทีหลังเงินเข้า เมื่อยอดเติมเงินสะสมถึงจำนวนที่กำหนด ระบบจะอัปเกรดเป็นระดับ VIP ให้อัตโนมัติ และทุกการเติมเงินหลังจากนั้นจะได้รับพอยต์เพิ่มตามสัดส่วนของระดับ VIP ## วิธีเติมเงิน | วิธี | คำอธิบาย | | --- | --- | | WeChat Pay | สแกน QR code เพื่อชำระเงิน | | Alipay | สแกน QR code หรือเปลี่ยนหน้าเพื่อชำระเงิน | | PayPal | เหมาะสำหรับผู้ใช้ต่างประเทศ | | สกุลเงินดิจิทัล | ชำระผ่าน Cryptomus รองรับ BTC, ETH, USDT และอื่น ๆ | | โอนเงินเข้าบัญชีบริษัท | ติดต่อฝ่ายสนับสนุน ฝ่ายการเงินจะยืนยันแล้วเพิ่มยอดให้ด้วยตนเอง | ดูประวัติการเติมเงินได้ที่หน้าเติมเงิน หากเติมเงินแล้วมีปัญหา กรุณา[ติดต่อฝ่ายสนับสนุน](https://docs.yescaptcha.com/th/help/contact.md)พร้อมแจ้งข้อมูลคำสั่งซื้อ ## ระดับ VIP เมื่อยอดเติมเงินสะสมถึงเกณฑ์ในตารางด้านล่าง ระบบจะอัปเกรดเป็นระดับที่ตรงกันให้อัตโนมัติ หลังอัปเกรด ทุกการเติมเงินจะได้รับพอยต์เพิ่มตามสัดส่วนโบนัส | ระดับ | ยอดเติมเงินสะสม | โบนัสต่อการเติมเงินแต่ละครั้ง | | --- | --- | --- | | VIP 1 | ¥10 | 2% | | VIP 2 | ¥100 | 5% | | VIP 3 | ¥500 | 8% | | VIP 4 | ¥1,000 | 10% | | VIP 5 | ¥2,000 | 15% | | VIP 6 | ¥3,000 | 20% | | VIP 7 | ¥6,000 | 25% | | VIP 8 | ¥12,000 | 30% | | VIP 9 | ¥24,000 | 35% | | VIP 10 | ¥48,000 | 40% | - **นับสะสม**: ไม่ว่าจะเติมเงินกี่ครั้ง เมื่อยอดสะสมถึงเกณฑ์ก็อัปเกรดทันที - **นับตามยอดสะสมหลังเติมเงิน**: เช่น หากเติมเงิน 1,000 หยวนในครั้งแรก ยอดสะสมถึงเกณฑ์ของ VIP 4 การเติมเงินครั้งนี้จะได้รับโบนัสตามสัดส่วนของ VIP 4 - การสมัครสมาชิกผ่านลิงก์แนะนำของเพื่อนจะได้รับระดับ VIP ทันที ดู[รางวัลแนะนำเพื่อน](https://docs.yescaptcha.com/th/account/referral.md) - ดูระดับปัจจุบันและสัดส่วนโบนัสได้ที่หน้าเติมเงินในแดชบอร์ด --- # รางวัลแนะนำเพื่อน > รางวัลแนะนำเพื่อนของ YesCaptcha ผู้ใช้ที่คุณเชิญจะได้รับ VIP ทันทีที่สมัครสมาชิก (ระดับของคุณลบ 1 ตั้งแต่ VIP1 ถึง VIP6) และคุณจะได้ 20% ของยอดที่ผู้ใช้เหล่านั้นใช้จ่าย (หากมีส่วนแบ่งรายได้นักพัฒนาด้วย จะได้ฝ่ายละครึ่ง) โดยโอนเป็นยอดคงเหลือ หรือถอนเงินในแดชบอร์ดได้เมื่อครบ ¥100 Source: https://docs.yescaptcha.com/th/account/referral/ · 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/account/referral/ เชิญเพื่อนมาใช้ YesCaptcha เพื่อนจะได้รับระดับ VIP ทันทีที่สมัครสมาชิก และคุณจะได้รับรางวัล 20% ของยอดที่เพื่อนใช้จ่าย รางวัลสามารถโอนเป็นยอดคงเหลือในบัญชี หรือยื่นถอนเงินในแดชบอร์ดได้เมื่อครบ ¥100 ## วิธีเชิญเพื่อน เข้าสู่ระบบแดชบอร์ดที่ [yescaptcha.com](https://yescaptcha.com/) แล้วดูลิงก์แนะนำ จำนวนผู้ที่เชิญแล้ว และรางวัลสะสมได้ในแผงโปรแกรมแนะนำเพื่อนบนหน้าภาพรวม ส่งลิงก์แนะนำให้เพื่อน แล้วให้เพื่อนสมัครสมาชิกผ่านลิงก์นั้น ## กฎ 1. **VIP ของเพื่อน**: เมื่อสมัครสมาชิก เพื่อนจะได้รับระดับ VIP เท่ากับระดับของคุณลบ 1 ต่ำสุด VIP 1 สูงสุด VIP 6 เช่น หากคุณเป็น VIP 6 เพื่อนจะเริ่มที่ VIP 5 อัตราโบนัสของแต่ละระดับดูได้ที่ [เติมเงินและ VIP](https://docs.yescaptcha.com/th/account/recharge.md) 2. **รางวัลของคุณ**: ทุกครั้งที่เพื่อนใช้จ่าย (หักพอยต์จากการใช้งาน) คุณจะได้รับ **20%** ของยอดที่ใช้จ่าย 3. **เมื่อมีส่วนแบ่งรายได้นักพัฒนาด้วย**: หากงานของเพื่อนมี ID ของนักพัฒนาแนบมาด้วย (ดู [ส่วนแบ่งรายได้นักพัฒนา](https://docs.yescaptcha.com/th/account/developer.md)) ผู้เชิญและนักพัฒนาจะ**ได้ฝ่ายละ 10%** 4. หากเพื่อนรายงานว่าจดจำผิดและได้รับคืนพอยต์หลังรายงานสำหรับงานใด รางวัลของงานนั้นจะถูกหักคืน 5. ตรวจสอบยอดรางวัลได้จาก `inviteBalance` ของ [getBalance](https://docs.yescaptcha.com/th/api/get-balance.md) (หน่วย: หยวน) ## การใช้รางวัล - **โอนเป็นยอดคงเหลือ**: โอนรางวัลเข้ายอดคงเหลือในบัญชีผ่านแดชบอร์ด เพื่อนำไปใช้จดจำในอัตรา 1,000 พอยต์ = ¥1 - **ถอนเงิน**: เมื่อรางวัลครบ **¥100** ให้ยื่นคำขอถอนเงินในแดชบอร์ด และจะโอนเงินให้หลังตรวจสอบ - ภาษีเงินได้บุคคลธรรมดาจากรายได้ที่ถอนเป็นความรับผิดชอบของคุณในการยื่นเอง ## เขียนบทความแนะนำ หากคุณเขียนคำแนะนำ บทเรียน การแบ่งปันประสบการณ์ ส่วนขยาย หรือโค้ดไลบรารีที่เกี่ยวกับ YesCaptcha ลงในฟอรัม บล็อก หรือโซเชียลมีเดีย ส่งลิงก์ให้ฝ่ายสนับสนุนได้ เราจะประเมินและอาจมอบพอยต์หรือระดับ VIP เป็นรางวัล ขึ้นอยู่กับคุณภาพของเนื้อหา หากกฎรางวัลมีการเปลี่ยนแปลง ให้ยึดตามหน้านี้และ [บันทึกการอัปเดตบริการ](https://docs.yescaptcha.com/th/changelog.md) เป็นหลัก --- # ส่วนแบ่งรายได้นักพัฒนา > ส่วนแบ่งรายได้นักพัฒนา YesCaptcha: ใส่ softID ของคุณในคำขอที่ซอฟต์แวร์หรือส่วนขยายของคุณส่งแทนผู้ใช้ แล้วคุณจะได้รับ 20% ของยอดที่ผู้ใช้ใช้จ่าย (ได้คนละ 10% เมื่อมีผู้แนะนำด้วย) สามารถโอนเป็นยอดคงเหลือ หรือถอนเงินได้เมื่อครบ ¥100 ในแดชบอร์ด Source: https://docs.yescaptcha.com/th/account/developer/ · 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/account/developer/ หากซอฟต์แวร์ สคริปต์ หรือส่วนขยายที่คุณพัฒนาเชื่อมต่อกับ YesCaptcha ให้ใส่ ID นักพัฒนา (`softID`) ของคุณในคำขอที่ส่งแทนผู้ใช้คนอื่น แล้วคุณจะได้รับส่วนแบ่งจากยอดที่ผู้ใช้ใช้จ่าย ผู้ใช้ยังคงใช้ `clientKey` และพอยต์ของตนเอง ส่วนแบ่งนี้ไม่ทำให้ผู้ใช้จ่ายเพิ่ม ## วิธีเชื่อมต่อ 1. เรียก [getSoftID](https://docs.yescaptcha.com/th/api/get-soft-id.md) ด้วย `clientKey` ของคุณเอง เพื่อรับ ID นักพัฒนา: ```json { "errorId": 0, "softID": 3, "balance": 0.004 } ``` 2. ในทุกคำขอ `createTask` ที่ซอฟต์แวร์ของคุณส่ง ให้เพิ่มฟิลด์ระดับบนสุด `softID` (อยู่ระดับเดียวกับ `clientKey` และ `task` โปรดระวังตัวพิมพ์เล็กใหญ่): ```json { "clientKey": "THE_USERS_CLIENT_KEY", "task": { "type": "NoCaptchaTaskProxyless", "websiteURL": "https://www.google.com/recaptcha/api2/demo", "websiteKey": "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-" }, "softID": 3 } ``` `clientKey` คือคีย์ของผู้ใช้เอง ## กฎการแบ่งรายได้ - งานที่มี `softID` ของคุณ จะนำ **20%** ของยอดที่ผู้ใช้ใช้จ่ายจริงเข้าส่วนแบ่งรายได้นักพัฒนาของคุณ - หากผู้ใช้คนนั้นถูกเชิญมาโดยผู้อื่นด้วย (ดู [รางวัลแนะนำเพื่อน](https://docs.yescaptcha.com/th/account/referral.md)) นักพัฒนาและผู้แนะนำ**ได้คนละ 10%** - เฉพาะงานที่หักพอยต์สำเร็จเท่านั้นที่มีส่วนแบ่ง งานที่ล้มเหลวหรือหมดเวลาแล้วคืนพอยต์จะไม่มี หากผู้ใช้รายงานผลที่ผิดและได้รับการคืนพอยต์หลังรายงาน ส่วนแบ่งของงานนั้นจะถูกหักคืน - ตรวจสอบยอดส่วนแบ่งได้จาก `balance` ของ [getSoftID](https://docs.yescaptcha.com/th/api/get-soft-id.md) หรือ `softBalance` ของ [getBalance](https://docs.yescaptcha.com/th/api/get-balance.md) โดยมีหน่วยเป็นหยวน ## การใช้ส่วนแบ่งรายได้ - **โอนเป็นยอดคงเหลือ**: โอนส่วนแบ่งเข้ายอดคงเหลือของบัญชีในแดชบอร์ด ที่อัตรา 1,000 พอยต์ = ¥1 เพื่อใช้ในการจดจำ - **ถอนเงิน**: เมื่อส่วนแบ่งครบ **¥100** ให้ส่งคำขอถอนเงินในแดชบอร์ด และจะโอนเงินให้หลังการตรวจสอบ - คุณต้องยื่นภาษีเงินได้บุคคลธรรมดาสำหรับรายได้จากการถอนเงินด้วยตนเอง --- # คำถามที่พบบ่อย > คำถามที่พบบ่อยของ YesCaptcha เช่น งานที่ล้มเหลวถูกหักพอยต์หรือไม่ token ใช้ได้นานเท่าไร อัตราผ่าน การจดจำโดยคนหรือเครื่อง ความเสี่ยงบัญชีถูกแบน การใช้ ClientKey เดียวหลายที่ การเลือก endpoint และความต่างระหว่างส่วนขยายกับ API Source: https://docs.yescaptcha.com/th/help/faq/ · 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/help/faq/ ## YesCaptcha จดจำล้มเหลวแล้วหักพอยต์หรือไม่? ไม่หัก งานที่จดจำล้มเหลว (`ERROR_CAPTCHA_UNSOLVABLE`) และหมดเวลา (`ERROR_TASK_TIMEOUT`) จะคืนพอยต์อัตโนมัติ ส่วนคำขอที่คืนรหัสข้อผิดพลาด เช่น พารามิเตอร์ไม่ถูกต้อง จะไม่ถูกหักพอยต์ หากได้ token แล้วแต่เว็บไซต์ปลายทางไม่ยอมรับ จะคิดเป็นงานที่สำเร็จ เพราะเราไม่ทราบผลการตัดสินของเว็บไซต์ สำหรับประเภทการจดจำภาพ หากคลิกผิดสามารถรายงานเพื่อขอคืนพอยต์หลังรายงานได้ ดูรายละเอียดที่ [การคิดค่าบริการและการคืนพอยต์](https://docs.yescaptcha.com/th/getting-started/billing.md) ## การจดจำหนึ่งครั้งราคาเท่าไร? หักพอยต์คงที่ตามประเภทงาน 1,000 พอยต์ = ¥1 และแต่ละประเภทมีราคาต่างกัน ดูราคาทั้งหมดได้ที่ [ประเภทงานและราคา](https://docs.yescaptcha.com/th/tasks.md) ส่วนเวอร์ชันที่เครื่องอ่านได้อยู่ที่ [/data/task-types.json](https://docs.yescaptcha.com/data/task-types.json) ## token ใช้ได้นานเท่าไร? token ของ reCAPTCHA, hCaptcha และ Turnstile ใช้ได้ครั้งเดียว token ของ reCAPTCHA ใช้ได้ประมาณ 120 วินาที แนะนำให้ส่งภายใน 60 วินาทีหลังได้รับ ระยะเวลาที่ใช้ได้ถูกกำหนดโดยผู้ให้บริการ CAPTCHA ## ทำไม token ที่ได้บางครั้งจึงไม่ผ่าน? เว็บไซต์ปลายทางเป็นผู้ตัดสินว่า token ผ่านหรือไม่ โดยพิจารณาจากคะแนน (score) IP สภาพแวดล้อมของเบราว์เซอร์ และปัจจัยอื่น ๆ และเกณฑ์อาจเปลี่ยนได้ทุกเมื่อ อัตราผ่านจึงต่างกันไปตามเว็บไซต์ คุณสามารถลองเปรียบเทียบกับประเภทงานอื่นของ CAPTCHA แบบเดียวกัน ใช้ประเภทที่ใช้พร็อกซีของคุณเองและส่งผ่านพร็อกซีเดียวกันตอนส่ง หรือเปลี่ยนไปใช้การจดจำภาพแล้วคลิกจริงในเบราว์เซอร์ ## การจดจำใช้เวลานานเท่าไร? งานแบบอะซิงโครนัสมักใช้เวลาตั้งแต่ไม่กี่วินาทีถึงหลายสิบวินาที นานสุดประมาณ 110 วินาที (บางประเภท 180 ถึง 220 วินาที) หากหมดเวลาจะคืนพอยต์อัตโนมัติ ส่วนการจดจำภาพและการจดจำตัวอักษร-ตัวเลขจากภาพเป็นแบบซิงโครนัส ได้ผลลัพธ์ในคำขอเดียว ## จดจำโดยคนหรือเครื่อง? โดยเครื่อง ใช้โมเดลแมชชีนเลิร์นนิง ## การใช้ YesCaptcha ทำให้บัญชีถูกแบนหรือไม่? เราคืนเฉพาะผลการจดจำและไม่เข้าถึงบัญชีของคุณบนเว็บไซต์ปลายทาง การที่เว็บไซต์ตัดสินอย่างไรและจะแบนบัญชีหรือไม่ขึ้นอยู่กับเว็บไซต์นั้นเอง โปรดปฏิบัติตามกฎของเว็บไซต์ปลายทาง YesCaptcha ใช้ได้เฉพาะวัตถุประสงค์ที่ถูกกฎหมาย และห้ามใช้ในทางที่ผิดกฎหมาย ## ClientKey เดียวใช้พร้อมกันในหลายโปรแกรมหรือหลายเบราว์เซอร์ได้หรือไม่? ได้ คำขอภายใต้บัญชีเดียวกันจะนับรวมใน[ขีดจำกัดงานพร้อมกัน](https://docs.yescaptcha.com/th/api/rate-limits.md) และใช้ยอดคงเหลือร่วมกัน ## ควรใช้ endpoint ทั่วโลกหรือ endpoint จีน? หากเซิร์ฟเวอร์อยู่ในจีนแผ่นดินใหญ่ให้ใช้ `cn.yescaptcha.com` ส่วนภูมิภาคอื่นใช้ `api.yescaptcha.com` สร้างงานที่ endpoint ใด ให้ตรวจสอบผลลัพธ์ที่ endpoint นั้น ดู [ที่อยู่สำหรับเชื่อมต่อ](https://docs.yescaptcha.com/th/getting-started/endpoints.md) ## ส่วนขยายเบราว์เซอร์กับ API ต่างกันอย่างไร? ส่วนขยายเรียกใช้ API ชุดเดียวกันในการจดจำ ติดตั้งฟรี และหักพอยต์ตาม API ที่ใช้ เหมาะสำหรับใช้งานในเบราว์เซอร์โดยไม่ต้องเขียนโค้ด ส่วน API เหมาะสำหรับประมวลผลจำนวนมากในโปรแกรม ดู [ส่วนขยายเบราว์เซอร์](https://docs.yescaptcha.com/th/extension.md) ## ทำไมจึงถูกหยุดชั่วคราวและได้รับ ERROR\_IP\_BLOCKED\_5MIN? ClientKey เดียวกันสร้างคำขอที่เกิดข้อผิดพลาดมากเกินไปภายในหนึ่งนาที จึงถูกหยุดชั่วคราวอัตโนมัติไม่กี่นาที และจะกลับมาใช้ได้เองเมื่อครบกำหนด `blockReason` ในการตอบกลับคือรหัสข้อผิดพลาดที่ทำให้ถูกหยุดชั่วคราว ให้แก้โปรแกรมตามรหัสนั้น ดู [ขีดจำกัดงานพร้อมกันและการหยุดชั่วคราวอัตโนมัติ](https://docs.yescaptcha.com/th/api/rate-limits.md) ## รองรับเว็บไซต์ใดบ้าง? เราให้บริการจดจำตามประเภท CAPTCHA ไม่ได้เจาะจงเว็บไซต์ใดเว็บไซต์หนึ่ง การผ่านหรือไม่ขึ้นอยู่กับการตั้งค่าของเว็บไซต์ปลายทาง แนะนำให้ทดสอบจำนวนน้อยก่อน หากเว็บไซต์ใดยังไม่รองรับ จะคืน `ERROR_DOMAIN_NOT_ALLOWED` --- # ปัญหาการเชื่อมต่อและเครือข่าย > เชื่อมต่อ YesCaptcha API ไม่ได้ต้องทำอย่างไร ขั้นตอนตรวจสอบ Failed to establish a new connection, DNS ล้มเหลว, ซอฟต์แวร์พร็อกซีรบกวน และข้อผิดพลาดใบรับรอง SSL (Certificate has expired, SSLEOFError) Source: https://docs.yescaptcha.com/th/help/troubleshooting/ · 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/help/troubleshooting/ เมื่อเรียก API แล้วเกิดข้อผิดพลาดการเชื่อมต่อ (เช่น `Failed to establish a new connection`, `getaddrinfo failed`, หมดเวลา หรือข้อผิดพลาด SSL) ส่วนใหญ่เกิดจากเครือข่ายของเครื่อง, DNS หรือซอฟต์แวร์พร็อกซี ให้ตรวจสอบตามลำดับด้านล่าง ## 1\. ลองเปลี่ยน endpoint ก่อน YesCaptcha มีสอง endpoint: `https://api.yescaptcha.com` (endpoint ทั่วโลก) และ `https://cn.yescaptcha.com` (endpoint จีน) เซิร์ฟเวอร์ในจีนแผ่นดินใหญ่ให้ใช้ endpoint จีน ส่วนภูมิภาคอื่นใช้ endpoint ทั่วโลก หลังเปลี่ยน endpoint แล้ว ให้ตรวจสอบผลลัพธ์ที่ endpoint เดียวกันด้วย ```bash curl -s https://api.yescaptcha.com/getBalance -H 'Content-Type: application/json' -d '{"clientKey": "YOUR_CLIENT_KEY"}' curl -s https://cn.yescaptcha.com/getBalance -H 'Content-Type: application/json' -d '{"clientKey": "YOUR_CLIENT_KEY"}' ``` หากมีอย่างใดอย่างหนึ่งคืนค่า JSON แสดงว่าเครือข่ายใช้งานได้ ปัญหาอยู่ที่เส้นทางเชื่อมต่อไปยังอีก endpoint หนึ่ง ## 2\. ตรวจสอบซอฟต์แวร์พร็อกซี การเข้าถึง YesCaptcha ไม่จำเป็นต้องใช้พร็อกซี หากเครื่องเปิดซอฟต์แวร์พร็อกซีหรือ VPN อยู่: - ปิดก่อนแล้วลองใหม่; - หากจำเป็นต้องเปิดไว้ ให้เปลี่ยนเป็นโหมดแยกตามกฎ (โหมด PAC) แทนโหมดทั้งหมด หรือเพิ่ม `api.yescaptcha.com` และ `cn.yescaptcha.com` ในรายการเชื่อมต่อโดยตรง; - หาก Python แสดง `SSLEOFError(8, 'EOF occurred in violation of protocol')` ขณะเปิดพร็อกซีอยู่ ส่วนใหญ่เกิดจากพร็อกซีเช่นกัน ให้ปิดพร็อกซีหรือให้สองโดเมนนี้เชื่อมต่อโดยตรง ## 3\. ตรวจสอบเครือข่ายและ DNS ```bash ping api.yescaptcha.com ``` - หากแจ้งว่าไม่พบโฮสต์: DNS ล้มเหลว ให้ล้างแคช DNS (Windows: `ipconfig /flushdns`; macOS: `sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder`) หรือเปลี่ยน DNS ของเครื่องเป็น DNS สาธารณะ (เช่น `223.5.5.5`, `119.29.29.29`, `8.8.8.8`) แล้วลองใหม่ - หาก ping ไม่ผ่านแต่แปลงเป็นที่อยู่ได้: เครือข่ายอาจบล็อก ICMP ซึ่งไม่ได้หมายความว่า API เชื่อมต่อไม่ได้ ให้ยึดผล curl ในขั้นตอนที่ 1 เป็นหลัก ## 4\. ข้อผิดพลาดใบรับรอง SSL - หากแสดง `Certificate has expired` หรือ `certificate verify failed`: ตรวจสอบก่อนว่า**เวลาของระบบ**ถูกต้อง จากนั้นอัปเดตระบบปฏิบัติการ, `certifi` ของ Python, Postman และเครื่องมืออื่นเป็นเวอร์ชันล่าสุด เพื่อให้มีใบรับรองรากล่าสุด - ใช้ `https://` เสมอ อย่าเปลี่ยนไปใช้ `http://` หรือปิดการตรวจสอบใบรับรองเพื่อหลีกเลี่ยงข้อผิดพลาด ## 5\. ยังแก้ไม่ได้ [ติดต่อฝ่ายสนับสนุน](https://docs.yescaptcha.com/th/help/contact.md) พร้อมแนบ: ข้อความข้อผิดพลาดฉบับเต็ม, endpoint ที่ใช้, ภูมิภาคที่เซิร์ฟเวอร์ตั้งอยู่ และผลลัพธ์ curl จากขั้นตอนที่ 1 --- # ติดต่อเรา > ติดต่อฝ่ายสนับสนุน YesCaptcha ผ่าน WeChat, QQ, WhatsApp, LINE, Telegram @yescaptcha_official หรืออีเมล yescaptcha@gmail.com เวลาให้บริการ 9:00–21:00 UTC+8 Source: https://docs.yescaptcha.com/th/help/contact/ · 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/help/contact/ เวลาให้บริการของฝ่ายสนับสนุน YesCaptcha คือ **9:00–21:00 UTC+8** (เวลาปักกิ่ง) หากตอบกลับช้า กรุณาฝากข้อความไว้ เราจะดำเนินการโดยเร็วที่สุด - อีเมล: [yescaptcha@gmail.com](mailto:yescaptcha@gmail.com) - Telegram: [@yescaptcha\_official](https://t.me/yescaptcha_official) สแกนเพื่อเพิ่มเพื่อน: ![WeChat QR code](https://docs.yescaptcha.com/_astro/wechat.0S3mrXSw_23wIJJ.webp) **WeChat**สแกนด้วย WeChat เพื่อเพิ่มเพื่อน และเราสามารถเชิญคุณเข้ากลุ่มผู้ใช้ได้ ![QQ QR code](https://docs.yescaptcha.com/_astro/qq.BgQtfUc8_1c2tQ5.webp) **QQ**สแกนด้วย QQ เพื่อเพิ่มเพื่อน ![WhatsApp QR code](https://docs.yescaptcha.com/_astro/whatsapp.DmFyivnb_Z13FQrc.webp) **WhatsApp**สแกนด้วยกล้องใน WhatsApp เพื่อเพิ่มเพื่อน ![LINE QR code](https://docs.yescaptcha.com/_astro/line.ANS_EG-W_ZpyibU.webp) **LINE**สแกนจากเมนู "เพิ่มเพื่อน" ใน LINE ![Telegram QR code](https://docs.yescaptcha.com/_astro/telegram.Dadv3iCz_ZgTd7t.webp) **[Telegram](https://t.me/yescaptcha_official)**@yescaptcha\_official เมื่อติดต่อ กรุณาแนบข้อมูลต่อไปนี้: - อีเมลบัญชีหรือ ID ผู้ใช้ของคุณ (**ห้าม**ส่ง `clientKey`); - `taskId` รหัสข้อผิดพลาด และเวลาที่เกิดขึ้น; - ประเภทงานและ endpoint ที่ใช้ (`api.yescaptcha.com` หรือ `cn.yescaptcha.com`) คำถามจำนวนมากสามารถหาคำตอบได้ใน [คำถามที่พบบ่อย](https://docs.yescaptcha.com/th/help/faq.md), [รหัสข้อผิดพลาด](https://docs.yescaptcha.com/th/api/errors.md) และ [ปัญหาการเชื่อมต่อและเครือข่าย](https://docs.yescaptcha.com/th/help/troubleshooting.md) --- # บันทึกการอัปเดตบริการ > การเปลี่ยนแปลงของ YesCaptcha ที่มีผลต่อผู้ใช้ เรียงตามวันที่ ได้แก่ ประเภทงานที่เปิดและปิดให้บริการ กฎการคิดพอยต์และการคืนพอยต์ ขีดจำกัดงานพร้อมกัน และการย้ายเอกสาร เริ่มบันทึกตั้งแต่ 2026-10 Source: https://docs.yescaptcha.com/th/changelog/ · Last verified: 2026-10-19 > This page was machine-translated from the Chinese version. If anything differs, the Chinese version prevails: https://docs.yescaptcha.com/zh/changelog/ หน้านี้บันทึกการเปลี่ยนแปลงที่มีผลต่อผู้ใช้ เรียงตามวันที่ เช่น การเปิดและปิดให้บริการประเภทงาน กฎการคิดพอยต์ กฎการจำกัดอัตราการเรียก โดยรายการล่าสุดอยู่ด้านบน ## 2026-10-19 - **หน้าตรวจสอบของ Cloudflare ไม่ถูกระบุว่า “ไม่แนะนำ” อีกต่อไป**: บริการเบื้องหลัง `CloudFlareTaskS2` และ `CloudFlareTaskS3` ถูกสร้างใหม่ โดยทั่วไปแต่ละงานใช้เวลา 6 ถึง 35 วินาที ทั้งสองประเภทมีพารามิเตอร์ ผลลัพธ์ และประสิทธิภาพเหมือนกัน ราคาไม่เปลี่ยน (25 พอยต์ และ 20 พอยต์) พร็อกซีรองรับเฉพาะ `http://` (ใส่ชื่อผู้ใช้และรหัสผ่านได้) และ `socks5://` ที่ไม่มีชื่อผู้ใช้และรหัสผ่าน ส่วนพร็อกซี `https://` รวมถึงที่อยู่เครื่องตนเองและที่อยู่ในเครือข่ายภายในจะถูกปฏิเสธตั้งแต่ตอนสร้างงาน (ไม่หักพอยต์) `userAgent` จะใช้เฉพาะ Chrome เวอร์ชันเดสก์ท็อปบน Linux เท่านั้น คำขอถัดไปให้ใช้ `user_agent` จากผลลัพธ์ หากส่ง `requiredCookies` มา งานจะสำเร็จก็ต่อเมื่อได้ครบทุกรายการ ดู [หน้าตรวจสอบของ Cloudflare](https://docs.yescaptcha.com/th/tasks/cloudflare-challenge.md) ## 2026-10-16 - **ประเภท token ของ FunCaptcha ยังไม่แนะนำให้ใช้ในขณะนี้**: ต้นทุนสูงและยังไม่มีวิธีที่เสถียร `FunCaptchaTask` ปรับเป็น 30 พอยต์ต่องาน (เดิม 15 พอยต์) ส่วน `FunCaptchaTaskProxyless` ยังคงแก้ไม่สำเร็จ งานที่ล้มเหลวจะคืนพอยต์อัตโนมัติ หากต้องผ่าน FunCaptcha แนะนำให้ใช้ [การจดจำภาพ FunCaptcha](https://docs.yescaptcha.com/th/tasks/funcaptcha-classification.md) หรือส่วนขยายเบราว์เซอร์ ## 2026-10-15 - **ย้ายเอกสาร**: เอกสารย้ายจาก Confluence มาที่เว็บไซต์นี้ (docs.yescaptcha.com) มีภาษาจีนและภาษาอังกฤษ โดยยึดภาษาจีนเป็นหลัก มี [llms.txt](https://docs.yescaptcha.com/llms.txt), [OpenAPI](https://docs.yescaptcha.com/openapi.json) และเวอร์ชัน Markdown ของทุกหน้า เพื่อให้ AI และโปรแกรมอ่านได้สะดวก - **การคืนพอยต์หลังรายงานเปลี่ยนเป็นสรุปผลหลังผ่านไปประมาณ 24 ชั่วโมง**: เมื่อรายงานว่าประเภทการจดจำภาพให้ผลผิด ระบบจะไม่คืนพอยต์ทันทีอีกต่อไป แต่จะสรุปผลรวมหลังผ่านไปประมาณ 24 ชั่วโมง หากอัตราความล้มเหลวของคุณสูงกว่าผู้ใช้อื่นในช่วงเวลาเดียวกันอย่างชัดเจน จะคืนพอยต์ตามอัตราความล้มเหลวของช่วงเวลานั้น ดู [การคิดพอยต์และการคืนพอยต์](https://docs.yescaptcha.com/th/getting-started/billing.md) - **ขีดจำกัดงานพร้อมกัน**: เริ่มนับจำนวนงานที่กำลังประมวลผลพร้อมกันแยกตามบัญชีและประเภทงาน เมื่อเกินขีดจำกัดจะคืนค่า `ERROR_THREADS_MAXIMUM` โดยไม่หักพอยต์และไม่นับรวมในการหยุดชั่วคราวอัตโนมัติ เมื่อกำหนดโควตาของแต่ละประเภทแล้วจะประกาศใน [ขีดจำกัดงานพร้อมกันและการหยุดชั่วคราวอัตโนมัติ](https://docs.yescaptcha.com/th/api/rate-limits.md) - **เพิ่มประเภทงานที่เปิดเผยต่อสาธารณะ**: `HCaptchaTask`, `NoCaptchaTask`, `TurnstileTask`, `RecaptchaV2EnterpriseTask` (ใช้พร็อกซีของคุณเอง) รวมถึง `FunCaptchaTaskProxylessM1`, `FunCaptchaTask`, `HCaptchaTaskProxylessM1` เพิ่มลงในเอกสารแล้ว - **ประเภท token ของ FunCaptcha**: `FunCaptchaTaskProxylessM1` และ `FunCaptchaTask` ใช้งานได้ ส่วนเส้นทางของ `FunCaptchaTaskProxyless` แก้ไม่สำเร็จตั้งแต่ประมาณ 2026-09-10 งานที่ล้มเหลวจะคืนพอยต์อัตโนมัติ - **ปิดให้บริการ**: ชุด reCAPTCHA K1 ลายนิ้วมือแบบกำหนดเอง, `FunCaptchaTaskS1`, `CloudFlareTaskS1`, `TurnstileTaskS2`, `TurnstileTaskProxylessS2`, `bCaptcha2Classification` และ `GeneralClassification` หยุดให้บริการแล้ว ## ก่อน 2026-10-15 - บริการเช่า**เซิร์ฟเวอร์เฉพาะ**ด้วยตนเองปิดให้บริการแล้ว