Skip to content
API
Funcaptcha

Funcaptcha Image

Pangkalahatang-ideya

Ang FunCaptcha (kilala rin bilang Arkose Labs Captcha) ay isang interactive na uri ng captcha na nangangailangan ng mga user na magsagawa ng mga aksyon tulad ng pag-ikot ng mga imahe, pag-drag at pag-drop ng mga bagay upang malutas ang mga hamon. Ginagamit ito ng maraming malalaking website tulad ng Roblox, Epic Games, Outlook, atbp.

🎮

Ang FunCaptcha ay idinisenyo upang parehong protektahan laban sa mga bot at lumikha ng isang "masayang" karanasan para sa mga user sa pamamagitan ng mga interactive na mini-game.

FunCaptcha FunCaptcha FunCaptcha

1. Lumikha ng Gawain

Request

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

Mga Parameter

Pangalan ng ParameterUri ng DataKailangan?Paglalarawan
clientKeystringooApi key
task.typestringooFuncaptchaImageTask
task.subTypestringooValue ay katumbas ng 1
task.imagestringooBase64 ng imahe
task.otherstringooTanong
Halimbawa: "Use the arrows to rotate the object to face in the direction of the hand"

Halimbawa ng Request

POST /createTask HTTP/1.1
Host: api.achicaptcha.com
Content-Type: application/json
 
{
  "clientKey": "YOUR_API_KEY",
  "task": {
    "type": "FuncaptchaImageTask",
    "subType": "1",
    "image": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBD...",
    "other": "Use the arrows to rotate the object to face in the direction of the hand"
  }
}

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 ParameterUri ng DataKailangan?Paglalarawan
clientKeystringooApi key
taskIdstringooTaskId 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": "1" // Image index na iki-click (Nagsisimula sa 0)
}

Paliwanag sa Status

  • errorId = 0 at status = ready: Matagumpay na nalutas, basahin ang resulta sa solution.answer (array ng mga index ng imahe)
  • errorId = 0 at status = processing: Nilulutas ang captcha, maghintay ng 2 segundo at subukang muli
  • errorId > 0: Error sa system, nagbabalik ng error code at paglalarawan ng error

Mga Halimbawa ng Integrasyon

import requests
import time
 
def solve_funcaptcha_image(image_base64, question, api_key='YOUR_API_KEY'):
    # Hakbang 1: Lumikha ng gawain
    create_task_url = 'https://api.achicaptcha.com/createTask'
    create_task_payload = {
        'clientKey': api_key,
        'task': {
            'type': 'FuncaptchaImageTask',
            'subType': '1',
            'image': image_base64,
            'other': question
        }
    }
    
    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'] != 0:
            raise Exception(result['errorDescription'])
        
        if result['status'] == 'ready':
            return result['solution']
        
        # Kung status == 'processing', ipagpatuloy ang loop
 
# Paggamit
image_base64 = '/9j/4AAQSkZJRgABAQAAAQABAAD/2wBD...'  # Base64 ng imahe
question = 'Use the arrows to rotate the object to face in the direction of the hand'
solution = solve_funcaptcha_image(image_base64, question, 'YOUR_API_KEY')
print('FunCaptcha solution:', solution)

Karaniwang Error Codes

Error CodePaglalarawanMga Tala
0successTagumpay
1processingPinoproseso
2missing required fieldsKulang ang mga kinakailangang field, suriin muli ang mga parameter
3task not supportedHindi suportado ang uri ng gawain
4task creation failedNabigo ang paglikha ng gawain
5client key does not existHindi umiiral ang API key, suriin muli ang API key
6insufficient account balanceHindi sapat ang balanse ng account, magdagdag ng credits
7task failed, please create a new taskNabigo ang gawain, mangyaring lumikha ng bagong gawain
8task ID does not existHindi umiiral ang Task ID

Pinakamahuhusay na Kasanayan

Para sa pinakamahusay na mga resulta kapag gumagamit ng Achicaptcha API para sa FunCaptcha Image, sundin ang mga prinsipyong ito:

1. Pagproseso ng Base64 Image

  • Tumatanggap lamang ng isang imahe. Para sa mga gumagamit ng telepono, pagsamahin sa isang malaking imahe bago ipadala
  • Tiyaking ang imahe ay maayos na naka-encode sa Base64 format
  • Alisin ang prefix na data:image/...;base64, kung mayroon
  • Suriin na ang laki ng imahe ay makatwiran (hindi masyadong malaki)

2. Tanong

  • Ibigay ang eksaktong tanong mula sa hamon ng FunCaptcha
  • Ang tanong ay tumutulong sa system na mas maunawaan ang uri ng hamon
  • Halimbawa: "Use the arrows to rotate the object to face in the direction of the hand"

3. Interval ng Polling

  • Maghintay ng hindi bababa sa 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 para sa mga gawain sa imahe)

4. Pagproseso ng Resulta

  • Ang resultang ibinalik ay isang solong numero (index na nagsisimula sa 0)
  • Gamitin ang resultang ito upang isumite sa FunCaptcha

5. Logic ng Pag-retry

  • Ipatupad ang retry para sa mga pansamantalang error tulad ng ERROR_NO_SLOT_AVAILABLE
  • Gumamit ng exponential backoff kapag nagre-retry
  • Limitahan ang maximum na mga pagsubok sa pag-retry

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: