TikTok Captcha
Pangkalahatang-ideya
Ang TikTok Captcha ay isang sistema ng pag-verify na ginagamit ng TikTok upang protektahan ang platform mula sa mga bot at spam. Ang captcha na ito ay karaniwang lumalabas kapag nagrerehistro ng bagong account, nagla-log in, o kapag may natukoy na hindi pangkaraniwang aktibidad.
Sa kasalukuyan, may mga available na extension para sa lahat ng 4 na uri ng captcha sa mga browser. Mangyaring mag-inbox sa admin upang matanggap ang extension. Nagbibigay ng lahat ng uri ng captcha para sa mga browser, emulator, at telepono.

1. Lumikha ng Task
Request
POST https://api.achicaptcha.com/createTask
Mga Parameter
| Parameter | Uri ng Data | Kinakailangan? | Paglalarawan |
|---|---|---|---|
clientKey | string | oo | API key |
task.type | string | oo | TiktokCaptchaTask |
task.image | string | oo | Base64 ng larawan |
task.subType | int | oo | Uri ng Captcha: 0 (Rotate captcha sa browser), 1 (Slider captcha), 2 (Pumili ng 2 magkatulad na bagay), 3 (Rotate captcha sa telepono, emulator), 5 (Pumili ng mga bagay na tumutugon sa tanong) |
task.other | string | hindi | Para sa subType 5, ang field na ito ay kinakailangan. Ang tanong sa captcha, halimbawa: "Which of these objects neighs" |
Halimbawa ng Request
POST /createTask HTTP/1.1
Host: api.achicaptcha.com
Content-Type: application/json
{
"clientKey": "YOUR_API_KEY",
"task": {
"type": "TiktokCaptchaTask",
"image": "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...(10460 chars omitted)...V7Q4rk8i3IvOS/eZexY2wFyvTDXyzAWT5qNlUXkiKiAJVRdUYlkBFEQQRQEC2yAghRCyCWQSyBZAsgWQW1kCyCoCCoqIqoFkVCiCKXVC3ooCKKKxIRkhCxZw+Zj8FjMPpFmJjHRYdL69ad0OidK+5LIM1V6WM3fQBZRD5TbagWWbCZZKsVRiqqCIIindVil0UJQEQ5XRV5oiHZA3sgKBzRBFSyIHS6AgWRQa3RCyAgHZFUahA5ofAdkVLoKgnOyKE6KgoBQUDVGSE2CBYWUVjyRU5qMtgAKCAAqKoGqErZVFCrHYAqjIBRAKoiAqj//Z",
"subType": 2
}
}Response
Sa tagumpay, ang server ay magbabalik ng errorId = 0 at taskId
{
"errorId": 0,
"taskId": "f2fc70d6-c76b-4fba-9480-205ac1fe9fb9"
}Mga Halimbawa ng Larawan na Ipadadala sa Captcha Solving Server
Sa browser:
Field image = base64_outer_image|base64_inner_image


Sa emulator, telepono:
Field image ay base64 ng 1 larawan, na-crop upang maglaman lamang ng bahagi ng rotate captcha (kasama ang parehong bilog, maaaring may sobrang puting espasyo sa mga gilid, ang haba ng gilid ay flexible)

2. Kunin ang Resulta
Request
POST https://api.achicaptcha.com/getTaskResult
Mga Parameter
| Parameter | Uri ng Data | Kinakailangan? | Paglalarawan |
|---|---|---|---|
clientKey | string | oo | API key mula sa website |
taskId | string | oo | TaskId mula sa hakbang (1) |
Halimbawa ng Request
POST /getTaskResult HTTP/1.1
Host: api.achicaptcha.com
Content-Type: application/json
{
"clientKey": "Your API_KEY",
"taskId": "f2fc70d6-c76b-4fba-9480-205ac1fe9fb9"
}Response
{
"errorId": 0,
"status": "ready",
"solution": "x1,y1,x2,y2"
}Kahulugan ng Response
errorId = 0atstatus = ready: Matagumpay na nalutas, basahin ang resulta sasolutionerrorId = 1atstatus = processing: Ang captcha ay nilulutas pa, maghintay ng 1-2 segundo at subukang mulierrorId maliban sa 0 at 1: Error sa sistema, ibinigay ang error code at paglalarawansolution:- Para sa rotate captcha sa browser: ibinabalik ang haba ng distansya ng pag-drag ng slider
- Para sa rotate captcha sa emulator, telepono: ibinabalik ang anggulo ng pag-ikot, kinakalkula ng user ang distansya ng pag-drag gamit ang formula: Drag distance = (L / 180) * solution (kung saan ang L ay ang distansya mula sa simula hanggang sa posisyon ng pagtatapos ng slider, sinusukat mula sa gitna ng slider)
- Para sa slider captcha: ibinabalik ang x-axis coordinate upang i-drag
- Para sa select 2 similar objects captcha: ibinabalik ang pares ng mga coordinate upang i-click sa larawan "x1,y1,x2,y2"
- Para sa select multiple objects that satisfy question captcha: ibinabalik ang mga coordinate upang i-click sa larawan "x1,y1,x2,y2,x3,y3,..."
Mga Halimbawa ng Integrasyon
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"Mga Karaniwang Error Code
Mga Error Code Kapag Gumagawa ng Task
| Error Code | Paglalarawan | Mga Tala |
|---|---|---|
| 0 | success | Matagumpay na nalikha ang task |
| 2 | missing required fields | Kulang ang mga kinakailangang field, suriin ang mga parameter (image, subType) |
| 3 | task not supported | Hindi suportado ang uri ng task |
| 4 | task creation failed | Nabigo ang paglikha ng task, subukang muli mamaya |
| 5 | client key does not exist | Hindi umiiral ang API key, suriin ang iyong API key |
| 6 | insufficient account balance | Hindi sapat ang balanse ng account, magdagdag ng credits |
Mga Error Code Kapag Kumukuha ng Resulta
| Error Code | Paglalarawan | Mga Tala |
|---|---|---|
| 0 | success | Tagumpay, basahin ang resulta sa field na solution |
| 1 | processing | Pinoproseso, maghintay ng 1-2 segundo at ipadala muli ang request |
| 5 | client key does not exist | Hindi umiiral ang API key, suriin ang iyong API key |
| 7 | task failed, please create a new task | Nabigo ang task, mangyaring lumikha ng bagong task |
| 8 | task ID does not exist | Hindi umiiral ang Task ID o nag-expire na |
Pinakamahuhusay na Kasanayan
Upang makamit ang pinakamahusay na mga resulta kapag ginagamit ang Achicaptcha API, sundin ang mga prinsipyong ito:
1. Tukuyin ang Tamang Uri ng Captcha at subType
- Ang TikTok ay gumagamit ng iba't ibang uri ng captcha
- Tumpak na tukuyin ang uri ng captcha na ipinapakita
- Ipadala ang tamang
subTypesa request:0: Rotate captcha sa browser1: Slider captcha2: Pumili ng 2 magkatulad na bagay3: Rotate captcha sa telepono, emulator5: Pumili ng mga bagay na tumutugon sa tanong (kinakailangan angotherfield)
2. I-format nang Tama ang mga Larawan
- Rotate captcha sa browser: Ipadala ang
base64_outer_image|base64_inner_image - Rotate captcha sa telepono/emulator: Ipadala ang base64 ng 1 larawan (naglalaman lamang ng bahagi ng rotate captcha)
- Iba pang mga uri: Ipadala ang base64 ng kaukulang larawan
- Tiyaking ang mga larawan ay naka-encode sa tamang base64 format
3. Hawakan nang Maayos ang mga Resulta
- Para sa rotate captcha sa emulator/telepono: Kalkulahin ang distansya ng pag-drag gamit ang formula: Drag distance = (L / 180) * solution
Sukatin ang L gaya ng ipinakita sa itaas: ang haba para sa pagkalkula ng pag-drag - Para sa select objects captcha: I-parse ang coordinate string na "x1,y1,x2,y2" upang makuha ang mga click point
- Para sa slider captcha: Gamitin ang ibinalik na x coordinate upang i-drag ang slider
4. Interval ng Polling
- Maghintay ng hindi bababa sa 1-2 segundo sa pagitan ng mga pagsusuri ng resulta
- Huwag i-spam ang API ng masyadong maraming sunud-sunod na request
- Magkaroon ng timeout upang maiwasan ang mga infinite loop (inirerekomenda ang 120 segundo)
5. Paghawak ng Error
- Suriin para sa
errorId = 1atstatus = processingupang magpatuloy sa paghihintay - Hawakan nang maayos ang iba pang mga error
- Magpatupad ng retry logic para sa mga pansamantalang error
6. Seguridad ng API Key
- Huwag i-hardcode ang API key sa code
- Gumamit ng mga environment variable
- Huwag ilantad ang API key sa client-side
Mga Kapaki-pakinabang na Link: