Hướng dẫn
Nhiệm vụ (Token)
Geetest

GeeTestTask: giải Geetest

MẸO

Tạo tác vụ bằng phương thức createTask và nhận kết quả bằng phương thức getTaskResult.

Loại tác vụ types mà chúng tôi hỗ trợ:

  • GeeTestTaskProxyLess

HỖ TRỢ CÁC LOẠI ẢNH

LoạiGhi chúTrạng thái
img.pngtrượtổn định
img_2.pngnhấp biểu tượngổn định
img_2.pngva chạm biểu tượngổn định
img_2.pngchín ôổn định
img_2.pngcờ vâyổn định

Tạo tác vụ

Tạo một tác vụ với createTask để tạo một tác vụ.

Cấu trúc đối tượng tác vụ

Thuộc tínhLoạiBắt buộcMô tả
typeChuỗiBắt buộcGeeTestTaskProxyLess
websiteURLChuỗiBắt buộcĐịa chỉ web của trang web sử dụng geetest (Ví dụ: https://geetest.com)
gtChuỗiBắt buộcChỉ Geetest V3 là bắt buộc
challengeChuỗiBắt buộcChỉ Geetest V3 là bắt buộc
captchaIdChuỗiTùy chọnChỉ Geetest V4 là bắt buộc
geetestApiServerSubdomainChuỗiTùy chọnTên miền phụ api đặc biệt, ví dụ: api.geetest.com

Ví dụ yêu cầu

Ví dụ yêu cầu sử dụng Geetest V3

POST https://api.capsolver.com/createTask
Host: api.capsolver.com
Content-Type: application/json
{
    "clientKey": "YOUR_API_KEY",
    "task": {
        "type":"GeetestTaskProxyless",
        "websiteURL":"https://mywebsite.com/geetest/test.php",
        "gt":"",
        "challenge":"",
        "geetestApiServerSubdomain":"api.geetest.com" // Tùy chọn
    }
}

Ví dụ yêu cầu sử dụng Geetest V4

POST https://api.capsolver.com/createTask
Host: api.capsolver.com
Content-Type: application/json
{
    "clientKey": "YOUR_API_KEY",
    "task": {
        "type":"GeetestTaskProxyless",
        "websiteURL":"https://mywebsite.com/geetest/test.php",
        "captchaId": "..."
    }
}

Ví dụ phản hồi

{
    "errorId": 0,
    "status": "idle",
    "taskId": "61138bb6-19fb-11ec-a9c8-0242ac110006"
}

Lấy kết quả

Sử dụng getTaskResult để lấy kết quả, tùy thuộc vào tải hệ thống, bạn sẽ nhận được kết quả trong khoảng thời gian từ 3s đến 10s

Ví dụ yêu cầu

POST https://api.capsolver.com/getTaskResult
Host: api.capsolver.com
Content-Type: application/json
 
{
    "clientKey":"YOU_API_KEY",
    "taskId": "61138bb6-19fb-11ec-a9c8-0242ac110006"
}

Ví dụ phản hồi

Ví dụ phản hồi sử dụng GeetestV3

{
  "errorId": 0,
  "solution": {
    "challenge": "",
    "validate": ""
  },
  "status": "ready"
}

Ví dụ phản hồi sử dụng GeetestV4

{
  "errorId": 0,
  "taskId": "e0ecaaa8-06f6-41fd-a02e-a0c79b957b15",
  "status": "ready",
  "solution": {
    "captcha_id": "",
    "captcha_output": "",
    "gen_time": "",
    "lot_number": "",
    "pass_token": "",
    "risk_type": "slide"
  }
}

Sử dụng yêu cầu SDK

# pip install --upgrade capsolver
# export CAPSOLVER_API_KEY='...'
 
import capsolver
 
capsolver.api_key = "..."
# v3
solution = capsolver.solve({
    "type": "GeeTestTaskProxyLess",
    "websiteURL": "http://mywebsite.com/geetest/test.php",
    "gt": "...",
    "challenge": "..."
})
 
# v4
solution = capsolver.solve({
    "type": "GeeTestTaskProxyLess",
    "websiteURL": "http://mywebsite.com/geetest/test.php",
    "captchaId": "..."
})

Mã mẫu

# pip install requests
import requests
import time
 
api_key = "YOUR_API_KEY"  # TODO: khóa api capsolver của bạn
 
 
def capsolver():
    payload = {
        "clientKey": api_key,
        "task": {
            "type": 'GeeTestTaskProxyLess',
            "websiteURL": "https://mywebsite.com/geetest/test.php",  # url trang của bạn
            "gt": "...",  # v3 là bắt buộc
            "challenge":   "...",  # v3 là bắt buộc
            "captchaId":   "...",  # v4 là bắt buộc
        }
    }
    res = requests.post("https://api.capsolver.com/createTask", json=payload)
    resp = res.json()
    task_id = resp.get("taskId")
    if not task_id:
        print("Không thể tạo tác vụ:", res.text)
        return
    print(f"Đã nhận taskId: {task_id} / Đang lấy kết quả...")
 
    while True:
        time.sleep(1)  # độ trễ
        payload = {"clientKey": api_key, "taskId": task_id}
        res = requests.post("https://api.capsolver.com/getTaskResult", json=payload)
        resp = res.json()
        status = resp.get("status")
        if status == "ready":
            return resp.get("solution")
        if status == "failed" or resp.get("errorId"):
            print("Giải thất bại! phản hồi:", res.text)
            return
 
 
solution = capsolver()
print(solution)

Các điểm cần lưu ý

  1. Vui lòng không sao chép trực tiếp từ công cụ dành cho nhà phát triển của trình duyệt, mà hãy LẤY GT và challenge theo yêu cầu.

  2. Một số lỗi nhỏ khi yêu cầu lại các tham số mã xác minh có thể thử lại.

  3. Các tham số mã xác minh chỉ có thể được gửi để xác định một lần, không lặp lại cùng các tham số đã gửi để xác định, cần khởi tạo lại việc thu thập.

  4. Lưu ý: Nếu bạn không thể vượt qua trang web có thể do vấn đề về mã hóa, thì ký hiệu = trong CAPTCHA bằng cách thay thế bằng %3D, các ký hiệu khác không có mã hóa, vui lòng lưu ý điều này.

  5. Các tham số như máy chủ thử nghiệm có thể được truy vấn tại đây trong tài liệu Geetest.