Cloudflare: Turnstileの解決
TIP
createTask メソッドでタスクを作成し、 getTaskResult メソッドで結果を取得します。
DANGER
ℹ️turnstile
タイプはプロキシを必要としないため、AntiTurnstileTaskProxyLess
を使用してください。
Turnstile CAPTCHAは、reCAPTCHAを置き換える別の試みです。当社は以下のサブタイプを自動的にサポートしています。
- turnstile
- 手動
- 非対話型
- 不可視
呼び出し中にサブタイプを指定する必要はありません。現時点では、独自のカスタムUser-Agent
を提供する必要はなく、
このパラメータは無視されます。
タスクタイプtype
は以下の通りです。
AntiTurnstileTaskProxyLess
タスクの作成
createTask でタスクを作成します。
Turnstileを使用する際、websiteURL
とwebsiteKey
を入力する必要があります。その他のパラメータはオプションです。
タスクオブジェクトの構造
プロパティ | 型 | 必須 | 説明 |
---|---|---|---|
type | String | 必須 | AntiTurnstileTaskProxyLess |
websiteURL | String | 必須 | ターゲットページのURL。 |
websiteKey | String | 必須 | Turnstileのウェブサイトキー。 |
metadata | Map<String,String> | 任意 | Turnstileの追加データ。Turnstile Documentation |
metadata.action | String | 任意 | 存在する場合、Turnstile要素のdata-action 属性の値。 |
metadata.cdata | String | 任意 | 存在する場合、Turnstile要素のdata-cdata 属性の値。 |
リクエスト例
POST https://api.capsolver.com/createTask
Host: api.capsolver.com
Content-Type: application/json
{
"clientKey": "YOUR_API_KEY",
"task": {
"type": "AntiTurnstileTaskProxyLess",
"websiteURL": "https://www.yourwebsite.com",
"websiteKey": "0x4XXXXXXXXXXXXXXXXX",
"metadata": {
"action": "login", //optional
"cdata": "0000-1111-2222-3333-example-cdata" //optional
}
}
}
レスポンス例
{
"errorId": 0,
"status": "idle",
"taskId": "61138bb6-19fb-11ec-a9c8-0242ac110006" // record taskId
}
結果の取得
getTaskResult メソッドを使用して認識結果を取得します。
システム負荷に応じて、1秒
から20秒
の間に結果が得られます。
リクエスト例
POST https://api.capsolver.com/getTaskResult
Host: api.capsolver.com
Content-Type: application/json
{
"clientKey": "YOUR_API_KEY",
"taskId": "61138bb6-19fb-11ec-a9c8-0242ac110006"
}
レスポンス例
{
"errorId": 0,
"taskId": "61138bb6-19fb-11ec-a9c8-0242ac110006",
"status": "ready",
"errorCode": null,
"errorDescription": null,
"solution": {
"token": "0.mF74FV8wEufAWOdvOak_xFaVy3lqIDel7SwNhw3GgpICSWwTjYfrQB8mRT1dAJJBEoP7N1sESdp6WH9cTS1T0catWLecG3ayNcjwxVtr3hWfS-dmcBGRTx4xYwI64sAVboYGpIyuDBeMIRC3W8dK35v1nDism9xa595Da5VlXKM7hk7pIXg69lodfiftasIkyD_KUGkxBwxLrmz7dBo10-Y5zvro9hD4QKRjOx7DYj9sumnkyYCDx0m4ImDIIkNswfVTWI2V22wlnpHdvMgdtKYgOIIAU28y9gtdrdDkpkH0GHcDyd15sxQGd9VjwhGZA_mpusUKMsEoGgst2rJ3zA.UWfZupqLlGvlATkPo3wdaw.38d55cd0163610d8ce8c42fcff7b62d8981495cc1afacbb2f14e5a23682a4e13",
"type": "turnstile",
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36"
}
}
SDKリクエストの使用
# pip install --upgrade capsolver
# export CAPSOLVER_API_KEY='...'
import capsolver
# capsolver.api_key = "..."
solution = capsolver.solve({
"type": "AntiTurnstileTaskProxyLess",
"websiteURL": "https://www.yourwebsite.com",
"websiteKey": "0x4XXXXXXXXXXXXXXXXX",
"metadata": {
"action": "login" # optional
}
})
サンプルコード
# pip install requests
import requests
import time
api_key = "YOUR_API_KEY" # your api key of capsolver
site_key = "0x4XXXXXXXXXXXXXXXXX" # site key of your target site
site_url = "https://www.yourwebsite.com" # page url of your target site
def capsolver():
payload = {
"clientKey": api_key,
"task": {
"type": 'AntiTurnstileTaskProxyLess',
"websiteKey": site_key,
"websiteURL": site_url,
"metadata": {
"action": "" # optional
}
}
}
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", {}).get('token')
if status == "failed" or resp.get("errorId"):
print("Solve failed! response:", res.text)
return
token = capsolver()
print(token)