Skip to content
API
Grid Captcha
Botion

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.

Botion captcha UI example

1. Lumikha ng Gawain

Format ng Pagsusumite ng Larawan

Larawan ng halimbawa Botion request payload (sample | grid)

Larawan ng grid Botion request payload (sample | grid)

Kahilingan

POST https://api.achicaptcha.com/createTask

Mga Parameter

Pangalan ng ParameterUri ng DataKinakailangan?Paglalarawan
clientKeystringyesAPI key
task.typestringyesGridCaptcha
task.subTypestringyesbotion
task.imagestringyesBASE64_SAMPLE_IMAGE|BASE64_GRID_IMAGE — larawan ng halimbawa muna, pagkatapos |, pagkatapos ang larawan ng grid 3×3 (parehong Base64, walang prefix na data:)
task.otherstringnotopk|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 ParameterUri ng DataKinakailangan?Paglalarawan
clientKeystringyesAPI key
taskIdstringyesTaskId 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 = 0 at status = ready: Matagumpay na nalutas, basahin ang mga index ng cell sa solution.click
  • errorId = 0 at status = processing: Nireresulta pa rin, maghintay ng 2 segundo at suriin muli
  • errorId > 0: Error ng sistema, suriin ang errorCode at errorDescription

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 CodePaglalarawanMga Tala
0successTagumpay
1processingPinoproseso
2missing required fieldsNawawalang mga kinakailangang field, suriin ang mga parameter
3task not supportedHindi sinusuportahan ang uri ng gawain
4task creation failedNabigo ang paglikha ng gawain
5client key does not existHindi umiiral ang API key, suriin ang susi
6insufficient account balanceHindi sapat na balanse ng account, magdagdag ng mga kredito
7task failed, please create a new taskNabigo ang gawain, lumikha ng bagong gawain
8task ID does not existHindi 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_size ay masisira ang pagmamapa ng index na base 0 sa solution.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.click ay 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: