ประเภทงาน
reCAPTCHA v2
หน้านี้แปลด้วยเครื่องจากเวอร์ชันภาษาจีน อาจมีข้อผิดพลาด โปรดยึดเวอร์ชันภาษาจีนเป็นหลัก
งาน reCAPTCHA v2 จะคืนค่า token (gRecaptchaResponse) ซึ่งคุณนำไปส่งให้เว็บไซต์ปลายทางเพื่อผ่านการตรวจสอบได้เลยโดยไม่ต้องคลิกรูปภาพ ประเภท NoCaptchaTaskProxyless ที่ใช้บ่อยที่สุดมีราคา 15 พอยต์ (≈ $2.25 / 1k) ต่องาน และทำงานแบบอะซิงโครนัส: เรียก createTask เพื่อสร้างงานก่อน แล้วเรียก getTaskResult ทุก 5 วินาทีเพื่อรับผลลัพธ์ งานที่แก้ไม่สำเร็จหรือหมดเวลาจะคืนพอยต์โดยอัตโนมัติ
https://api.yescaptcha.com/createTaskendpoint ทั่วโลกhttps://cn.yescaptcha.com/createTaskendpoint จีนเนื้อหาคำขอเป็น JSON และใช้ clientKey (ClientKey ของบัญชี คัดลอกได้จากแดชบอร์ดที่ yescaptcha.com) ในการยืนยันตัวตน สร้างงานที่ endpoint ใด ให้ตรวจสอบผลลัพธ์ที่ endpoint เดียวกัน
กรณีที่ใช้
หัวข้อที่มีชื่อว่า “กรณีที่ใช้”- หน้าเว็บมีช่องทำเครื่องหมาย “ฉันไม่ใช่โปรแกรมอัตโนมัติ” (I’m not a robot): แบบมีช่องทำเครื่องหมาย
- ไม่มีช่องทำเครื่องหมาย และมีโจทย์รูปภาพปรากฏขึ้นหลังจากคลิกปุ่มส่งเท่านั้น: แบบ invisible ให้เพิ่ม
"isInvisible": true - หน้าเว็บโหลด
recaptcha/enterprise.jsหรือ URL ของคำขอมีคำว่าenterprise: แบบ Enterprise ให้ใช้ประเภทที่มีคำว่าEnterpriseในชื่อ
หากไม่แน่ใจว่าเป็นแบบใด ดู การระบุประเภท CAPTCHA หาก token ผ่านได้ไม่ดีนัก ลองใช้ การจดจำภาพ reCAPTCHA v2 แทน: 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
ตัวอย่างคำขอ
หัวข้อที่มีชื่อว่า “ตัวอย่างคำขอ”ใช้หน้าเดโมอย่างเป็นทางการของ Google เป็นตัวอย่าง:
{ "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 -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"}'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": "NoCaptchaTaskProxyless", "websiteURL": "https://www.google.com/recaptcha/api2/demo", "websiteKey": "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-",})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: "NoCaptchaTaskProxyless", websiteURL: "https://www.google.com/recaptcha/api2/demo", websiteKey: "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-",});console.log(solution.gRecaptchaResponse);กรณีแบบ Enterprise ที่หน้าเว็บส่งค่า s ให้ reCAPTCHA ให้ใส่ค่านั้นใน enterprisePayload:
{ "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" } }}ใช้พร็อกซีของคุณเอง:
{ "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 งาน:
{ "errorId": 0, "taskId": "61138bb6-19fb-11ec-a9c8-0242ac110006"}นำ ID นี้ไปเรียก getTaskResult ระหว่างที่งานยังประมวลผลอยู่จะได้ {"errorId": 0, "status": "processing"} ให้ตรวจสอบอีกครั้งหลังจาก 5 วินาที เมื่อเสร็จสมบูรณ์จะได้:
{ "errorId": 0, "status": "ready", "solution": { "gRecaptchaResponse": "03AGdBq25SxXT-pmSeBXjzScW-EiocHwwpwqtk1QXlJnGnU..." }}| ฟิลด์ | ประเภท | คำอธิบาย |
|---|---|---|
gRecaptchaResponse | string | token ที่ได้ ใช้ส่งให้เว็บไซต์เป้าหมาย ใช้ได้ครั้งเดียว มีผลประมาณ 120 วินาที แนะนำให้ใช้ภายใน 60 วินาที |
งานประมวลผลนานสุดประมาณ 110 วินาที หากเกินเวลาจะคืน ERROR_TASK_TIMEOUT และคืนพอยต์ เมื่อเกิดข้อผิดพลาด errorId จะเป็น 1 ให้จัดการตาม errorCode ดู รหัสข้อผิดพลาด วิธีส่ง token หลังจากได้รับแล้ว ดู การใช้ token เพื่อผ่าน reCAPTCHA
คำถามที่พบบ่อย
หัวข้อที่มีชื่อว่า “คำถามที่พบบ่อย”ทำไม token ของเว็บไซต์เดียวกันจึงผ่านบ้างไม่ผ่านบ้าง?
หัวข้อที่มีชื่อว่า “ทำไม token ของเว็บไซต์เดียวกันจึงผ่านบ้างไม่ผ่านบ้าง?”เว็บไซต์ปลายทางเป็นผู้ตัดสิน เว็บไซต์จะให้คะแนนการตรวจสอบแต่ละครั้งและกำหนดเกณฑ์ ซึ่งอาจเปลี่ยนแปลงได้ตลอดเวลา อัตราการผ่านจึงต่างกันไปตามเว็บไซต์ และไม่ใช่ทุก token ที่จะผ่าน คุณสามารถลองเปรียบเทียบอัตราการผ่านกับประเภทงานอื่นของ CAPTCHA แบบเดียวกัน หรือเปลี่ยนไปใช้ การจดจำภาพ
token มีอายุนานเท่าใด?
หัวข้อที่มีชื่อว่า “token มีอายุนานเท่าใด?”ใช้ได้ครั้งเดียวและมีอายุประมาณ 120 วินาที แนะนำให้ส่งภายใน 60 วินาทีหลังจากได้รับ อายุของ token กำหนดโดย Google
หากแก้ไม่สำเร็จจะถูกหักพอยต์หรือไม่?
หัวข้อที่มีชื่อว่า “หากแก้ไม่สำเร็จจะถูกหักพอยต์หรือไม่?”ไม่ถูกหัก งานที่คืน ERROR_CAPTCHA_UNSOLVABLE หรือหมดเวลาจะคืนพอยต์โดยอัตโนมัติ ดู การคิดราคาและการคืนพอยต์