ประเภทงาน
hCaptcha
หน้านี้แปลด้วยเครื่องจากเวอร์ชันภาษาจีน อาจมีข้อผิดพลาด โปรดยึดเวอร์ชันภาษาจีนเป็นหลัก
งาน hCaptcha จะคืนค่า token (gRecaptchaResponse) ส่ง token นี้ไปยังเว็บไซต์เป้าหมายพร้อมกับ userAgent ที่ได้รับกลับมา (และ respKey ในกรณีที่มี) ก็จะผ่านการตรวจสอบได้ HCaptchaTaskProxyless คิดงานละ 30 พอยต์ (≈ $4.50 / 1k) ส่วน HCaptchaTask ที่ใช้พร็อกซีของคุณเองคิดงานละ 15 พอยต์ (≈ $2.25 / 1k) ทั้งสองแบบเป็นแบบอะซิงโครนัส: เรียก createTask ก่อน แล้วเรียก getTaskResult ทุก 5 วินาที หากการจดจำล้มเหลวหรือหมดเวลา ระบบจะคืนพอยต์ให้อัตโนมัติ
https://api.yescaptcha.com/createTaskendpoint ทั่วโลกhttps://cn.yescaptcha.com/createTaskendpoint จีนเนื้อหาคำขอเป็น JSON และยืนยันตัวตนด้วย clientKey สร้างงานที่ endpoint ใด ให้ตรวจสอบผลลัพธ์ที่ endpoint เดียวกัน
กรณีที่ควรใช้
หัวข้อที่มีชื่อว่า “กรณีที่ควรใช้”หน้าเว็บมีช่องทำเครื่องหมาย “ฉันเป็นมนุษย์” ของ hCaptcha หรือมีโจทย์ภาพของ hCaptcha ปรากฏขึ้น หากต้องการรับ token ไปส่งโดยตรง ให้ใช้ประเภทงานในหน้านี้ หากต้องการคลิกภาพเองในเบราว์เซอร์ ให้ใช้ การจดจำภาพของ 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 ส่งกลับมาเท่านั้น rqdata: hCaptcha รุ่นองค์กร (เช่น เว็บไซต์โซเชียลและแชตบางแห่ง) จะต้องใช้ มักพบได้ในคำขอที่โหลด CAPTCHA เว็บไซต์ทั่วไปไม่ต้องส่ง
วิธีค้นหาพารามิเตอร์ ดูที่ ค้นหาพารามิเตอร์ของ hCaptcha
ตัวอย่างคำขอ
หัวข้อที่มีชื่อว่า “ตัวอย่างคำขอ”{ "clientKey": "YOUR_CLIENT_KEY", "task": { "type": "HCaptchaTaskProxyless", "websiteURL": "https://accounts.hcaptcha.com/demo", "websiteKey": "a5f74b19-9e45-40e0-b45d-47ff91b7a6c2" }}curl -s https://api.yescaptcha.com/createTask \ -H 'Content-Type: application/json' \ -d '{ "clientKey": "YOUR_CLIENT_KEY", "task": { "type": "HCaptchaTaskProxyless", "websiteURL": "https://accounts.hcaptcha.com/demo", "websiteKey": "a5f74b19-9e45-40e0-b45d-47ff91b7a6c2" }}'
# Returns {"errorId":0,"taskId":"..."}; then poll every 5 seconds:curl -s https://api.yescaptcha.com/getTaskResult \ -H 'Content-Type: application/json' \ -d '{"clientKey": "YOUR_CLIENT_KEY", "taskId": "TASK_ID"}'import osimport time
import requests
API = "https://api.yescaptcha.com"CLIENT_KEY = os.environ["YESCAPTCHA_CLIENT_KEY"] # Read the clientKey from an environment variable
def call(method, payload): r = requests.post(f"{API}/{method}", json={"clientKey": CLIENT_KEY, **payload}, timeout=30) data = r.json() if data.get("errorId"): raise RuntimeError(f"{data.get('errorCode')}: {data.get('errorDescription')}") return data
def solve(task): task_id = call("createTask", {"task": task})["taskId"] for _ in range(36): # Poll every 5 seconds, for up to about 3 minutes time.sleep(5) result = call("getTaskResult", {"taskId": task_id}) if result.get("status") == "ready": return result["solution"] raise TimeoutError(task_id)
solution = solve({ "type": "HCaptchaTaskProxyless", "websiteURL": "https://accounts.hcaptcha.com/demo", "websiteKey": "a5f74b19-9e45-40e0-b45d-47ff91b7a6c2",})print(solution["gRecaptchaResponse"])const API = 'https://api.yescaptcha.com';const CLIENT_KEY = process.env.YESCAPTCHA_CLIENT_KEY; // Read the clientKey from an environment variable
async function call(method, payload) { const res = await fetch(`${API}/${method}`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ clientKey: CLIENT_KEY, ...payload }), }); const data = await res.json(); if (data.errorId) throw new Error(`${data.errorCode}: ${data.errorDescription}`); return data;}
async function solve(task) { const { taskId } = await call('createTask', { task }); for (let i = 0; i < 36; i++) { // Poll every 5 seconds, for up to about 3 minutes await new Promise((r) => setTimeout(r, 5000)); const result = await call('getTaskResult', { taskId }); if (result.status === 'ready') return result.solution; } throw new Error(`timeout: ${taskId}`);}
const solution = await solve({ type: "HCaptchaTaskProxyless", websiteURL: "https://accounts.hcaptcha.com/demo", websiteKey: "a5f74b19-9e45-40e0-b45d-47ff91b7a6c2",});console.log(solution.gRecaptchaResponse);ใช้พร็อกซีของคุณเอง:
{ "clientKey": "YOUR_CLIENT_KEY", "task": { "type": "HCaptchaTask", "websiteURL": "https://accounts.hcaptcha.com/demo", "websiteKey": "a5f74b19-9e45-40e0-b45d-47ff91b7a6c2", "proxyType": "http", "proxyAddress": "proxy.example.com", "proxyPort": 8080, "proxyLogin": "user", "proxyPassword": "pass" }}ผลลัพธ์
หัวข้อที่มีชื่อว่า “ผลลัพธ์”{ "errorId": 0, "status": "ready", "solution": { "gRecaptchaResponse": "P1_eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9...", "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/155.0.0.0 Safari/537.36", "respKey": "E0_eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9..." }}| ฟิลด์ | ประเภท | คำอธิบาย |
|---|---|---|
gRecaptchaResponse | string | token ที่ได้ ใช้ส่งให้เว็บไซต์เป้าหมาย ใช้ได้ครั้งเดียว มีผลประมาณ 120 วินาที แนะนำให้ใช้ภายใน 60 วินาที |
userAgent | string | User-Agent ที่ใช้ในการสร้าง token ให้ใช้ค่านี้เมื่อส่ง token แม้จะต่างจากค่าที่คุณส่งมา |
respKey | string | ค่าที่บางเว็บไซต์ต้องการให้ส่งพร้อมกับ token หากมีให้ส่งไปด้วย |
เมื่อส่งข้อมูล:
- ใส่ token ลงในฟิลด์
h-captcha-responseของหน้าเว็บ (และg-recaptcha-responseหากมี) หรือใส่ในฟิลด์ที่ API ของเว็บไซต์เป้าหมายกำหนด - ตอนส่งคำขอ ให้ใช้
userAgentที่ส่งกลับมาเป็น User-Agent - หากมี
respKeyส่งกลับมา ให้ส่งไปด้วยตามที่เว็บไซต์กำหนด
ขณะที่งานกำลังประมวลผลจะได้รับ {"errorId": 0, "status": "processing"} ให้ตรวจสอบอีกครั้งหลังผ่านไป 5 วินาที หากเกิดข้อผิดพลาด ให้จัดการตาม errorCode ดูที่ รหัสข้อผิดพลาด
คำถามที่พบบ่อย
หัวข้อที่มีชื่อว่า “คำถามที่พบบ่อย”ทำไมอัตราการผ่านจึงไม่คงที่?
หัวข้อที่มีชื่อว่า “ทำไมอัตราการผ่านจึงไม่คงที่?”hCaptcha ตัดสินจากการตั้งค่าของเว็บไซต์ IP ที่เข้าใช้งาน และสภาพแวดล้อมของเบราว์เซอร์ อัตราการผ่านจึงต่างกันไปตามเว็บไซต์ ตรวจสอบว่าใช้ userAgent ที่ส่งกลับมา สำหรับเว็บไซต์ที่ไวต่อ IP ให้ใช้ HCaptchaTask ที่ใช้พร็อกซีของคุณเอง และส่งข้อมูลผ่านพร็อกซีเดียวกันด้วย หรือจะลองเปลี่ยนเป็น HCaptchaTaskProxylessM1 เพื่อเปรียบเทียบก็ได้
token มีอายุนานเท่าไร?
หัวข้อที่มีชื่อว่า “token มีอายุนานเท่าไร?”ใช้ได้ครั้งเดียว และมีอายุประมาณ 120 วินาที ขอแนะนำให้ส่งโดยเร็วที่สุดหลังได้รับ