TikTok Captcha
ภาพรวม
TikTok Captcha เป็นระบบตรวจสอบที่ TikTok ใช้เพื่อปกป้องแพลตฟอร์มจากบอทและสแปม แคปช่านี้มักจะปรากฏขึ้นเมื่อลงทะเบียนบัญชีใหม่ เข้าสู่ระบบ หรือเมื่อตรวจพบกิจกรรมที่ผิดปกติ
ปัจจุบันมีส่วนขยายสำหรับแคปช่าทั้ง 4 ประเภทบนเบราว์เซอร์ โปรด inbox หา admin เพื่อรับส่วนขยาย ให้บริการแคปช่าทุกประเภทสำหรับเบราว์เซอร์ อีมูเลเตอร์ และโทรศัพท์

1. สร้างงาน
คำขอ
POST https://api.achicaptcha.com/createTask
พารามิเตอร์
| พารามิเตอร์ | ชนิดข้อมูล | จำเป็น? | คำอธิบาย |
|---|---|---|---|
clientKey | string | ใช่ | คีย์ API |
task.type | string | ใช่ | TiktokCaptchaTask |
task.image | string | ใช่ | Base64 ของรูปภาพ |
task.subType | int | ใช่ | ประเภทแคปช่า: 0 (Rotate captcha บนเบราว์เซอร์), 1 (Slider captcha), 2 (เลือกวัตถุที่เหมือนกัน 2 ชิ้น), 3 (Rotate captcha บนโทรศัพท์, อีมูเลเตอร์), 5 (เลือกวัตถุที่ตรงกับคำถาม) |
task.other | string | ไม่ | สำหรับ subType 5 ฟิลด์นี้จำเป็น คำถามแคปช่า เช่น: "Which of these objects neighs" |
ตัวอย่างคำขอ
POST /createTask HTTP/1.1
Host: api.achicaptcha.com
Content-Type: application/json
{
"clientKey": "YOUR_API_KEY",
"task": {
"type": "TiktokCaptchaTask",
"image": "/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/2wBDAQMEBAUEBQkFBQkUDQsNFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT/wAARCADUAVQDAREAAhEBAxEB/8QAHQABAQACAwEBAQAAAAAAAAAAAAECBwQFBgMICf/EAEEQAAEDAgQDBQcDAgMGBwAAAAEAAgMEEQUGITESQVEHE2FxgRQiMkKRobEVI1LB0WJy4QgWJDND8Bc0U2OSovH/xAAbAQEBAAMBAQEAAAAAAAAAAAAAAQIFBgQDB//EADQRAQACAgEDAwEGBQQCAwAAAAABAgMRBBIhMQUTQVEGIjJhkbFCcYGh0RQjwfAzQ1KS4f/aAAwDAQACEQMRAD8A/poBp1WLIQEBFOaIckD7FAQVBNQgoQOiBdAQEUCIpQEUuiCANEBBbaoCBugBA+yBfVAvsgo+6BeyAgX8UC6CXRS/VEW6BdBLoCAgc0DVB80FughQXl1QDugIHJFEQGiAUAIAQN0BFXZVDYXUHziqYagXiljlHVjg78LKazHiFlmJjxD6WIWKCoXCgEoKil0Q2QCgc0AICAgXQUHZAugiAgt0EQEFv4IJdAQEC/NBQg+aBrdAQB0QLoLv5oJ1QVBEFGqCIKqJyUFVC6Dx3avmKXLuTZ5YbtkqHim4xuwOvcjxsCPVe7hYoy5oi3iO738LFGbNEW8R3fnyDF2REGOZ8J5FpI/C7CemfLrpiJ8w7iizxi1LpT4zUsA5d8T9ivhbj4L+aw+FuPht5pDvKPtYzJT2/45lQOksTXfgBee3p/Ht/Dp5ren8e38Onc0vbhisdhUUNLOOrS5h/JXmt6Vin8Nph57el45/DaYbRypjc+YsEhxCej9i765ZHx8V28nbc1oeRijDkmlZ3pos+OMWSaRO9O3BsvM85ugIGyATqgqASgl0FIQLoF7IH5QL6IJ4oKgfhA8kEQW90C6CIKCUVgiCBdAQEAoJ5oKCgKhyQAgKBdULoBQefzxlCLO2C/p01S+laJWyiRjQ43AOlj5r08fPPHv1xG3q4+eePfriNtYVn+ztVtuaTGYZOgnhLfwStvX1Sv8VW3r6pX+KjoqzsKzPTXMTKWqH/7c1if8A5AL0V9RwT53D019SwT53Dy2PZRxfKpi/U6N9J3pIjJcCHW3tYr2Ys+PN/wAL+Jpt55K9s+lU12tL2T6VTXa0vc5S7ScNzVIKf3qKut/5eU34v8p5/lani8PJx+89...(10460 chars omitted)...V7Q4rk8i3IvOS/eZexY2wFyvTDXyzAWT5qNlUXkiKiAJVRdUYlkBFEQQRQEC2yAghRCyCWQSyBZAsgWQW1kCyCoCCoqIqoFkVCiCKXVC3ooCKKKxIRkhCxZw+Zj8FjMPpFmJjHRYdL69ad0OidK+5LIM1V6WM3fQBZRD5TbagWWbCZZKsVRiqqCIIindVil0UJQEQ5XRV5oiHZA3sgKBzRBFSyIHS6AgWRQa3RCyAgHZFUahA5ofAdkVLoKgnOyKE6KgoBQUDVGSE2CBYWUVjyRU5qMtgAKCAAqKoGqErZVFCrHYAqjIBRAKoiAqj//Z",
"subType": 2
}
}การตอบกลับ
เมื่อสำเร็จ เซิร์ฟเวอร์จะส่งคืน errorId = 0 และ taskId
{
"errorId": 0,
"taskId": "f2fc70d6-c76b-4fba-9480-205ac1fe9fb9"
}ตัวอย่างรูปภาพที่จะส่งไปยังเซิร์ฟเวอร์แก้แคปช่า
บนเบราว์เซอร์:
ฟิลด์ image = base64_outer_image|base64_inner_image


บนอีมูเลเตอร์, โทรศัพท์:
ฟิลด์ image คือ base64 ของ 1 รูปภาพ ที่ตัดมาให้เหลือเฉพาะส่วน rotate captcha (มีวงกลมทั้งสองวง สามารถมีพื้นที่ว่างที่ขอบได้ ความยาวขอบยืดหยุ่น)

2. รับผลลัพธ์
คำขอ
POST https://api.achicaptcha.com/getTaskResult
พารามิเตอร์
| พารามิเตอร์ | ชนิดข้อมูล | จำเป็น? | คำอธิบาย |
|---|---|---|---|
clientKey | string | ใช่ | คีย์ API จากเว็บไซต์ |
taskId | string | ใช่ | TaskId จากขั้นตอน (1) |
ตัวอย่างคำขอ
POST /getTaskResult HTTP/1.1
Host: api.achicaptcha.com
Content-Type: application/json
{
"clientKey": "Your API_KEY",
"taskId": "f2fc70d6-c76b-4fba-9480-205ac1fe9fb9"
}การตอบกลับ
{
"errorId": 0,
"status": "ready",
"solution": "x1,y1,x2,y2"
}ความหมายของการตอบกลับ
errorId = 0และstatus = ready: แก้ไขสำเร็จ อ่านผลลัพธ์ในsolutionerrorId = 1และstatus = processing: กำลังแก้แคปช่า รอ 1-2 วินาทีแล้วลองอีกครั้งerrorIdอื่นที่ไม่ใช่ 0 และ 1: ข้อผิดพลาดของระบบ ระบุรหัสข้อผิดพลาดและคำอธิบายsolution:- สำหรับ rotate captcha บนเบราว์เซอร์: ส่งคืนความยาวของระยะทางที่จะลากสไลเดอร์
- สำหรับ rotate captcha บนอีมูเลเตอร์, โทรศัพท์: ส่งคืนมุมหมุน ผู้ใช้คำนวณระยะทางลากโดยใช้สูตร: ระยะทางลาก = (L / 180) * solution (โดยที่ L คือระยะทางจากจุดเริ่มต้นถึงจุดสิ้นสุดของสไลเดอร์ วัดจากกึ่งกลางของสไลเดอร์)
- สำหรับ slider captcha: ส่งคืนพิกัดแกน x ที่จะลาก
- สำหรับ select 2 similar objects captcha: ส่งคืนคู่พิกัดที่จะคลิกบนรูปภาพ "x1,y1,x2,y2"
- สำหรับ select multiple objects that satisfy question captcha: ส่งคืนพิกัดที่จะคลิกบนรูปภาพ "x1,y1,x2,y2,x3,y3,..."
ตัวอย่างการรวมระบบ
import requests
import time
import base64
def solve_tiktok_captcha(image_base64, sub_type, question=None, api_key='YOUR_API_KEY'):
# Step 1: Create task
task = {
'type': 'TiktokCaptchaTask',
'image': image_base64,
'subType': sub_type
}
# If subType = 5, add other field (question)
if sub_type == 5 and question:
task['other'] = question
create_task_url = 'https://api.achicaptcha.com/createTask'
create_task_payload = {
'clientKey': api_key,
'task': task
}
response = requests.post(create_task_url, json=create_task_payload)
result = response.json()
if result['errorId'] != 0:
raise Exception(result.get('errorDescription', 'Unknown error'))
task_id = result['taskId']
# Step 2: Get result
get_result_url = 'https://api.achicaptcha.com/getTaskResult'
while True:
time.sleep(2) # Wait 2 seconds
get_result_payload = {
'clientKey': api_key,
'taskId': task_id
}
response = requests.post(get_result_url, json=get_result_payload)
result = response.json()
if result['errorId'] == 0 and result.get('status') == 'ready':
return result['solution']
if result['errorId'] == 1 and result.get('status') == 'processing':
# Continue waiting
continue
# Other errors
raise Exception(result.get('errorDescription', 'Unknown error'))
# Usage - Example with select 2 objects captcha (subType = 2)
with open('captcha_image.png', 'rb') as f:
image_base64 = base64.b64encode(f.read()).decode('utf-8')
sub_type = 2 # 0: Rotate browser, 1: Slider, 2: Select 2 objects, 3: Rotate phone, 5: Select by question
solution = solve_tiktok_captcha(image_base64, sub_type, api_key='YOUR_API_KEY')
print('TikTok captcha solution:', solution) # "x1,y1,x2,y2"รหัสข้อผิดพลาดทั่วไป
รหัสข้อผิดพลาดเมื่อสร้างงาน
| รหัสข้อผิดพลาด | คำอธิบาย | หมายเหตุ |
|---|---|---|
| 0 | success | สร้างงานสำเร็จ |
| 2 | missing required fields | ขาดฟิลด์ที่จำเป็น ตรวจสอบพารามิเตอร์ (image, subType) |
| 3 | task not supported | ไม่รองรับประเภทงาน |
| 4 | task creation failed | การสร้างงานล้มเหลว ลองใหม่อีกครั้งในภายหลัง |
| 5 | client key does not exist | ไม่มีคีย์ API ตรวจสอบคีย์ API ของคุณ |
| 6 | insufficient account balance | ยอดเงินในบัญชีไม่เพียงพอ เติมเครดิต |
รหัสข้อผิดพลาดเมื่อรับผลลัพธ์
| รหัสข้อผิดพลาด | คำอธิบาย | หมายเหตุ |
|---|---|---|
| 0 | success | สำเร็จ อ่านผลลัพธ์ในฟิลด์ solution |
| 1 | processing | กำลังประมวลผล รอ 1-2 วินาทีแล้วส่งคำขออีกครั้ง |
| 5 | client key does not exist | ไม่มีคีย์ API ตรวจสอบคีย์ API ของคุณ |
| 7 | task failed, please create a new task | งานล้มเหลว โปรดสร้างงานใหม่ |
| 8 | task ID does not exist | ไม่มี ID งานหรือหมดอายุแล้ว |
แนวทางปฏิบัติที่ดีที่สุด
เพื่อให้ได้ผลลัพธ์ที่ดีที่สุดเมื่อใช้ Achicaptcha API ให้ปฏิบัติตามหลักการเหล่านี้:
1. ระบุประเภท Captcha และ subType ที่ถูกต้อง
- TikTok ใช้แคปช่าหลายประเภท
- ตรวจจับประเภทของแคปช่าที่แสดงอยู่อย่างแม่นยำ
- ส่ง
subTypeที่ถูกต้องในคำขอ:0: Rotate captcha บนเบราว์เซอร์1: Slider captcha2: เลือกวัตถุที่เหมือนกัน 2 ชิ้น3: Rotate captcha บนโทรศัพท์, อีมูเลเตอร์5: เลือกวัตถุที่ตรงกับคำถาม (ต้องมีฟิลด์other)
2. จัดรูปแบบรูปภาพให้ถูกต้อง
- Rotate captcha บนเบราว์เซอร์: ส่ง
base64_outer_image|base64_inner_image - Rotate captcha บนโทรศัพท์/อีมูเลเตอร์: ส่ง base64 ของ 1 รูปภาพ (ที่มีเฉพาะส่วน rotate captcha)
- ประเภทอื่นๆ: ส่ง base64 ของรูปภาพที่เกี่ยวข้อง
- ตรวจสอบให้แน่ใจว่ารูปภาพถูกเข้ารหัสในรูปแบบ base64 ที่ถูกต้อง
3. จัดการผลลัพธ์อย่างเหมาะสม
- สำหรับ rotate captcha บนอีมูเลเตอร์/โทรศัพท์: คำนวณระยะทางลากโดยใช้สูตร: ระยะทางลาก = (L / 180) * solution
วัด L ตามตัวอย่างด้านบน: ความยาวสำหรับใช้คำนวณระยะทางลาก - สำหรับ เลือกวัตถุ captcha: แยกสตริงพิกัด "x1,y1,x2,y2" เพื่อรับจุดคลิก
- สำหรับ slider captcha: ใช้ค่า x ที่ส่งคืนเพื่อลาก slider
4. ช่วงเวลาการตรวจสอบ
- รออย่างน้อย 1-2 วินาทีระหว่างการตรวจสอบผลลัพธ์
- อย่าสแปม API ด้วยคำขอที่ต่อเนื่องกันมากเกินไป
- ตั้งค่าการหมดเวลาเพื่อหลีกเลี่ยงลูปไม่สิ้นสุด (แนะนำ 120 วินาที)
5. การจัดการข้อผิดพลาด
- ตรวจสอบ
errorId = 1และstatus = processingเพื่อรอต่อไป - จัดการข้อผิดพลาดอื่นๆ อย่างเหมาะสม
- ใช้ตรรกะการลองใหม่สำหรับข้อผิดพลาดชั่วคราว
6. ความปลอดภัยของคีย์ API
- อย่าฮาร์ดโค้ดคีย์ API ในโค้ด
- ใช้ตัวแปรสภาพแวดล้อม
- อย่าเปิดเผยคีย์ API ทางฝั่งไคลเอนต์
ลิงก์ที่มีประโยชน์: