Geetest Image Captcha
Pangkalahatang-ideya
Ang Geetest ay isang sikat na sistema ng captcha sa China at mga bansa sa Asya, na gumagamit ng mga interactive na hamon tulad ng pag-drag ng puzzle at pagkilala ng imahe. Nagbibigay kami ng mga serbisyo upang malutas ang lahat ng uri ng Geetest Image (Geetest v3, Geetest v4, ...) sa mga browser, simulator, at phone farm.
Ang dokumentasyong ito ay gumagabay sa iyo sa paghawak ng Geetest Captcha na nangangailangan ng mga user na tukuyin at i-click ang mga bagay nang sunud-sunod sa background image. Para sa drag-type captcha, mangyaring sundin ang mga tagubilin para sa Tiktok Captcha drag type.

1. Lumikha ng Gawain
Format ng Pagsusumite ng Imahe
Paghiwalayin ang mga icon image at background image tulad ng ipinapakita sa ibaba

Request
POST https://api.achicaptcha.com/createTask
Mga Parameter
| Pangalan ng Parameter | Uri ng Data | Kailangan? | Paglalarawan |
|---|---|---|---|
clientKey | string | oo | Api key |
task.type | string | oo | GeetestImageCaptchaTask |
task.image | string | oo | Listahan ng mga base64 image na sumusunod sa prinsipyo: icon_1|icon_2|...|icon_n|background (Base64 strings na pinaghihiwalay ng |) |
task.subType | int | oo | Uri ng Captcha: 7: Pumili ng mga bagay ayon sa pagkakasunod-sunod |
Halimbawa ng Request
POST /createTask HTTP/1.1
Host: api.achicaptcha.com
Content-Type: application/json
{
"clientKey": "YOUR_API_KEY",
"task": {
"type": "GeetestImageCaptchaTask",
"image": "/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT...|/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT...|/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT...",
"subType": 7
}
}Tandaan: Ang parameter na image ay dapat na isang base64 string ng mga icon at background image, na pinaghihiwalay ng |. Pagkakasunod-sunod: icon_1|icon_2|icon_3|...|background
Response
Kapag matagumpay, ibabalik ng server ang errorId = 0 at taskId
{
"errorId": 0,
"taskId": "f2fc70d6-c76b-4fba-9480-205ac1fe9fb9"
}2. Kunin ang Resulta
Request
POST https://api.achicaptcha.com/getTaskResult
Mga Parameter
| Pangalan ng Parameter | Uri ng Data | Kailangan? | Paglalarawan |
|---|---|---|---|
clientKey | string | oo | Api key |
taskId | string | oo | TaskId na nakuha mula sa (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,x3,y3"
}Paliwanag sa Status
errorId = 0atstatus = ready: Matagumpay na nalutas, basahin ang resulta sasolutionerrorId = 1atstatus = processing: Nilulutas ang captcha, maghintay ng 1-2 segundo at subukang mulierrorIdbukod sa 0 at 1: Error sa system, nagbabalik ng error code at paglalarawan
Kahulugan ng Resulta
solution: Nagbabalik ng mga coordinate upang i-click sa captcha, formatx1,y1,x2,y2,x3,y3,...- Ang bawat pares (x, y) ay kumakatawan sa mga pixel coordinate upang i-click sa background image
- Ang pagkakasunod-sunod ng pag-click ay tumutugma sa pagkakasunod-sunod ng mga ipinapakitang icon
Mga Halimbawa ng Integrasyon
import requests
import time
def solve_geetest_image(base64_images, sub_type=7, api_key='YOUR_API_KEY'):
# base64_images: "icon1|icon2|icon3|background" - base64 string separated by |
# Hakbang 1: Lumikha ng gawain
create_task_url = 'https://api.achicaptcha.com/createTask'
create_task_payload = {
'clientKey': api_key,
'task': {
'type': 'GeetestImageCaptchaTask',
'image': base64_images,
'subType': sub_type
}
}
response = requests.post(create_task_url, json=create_task_payload)
result = response.json()
if result['errorId'] != 0:
raise Exception(result['errorDescription'])
task_id = result['taskId']
# Hakbang 2: Kunin ang resulta
get_result_url = 'https://api.achicaptcha.com/getTaskResult'
while True:
time.sleep(2) # Maghintay ng 2 segundo
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'] not in [0, 1]:
raise Exception(result['errorDescription'])
if result['status'] == 'ready':
return result['solution'] # "x1,y1,x2,y2,x3,y3"
# Kung status == 'processing', ipagpatuloy ang loop
# Paggamit
# Ipagpalagay na mayroon kang mga base64 image
icon1_base64 = '/9j/4AAQSkZJRgABAQEASABIAAD...'
icon2_base64 = '/9j/4AAQSkZJRgABAQEASABIAAD...'
icon3_base64 = '/9j/4AAQSkZJRgABAQEASABIAAD...'
background_base64 = '/9j/4AAQSkZJRgABAQEASABIAAD...'
base64_images = f'{icon1_base64}|{icon2_base64}|{icon3_base64}|{background_base64}'
solution = solve_geetest_image(base64_images, 7, 'YOUR_API_KEY')
print('Geetest coordinates:', solution) # "x1,y1,x2,y2,x3,y3"
# I-parse ang mga coordinate at gamitin
coords = [int(c) for c in solution.split(',')]
for i in range(0, len(coords), 2):
x, y = coords[i], coords[i + 1]
print(f'Click at ({x}, {y})')
# Magsagawa ng pag-click sa mga coordinate (x, y)Karaniwang Error Codes
| Error Code | Paglalarawan | Mga Tala |
|---|---|---|
| 0 | success | Tagumpay |
| 1 | processing | Pinoproseso |
| 2 | missing required fields | Kulang ang mga kinakailangang field, suriin muli ang mga parameter |
| 3 | task not supported | Hindi suportado ang uri ng gawain |
| 4 | task creation failed | Nabigo ang paglikha ng gawain |
| 5 | client key does not exist | Hindi umiiral ang API key, suriin muli ang API key |
| 6 | insufficient account balance | Hindi sapat ang balanse ng account, magdagdag ng credits |
| 7 | task failed, please create a new task | Nabigo ang gawain, mangyaring lumikha ng bagong gawain |
| 8 | task ID does not exist | Hindi umiiral ang Task ID |
Pinakamahuhusay na Kasanayan
Para sa pinakamahusay na mga resulta kapag gumagamit ng Achicaptcha API para sa Geetest Image, sundin ang mga prinsipyong ito:
1. Ihanda ang mga Imahe sa Tamang Format
- Ang lahat ng mga imahe ay dapat na naka-encode sa base64
- Pagkakasunod-sunod ng imahe:
icon_1|icon_2|...|icon_n|background - Ang mga base64 image ay pinaghihiwalay ng
|character - Tiyaking ang background image ay ang huli sa string
2. Gamitin ang mga Resulta nang Tama
- Ang resultang ibinalik ay isang coordinate string:
x1,y1,x2,y2,x3,y3,... - Ang bawat pares (x, y) ay mga pixel coordinate sa background image
- Ang pagkakasunod-sunod ng pag-click ay tumutugma sa pagkakasunod-sunod ng mga ipinapakitang icon
- Mag-click nang tumpak sa mga coordinate upang makumpleto ang captcha
3. 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 magkakasunod na kahilingan
- Magtakda ng timeout upang maiwasan ang mga infinite loop (inirerekomenda ang 60 segundo)
4. Paghawak ng Error
- Suriin ang
errorId = 1para sa status ng pagproseso - Mag-retry para sa mga pansamantalang error (errorId = 6, 7)
- Lumikha ng bagong gawain kung nabigo ang kasalukuyang gawain
- Limitahan ang maximum na mga pagsubok sa pag-retry
5. 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
- Tumawag sa API mula sa backend/server
Mga Kapaki-pakinabang na link: