Geetest Image Captcha
अवलोकन
Geetest चीन और एशियाई देशों में एक लोकप्रिय कैप्चा प्रणाली है, जो पहेली खींचने और छवि पहचान जैसी इंटरैक्टिव चुनौतियों का उपयोग करती है। हम ब्राउज़र, सिमुलेटर और फोन फ़ार्म पर सभी प्रकार के Geetest Image (Geetest v3, Geetest v4, ...) को हल करने के लिए सेवाएँ प्रदान करते हैं।
यह दस्तावेज़ आपको Geetest Captcha को संभालने में मार्गदर्शन करता है जिसके लिए उपयोगकर्ताओं को पृष्ठभूमि छवि पर क्रम में वस्तुओं को पहचानने और क्लिक करने की आवश्यकता होती है। ड्रैग-टाइप कैप्चा के लिए, कृपया Tiktok Captcha ड्रैग टाइप के निर्देशों का पालन करें।

1. कार्य बनाएँ
छवि सबमिशन प्रारूप
नीचे दिखाए अनुसार आइकन छवियों और पृष्ठभूमि छवियों को अलग करें

अनुरोध
POST https://api.achicaptcha.com/createTask
पैरामीटर्स
| पैरामीटर नाम | डेटा प्रकार | आवश्यक? | विवरण |
|---|---|---|---|
clientKey | string | हाँ | Api key |
task.type | string | हाँ | GeetestImageCaptchaTask |
task.image | string | हाँ | सिद्धांत का पालन करते हुए base64 छवियों की सूची: icon_1|icon_2|...|icon_n|background (| द्वारा अलग की गई Base64 स्ट्रिंग्स) |
task.subType | int | हाँ | कैप्चा प्रकार: 7: क्रम में वस्तुओं का चयन करें |
अनुरोध उदाहरण
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
}
}नोट: image पैरामीटर आइकन और पृष्ठभूमि छवियों की एक base64 स्ट्रिंग होनी चाहिए, जो | द्वारा अलग की गई हो। क्रम: icon_1|icon_2|icon_3|...|background
प्रतिक्रिया
सफल होने पर, सर्वर errorId = 0 और taskId लौटाता है
{
"errorId": 0,
"taskId": "f2fc70d6-c76b-4fba-9480-205ac1fe9fb9"
}2. परिणाम प्राप्त करें
अनुरोध
POST https://api.achicaptcha.com/getTaskResult
पैरामीटर्स
| पैरामीटर नाम | डेटा प्रकार | आवश्यक? | विवरण |
|---|---|---|---|
clientKey | string | हाँ | Api key |
taskId | string | हाँ | (1) से प्राप्त TaskId |
अनुरोध उदाहरण
POST /getTaskResult HTTP/1.1
Host: api.achicaptcha.com
Content-Type: application/json
{
"clientKey": "YOUR_API_KEY",
"taskId": "f2fc70d6-c76b-4fba-9480-205ac1fe9fb9"
}प्रतिक्रिया
{
"errorId": 0,
"status": "ready",
"solution": "x1,y1,x2,y2,x3,y3"
}स्थिति स्पष्टीकरण
errorId = 0औरstatus = ready: सफलतापूर्वक हल किया गया,solutionमें परिणाम पढ़ेंerrorId = 1औरstatus = processing: कैप्चा हल किया जा रहा है, 1-2 सेकंड प्रतीक्षा करें और पुनः प्रयास करेंerrorId0 और 1 के अलावा: सिस्टम त्रुटि, त्रुटि कोड और विवरण लौटाता है
परिणाम का अर्थ
solution: कैप्चा पर क्लिक करने के लिए निर्देशांक लौटाता है, प्रारूपx1,y1,x2,y2,x3,y3,...- प्रत्येक जोड़ी (x, y) पृष्ठभूमि छवि पर क्लिक करने के लिए पिक्सेल निर्देशांक का प्रतिनिधित्व करती है
- क्लिक क्रम प्रदर्शित आइकन के क्रम से मेल खाता है
एकीकरण उदाहरण
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 |
# Step 1: Create task
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']
# Step 2: Get result
get_result_url = 'https://api.achicaptcha.com/getTaskResult'
while True:
time.sleep(2) # Wait 2 seconds
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"
# If status == 'processing', continue loop
# Usage
# Assume you have base64 images
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"
# Parse coordinates and use
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})')
# Perform click at coordinates (x, y)सामान्य त्रुटि कोड
| त्रुटि कोड | विवरण | नोट्स |
|---|---|---|
| 0 | success | सफलता |
| 1 | processing | प्रसंस्करण |
| 2 | missing required fields | आवश्यक फ़ील्ड गायब है, पैरामीटर फिर से जाँचें |
| 3 | task not supported | कार्य प्रकार समर्थित नहीं है |
| 4 | task creation failed | कार्य निर्माण विफल |
| 5 | client key does not exist | API कुंजी मौजूद नहीं है, API कुंजी फिर से जाँचें |
| 6 | insufficient account balance | अपर्याप्त खाता शेष, क्रेडिट टॉप अप करें |
| 7 | task failed, please create a new task | कार्य विफल, कृपया एक नया कार्य बनाएँ |
| 8 | task ID does not exist | कार्य ID मौजूद नहीं है |
सर्वोत्तम प्रथाएँ
Geetest Image के लिए Achicaptcha API का उपयोग करते समय सर्वोत्तम परिणामों के लिए, इन सिद्धांतों का पालन करें:
1. सही प्रारूप में चित्र तैयार करें
- सभी छवियों को base64 में एन्कोड किया जाना चाहिए
- छवि क्रम:
icon_1|icon_2|...|icon_n|background - Base64 छवियों को
|वर्ण द्वारा अलग किया जाता है - सुनिश्चित करें कि पृष्ठभूमि छवि स्ट्रिंग में अंतिम है
2. परिणामों का सही उपयोग करें
- लौटाया गया परिणाम एक निर्देशांक स्ट्रिंग है:
x1,y1,x2,y2,x3,y3,... - प्रत्येक जोड़ी (x, y) पृष्ठभूमि छवि पर पिक्सेल निर्देशांक है
- क्लिक क्रम प्रदर्शित आइकन के क्रम से मेल खाता है
- कैप्चा पूरा करने के लिए निर्देशांक पर सटीक रूप से क्लिक करें
3. पोलिंग अंतराल
- परिणाम जाँचों के बीच कम से कम 1-2 सेकंड प्रतीक्षा करें
- बहुत अधिक लगातार अनुरोधों के साथ API को स्पैम न करें
- अनंत लूप से बचने के लिए टाइमआउट सेट करें (60 सेकंड अनुशंसित)
4. त्रुटि प्रबंधन
- प्रसंस्करण स्थिति के लिए
errorId = 1की जाँच करें - अस्थायी त्रुटियों (errorId = 6, 7) के लिए पुनः प्रयास करें
- यदि वर्तमान कार्य विफल हो जाता है तो नया कार्य बनाएँ
- अधिकतम पुनः प्रयास प्रयासों को सीमित करें
5. API कुंजी सुरक्षा
- कोड में API कुंजी को हार्डकोड न करें
- पर्यावरण चर (environment variables) का उपयोग करें
- क्लाइंट-साइड पर API कुंजी को उजागर न करें
- बैकएंड/सर्वर से API कॉल करें
उपयोगी लिंक: