PRODUCT TEST WORKSPACE
Cloudflare Turnstile
Captcha verification product
CLOUDFLARE_TURNSTILE02 / REQUEST
請求預覽
POST /api/validator/create.cgi
{
"productCode" : "CLOUDFLARE_TURNSTILE",
"adapter" : {
"websiteURL" : "https://example.com/register",
"websiteKey" : "YOUR_WEBSITEKEY"
}
}
03 / RESULT
響應示例
Task ID
—
{
"code" : 0,
"msg" : "操作成功",
"data" : {
"taskId" : "11111111-1111-4111-8111-111111111111",
"productCode" : "CLOUDFLARE_TURNSTILE",
"state" : "SUCCEEDED",
"solution" : {
"token" : "EXAMPLE_TOKEN",
"userAgent" : "EXAMPLE_USERAGENT"
}
}
}
響應僅爲示例,不是真實任務結果。提交前請替換請求中的所有示例值。
狀態爲 SUCCEEDED 後讀取 data.solution。答案字段因產品而異,其他狀態可能返回空對象。
04 / API REFERENCE
Cloudflare Turnstile · API
建立與查詢任務時,將 API Key 統一放在 HTTP apiKey 請求標頭中;JSON 請求本文只包含業務參數。
Content-Type: application/json apiKey: YOUR_API_KEY
請求示例
{
"productCode": "CLOUDFLARE_TURNSTILE", // 產品編碼,必須與 adapter 參數匹配。
"adapter": { // 產品專屬參數對象。
"websiteURL": "https://example.com/register", // 實際承載該控件的完整頁面 URL,取自同一目標會話。
"websiteKey": "YOUR_WEBSITEKEY", // 該 Turnstile 控件的實際 sitekey,不能使用其他站點的 Key。
"action": "YOUR_ACTION", // 實際 render action;整頁挑戰提供 pagedata 時必填。獨立控件也可以僅設定 action,不需要因此補 pagedata。
"data": "CURRENT_CDATA", // 實際 render cData,向上游使用 data;相容別名 cData,兩者同時提供且不同會在計費前拒絕。
"pagedata": "CURRENT_CHL_PAGE_DATA", // Cloudflare 整頁挑戰目前 render 的 chlPageData,向上游使用 pagedata;提供時 action、data 也必須齊全。不是所有獨立控件都必填。
"cData": "CURRENT_CDATA", // data 的相容別名,建議使用 data;已提供 data 時省略此別名。
"chlPageData": "CURRENT_CHL_PAGE_DATA", // pagedata 的相容別名,建議使用 pagedata;已提供 pagedata 時省略此別名。
"userAgent": "YOUR_BROWSER_USER_AGENT", // 可選,實際瀏覽器 User-Agent。回傳的 solution.userAgent 必須保留;不能假設上游一定回傳輸入的 UA。
"proxyType": "http", // 可選代理協定:http、socks4、socks5。提供任一代理欄位時,proxyType、proxyAddress、proxyPort 必須齊全;全部省略時沿用無代理模式。
"proxyAddress": "YOUR_PROXY_HOST", // 代理主機名稱或 IP,不含協定、連接埠及認證資訊;按目標會話要求使用對應出口。
"proxyPort": 8080, // 代理 TCP 連接埠,1 至 65535 的整數,僅使用代理時必填。
"proxyLogin": "YOUR_PROXYLOGIN", // 僅該代理需要認證時提供的使用者名稱。
"proxyPassword": "YOUR_PROXYPASSWORD" // 僅該代理需要認證時提供的密碼。
}
}
請求標頭: apiKey: YOUR_API_KEY
註解用於說明欄位,複製後取得不含註解的標準 JSON。
響應示例
{
"code": 0, // 業務回傳碼,0 表示成功,其他值表示錯誤。
"msg": "操作成功", // 結果說明,成功時可能為空。
"data": { // 回應資料,介面報錯時可能為 null。
"taskId": "11111111-1111-4111-8111-111111111111", // 創建任務返回的任務 ID。
"productCode": "CLOUDFLARE_TURNSTILE", // 產品編碼,必須與 adapter 參數匹配。
"state": "SUCCEEDED", // 任務狀態:CREATED、SUBMITTING、PROCESSING、SUCCEEDED、FAILED、EXPIRED。
"solution": { // SUCCEEDED 時的產品答案;處理中或失敗時為空物件。
"token": "EXAMPLE_TOKEN", // 提交至目標網站的驗證權杖。
"userAgent": "EXAMPLE_USERAGENT" // 取得答案時使用的瀏覽器 User-Agent。
}
}
}
建立任務會回傳任務 ID 和初始狀態。下方為查詢介面的完成結果,也可透過 WebSocket 接收答案。
請求參數說明
| 字段 | 類型 | 必填 | 說明 |
|---|---|---|---|
productCode | string | 是 | 產品編碼,必須與 adapter 參數匹配。 |
adapter | object | 是 | 產品專屬參數對象。 |
adapter.websiteURL | string | 是 | 實際承載該控件的完整頁面 URL,取自同一目標會話。 |
adapter.websiteKey | string | 是 | 該 Turnstile 控件的實際 sitekey,不能使用其他站點的 Key。 |
adapter.action | string | 否 | 實際 render action;整頁挑戰提供 pagedata 時必填。獨立控件也可以僅設定 action,不需要因此補 pagedata。 |
adapter.data | string | 否 | 實際 render cData,向上游使用 data;相容別名 cData,兩者同時提供且不同會在計費前拒絕。 |
adapter.pagedata | string | 否 | Cloudflare 整頁挑戰目前 render 的 chlPageData,向上游使用 pagedata;提供時 action、data 也必須齊全。不是所有獨立控件都必填。 |
adapter.cData | string | 否 | data 的相容別名,建議使用 data;已提供 data 時省略此別名。 |
adapter.chlPageData | string | 否 | pagedata 的相容別名,建議使用 pagedata;已提供 pagedata 時省略此別名。 |
adapter.userAgent | string | 否 | 可選,實際瀏覽器 User-Agent。回傳的 solution.userAgent 必須保留;不能假設上游一定回傳輸入的 UA。 |
adapter.proxyType | string | 否 | 可選代理協定:http、socks4、socks5。提供任一代理欄位時,proxyType、proxyAddress、proxyPort 必須齊全;全部省略時沿用無代理模式。 |
adapter.proxyAddress | string | 否 | 代理主機名稱或 IP,不含協定、連接埠及認證資訊;按目標會話要求使用對應出口。 |
adapter.proxyPort | integer | 否 | 代理 TCP 連接埠,1 至 65535 的整數,僅使用代理時必填。 |
adapter.proxyLogin | string | 否 | 僅該代理需要認證時提供的使用者名稱。 |
adapter.proxyPassword | string | 否 | 僅該代理需要認證時提供的密碼。 |
回應參數說明
| 字段 | 類型 | 說明 |
|---|---|---|
code | integer | 業務回傳碼,0 表示成功,其他值表示錯誤。 |
msg | string | 結果說明,成功時可能為空。 |
data | object | null | 回應資料,介面報錯時可能為 null。 |
data.taskId | string | 創建任務返回的任務 ID。 |
data.productCode | string | 產品編碼,必須與 adapter 參數匹配。 |
data.state | string | 任務狀態:CREATED、SUBMITTING、PROCESSING、SUCCEEDED、FAILED、EXPIRED。 |
data.solution | object | SUCCEEDED 時的產品答案;處理中或失敗時為空物件。 |
data.failure | object | omitted | 僅 FAILED 或 EXPIRED 回傳的公開診斷,不含上游原始訊息;按失敗處理指引操作。 |
data.failure.code | string | 失敗編碼 |
data.failure.nextAction | string | 下一步 |
data.solution.token | string | 提交至目標網站的驗證權杖。 |
data.solution.userAgent | string | 取得答案時使用的瀏覽器 User-Agent。 |
響應
HTTP 業務響應包含 code、msg 和 data;code 爲 0 表示成功。WebSocket 使用獨立的消息結構。
- -1317
- API Key 無效。
- -1100 / -1101
- 請求參數錯誤或缺失。
- -1401
- 餘額不足,請儲值後再建立任務
- -1400 / -1001
- 系統或創建任務錯誤。