GeeTestTask: Geetestの解決
TIP
タスクはcreateTaskメソッドで作成し、結果はgetTaskResultメソッドで取得します。
サポートしているタスクタイプtypes
:
GeeTestTaskProxyLess
サポート画像タイプ
タイプ | 注記 | 状態 |
---|---|---|
![]() | スライド | 安定 |
![]() | アイコンクリック | 安定 |
![]() | アイコンクラッシュ | 安定 |
![]() | ナイン | 安定 |
![]() | 五目並べ | 安定 |
タスクの作成
createTaskを使用してタスクを作成します。
タスクオブジェクトの構造
プロパティ | 型 | 必須 | 説明 |
---|---|---|---|
type | String | 必須 | GeeTestTaskProxyLess |
websiteURL | String | 必須 | Geetestを使用しているウェブサイトのウェブアドレス (例: https://geetest.com) |
gt | String | 必須 | Geetest V3のみ必須 |
challenge | String | 必須 | Geetest V3のみ必須 |
captchaId | String | オプション | Geetest V4のみ必須 |
geetestApiServerSubdomain | String | オプション | 特殊なAPIサブドメイン、例: api.geetest.com |
リクエスト例
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" // Optional
}
}
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": "..."
}
}
レスポンス例
{
"errorId": 0,
"status": "idle",
"taskId": "61138bb6-19fb-11ec-a9c8-0242ac110006"
}
結果の取得
getTaskResultを使用して結果を取得します。システム負荷に応じて、3秒
から10秒
の間に結果が得られます。
リクエスト例
POST https://api.capsolver.com/getTaskResult
Host: api.capsolver.com
Content-Type: application/json
{
"clientKey":"YOU_API_KEY",
"taskId": "61138bb6-19fb-11ec-a9c8-0242ac110006"
}
レスポンス例
Geetest V3を使用するレスポンス例
{
"errorId": 0,
"solution": {
"challenge": "",
"validate": ""
},
"status": "ready"
}
Geetest V4を使用するレスポンス例
{
"errorId": 0,
"taskId": "e0ecaaa8-06f6-41fd-a02e-a0c79b957b15",
"status": "ready",
"solution": {
"captcha_id": "",
"captcha_output": "",
"gen_time": "",
"lot_number": "",
"pass_token": "",
"risk_type": "slide"
}
}
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": "..."
})
サンプルコード
# pip install requests
import requests
import time
api_key = "YOUR_API_KEY" # TODO: your api key of capsolver
def capsolver():
payload = {
"clientKey": api_key,
"task": {
"type": 'GeeTestTaskProxyLess',
"websiteURL": "https://mywebsite.com/geetest/test.php", # page url of your site
"gt": "...", # v3 is required
"challenge": "...", # v3 is required
"captchaId": "...", # v4 is required
}
}
res = requests.post("https://api.capsolver.com/createTask", json=payload)
resp = res.json()
task_id = resp.get("taskId")
if not task_id:
print("Failed to create task:", res.text)
return
print(f"Got taskId: {task_id} / Getting result...")
while True:
time.sleep(1) # delay
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("Solve failed! response:", res.text)
return
solution = capsolver()
print(solution)
注意点
-
ブラウザの開発者ツールから直接コピーしないでください。リクエストでGTとチャレンジを取得してください。
-
少数のエラーで認証コードのパラメータを再取得する場合、再試行が可能です。
-
認証コードのパラメータは一度だけ識別のために送信できます。同じパラメータを繰り返し送信して識別しないでください。再取得のために初期化し直す必要があります。
-
注: サイトを通過できない場合、エンコーディングの問題が考えられます。その場合、CAPTCHAの
=
記号を%3D
に置き換えてください。その他のエンコーディングは不要です。この点にご注意ください。 -
テストサーバーなどのパラメータは、Geetestのドキュメントで確認できます。