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.

1. Lumikha ng Gawain
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 | FuncaptchaImageTask |
task.subType | string | oo | Value ay katumbas ng 1 |
task.image | string | oo | Base64 ng imahe |
task.other | string | oo | Tanong 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 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": "1" // Image index na iki-click (Nagsisimula sa 0)
}Paliwanag sa Status
errorId = 0atstatus = ready: Matagumpay na nalutas, basahin ang resulta sasolution.answer(array ng mga index ng imahe)errorId = 0atstatus = processing: Nilulutas ang captcha, maghintay ng 2 segundo at subukang mulierrorId > 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 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 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: