Botion Grid Captcha
Pangkalahatang-ideya
Ang Botion ay isang captcha ng pagpili sa grid: nagpapakita ang pahina ng isang larawan ng sangguniang halimbawa at isang 3×3 na grid ng mga tile. Ang solver ay dapat ibalik kung aling mga cell ng grid ang tumutugma sa sanggunian (mga index na base 0, row-major: kaliwa hanggang kanan, itaas hanggang ibaba).
Ang field na task.image ay nagko-encode ng dalawang Base64 payload na pinagsama ng | — ang larawan ng halimbawa muna, pagkatapos ang larawan ng grid.

1. Lumikha ng Gawain
Format ng Pagsusumite ng Larawan
Larawan ng halimbawa

Larawan ng grid

Kahilingan
POST https://api.achicaptcha.com/createTask
Mga Parameter
| Pangalan ng Parameter | Uri ng Data | Kinakailangan? | Paglalarawan |
|---|---|---|---|
clientKey | string | yes | API key |
task.type | string | yes | GridCaptcha |
task.subType | string | yes | botion |
task.image | string | yes | BASE64_SAMPLE_IMAGE|BASE64_GRID_IMAGE — larawan ng halimbawa muna, pagkatapos |, pagkatapos ang larawan ng grid 3×3 (parehong Base64, walang prefix na data:) |
task.other | string | no | topk|grid_size. Default na 3|3 kung tinanggal |
Halimbawa ng Kahilingan
POST /createTask HTTP/1.1
Host: api.achicaptcha.com
Content-Type: application/json
{
"clientKey": "YOUR_API_KEY",
"task": {
"type": "GridCaptcha",
"subType": "botion",
"image": "BASE64_SAMPLE_IMAGE|BASE64_GRID_IMAGE",
"other": "3|3"
}
}Tugon
Kapag matagumpay, ang server ay nagbabalik ng errorId = 0 at taskId
{
"errorId": 0,
"taskId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
}2. Kunin ang Resulta
Kahilingan
POST https://api.achicaptcha.com/getTaskResult
Mga Parameter
| Pangalan ng Parameter | Uri ng Data | Kinakailangan? | Paglalarawan |
|---|---|---|---|
clientKey | string | yes | API key |
taskId | string | yes | TaskId na nakuha mula sa hakbang (1) |
Halimbawa ng Kahilingan
POST /getTaskResult HTTP/1.1
Host: api.achicaptcha.com
Content-Type: application/json
{
"clientKey": "YOUR_API_KEY",
"taskId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
}Tugon
{
"errorId": 0,
"status": "ready",
"solution": {
"click": "0,2,5"
}
}Ang solution.click ay isang comma-separated na string ng mga index ng cell na base 0 (row-major) para i-click sa 3×3 na grid.
Paliwanag ng Status
errorId = 0atstatus = ready: Matagumpay na nalutas, basahin ang mga index ng cell sasolution.clickerrorId = 0atstatus = processing: Nireresulta pa rin, maghintay ng 2 segundo at suriin mulierrorId > 0: Error ng sistema, suriin angerrorCodeaterrorDescription
Mga Halimbawa ng Integrasyon
import requests
import base64
import time
def solve_botion(sample_path, grid_path, api_key='YOUR_API_KEY', other='3|3'):
with open(sample_path, 'rb') as f:
sample_b64 = base64.b64encode(f.read()).decode()
with open(grid_path, 'rb') as f:
grid_b64 = base64.b64encode(f.read()).decode()
# Hakbang 1: Lumikha ng gawain
create_resp = requests.post(
'https://api.achicaptcha.com/createTask',
json={
'clientKey': api_key,
'task': {
'type': 'GridCaptcha',
'subType': 'botion',
'image': f'{sample_b64}|{grid_b64}',
'other': other
}
}
)
result = create_resp.json()
if result['errorId'] != 0:
raise Exception(result['errorDescription'])
task_id = result['taskId']
# Hakbang 2: Suriin ang resulta
while True:
time.sleep(2)
poll_resp = requests.post(
'https://api.achicaptcha.com/getTaskResult',
json={'clientKey': api_key, 'taskId': task_id}
)
result = poll_resp.json()
if result['errorId'] != 0:
raise Exception(result['errorDescription'])
if result['status'] == 'ready':
return result['solution']['click'] # e.g. "0,2,5"
# Paggamit
indices = solve_botion('sample.png', 'grid.png', 'YOUR_API_KEY')
print('Mga cell na i-click:', indices)Mga Karaniwang Error Code
| Error Code | Paglalarawan | Mga Tala |
|---|---|---|
| 0 | success | Tagumpay |
| 1 | processing | Pinoproseso |
| 2 | missing required fields | Nawawalang mga kinakailangang field, suriin ang mga parameter |
| 3 | task not supported | Hindi sinusuportahan 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 ang susi |
| 6 | insufficient account balance | Hindi sapat na balanse ng account, magdagdag ng mga kredito |
| 7 | task failed, please create a new task | Nabigo ang gawain, lumikha ng bagong gawain |
| 8 | task ID does not exist | Hindi umiiral ang ID ng gawain |
Mga Pinakamahusay na Gawi
Para sa pinakamahusay na resulta kapag gumagamit ng Achicaptcha API para sa Botion Grid Captcha, sundin ang mga prinsipyong ito:
1. Pagkakasunod ng Larawan
- Palaging ipadala ang larawan ng halimbawa (sanggunian) muna, pagkatapos ang
|, pagkatapos ang larawan ng grid - Huwag isama ang prefix na
data:image/...;base64,— raw Base64 lamang - Tiyaking parehong mga larawan ay ganap na na-load at na-encode bago magpadala
2. Parameter na task.other
- Ang format ay
topk|grid_size(hal.3|3) - Kung tinanggal, ang default ay
3|3, ngunit palaging itakda nang tahasan upang maiwasan ang hindi inaasahang gawi - Ang maling
grid_sizeay masisira ang pagmamapa ng index na base 0 sasolution.click
3. Agwat ng Pagtatanong
- Maghintay ng hindi bababa sa 2 segundo sa pagitan ng mga pagsusuri ng resulta
- Huwag i-spam ang API ng mga sunud-sunod na kahilingan
- Magtakda ng timeout upang maiwasan ang walang hanggang mga loop (inirerekomenda: 60 segundo)
4. Pagpoproseso ng Resulta
- Ang
solution.clickay isang comma-separated na string ng mga index ng cell na base 0 (row-major, kaliwa hanggang kanan, itaas hanggang ibaba) - Hatiin sa
,at i-convert sa mga integer bago i-click ang mga kaukulang cell ng grid
5. Lohika ng Muling Pagsubok
- Ipatupad ang muling pagsubok para sa mga pansamantalang error tulad ng
ERROR_NO_SLOT_AVAILABLE - Gumamit ng exponential backoff kapag nagre-retry
- Limitahan ang maximum na bilang ng mga pagtatangka ng muling pagsubok
6. Seguridad ng API Key
- Huwag i-hardcode ang iyong API key sa source code
- Gumamit ng mga environment variable o secrets manager
- Huwag kailanman ilantad ang API key sa panig ng kliyente
Mga kapaki-pakinabang na link: