release: v1.2.7 — 登录人机验证(滑块 / Turnstile / Cap)
Publish Docker image / build (linux/amd64, ubuntu-latest, amd64) (push) Canceled after 0s
Publish Docker image / build (linux/arm64, ubuntu-24.04-arm, arm64) (push) Canceled after 0s
Publish Docker image / merge (push) Canceled after 0s
ci / ci (22, ubuntu-latest) (push) Canceled after 0s
GitHub Release / release (push) Canceled after 0s

This commit is contained in:
O96u committed 2026-09-03 13:53:43 +08:00
1 parent 8408d01197
commit 430c4de0f4
42 files changed
+1103 -72

No files matched your search

+36
View File
@@ -0,0 +1,36 @@
interface TurnstileVerifyResult {
success?: boolean
}
export async function verifyTurnstileToken(
secret: string,
token: string,
remoteIp?: string
): Promise<boolean> {
if (!secret || !token) return false
const params = new URLSearchParams({
secret,
response: token
})
if (remoteIp) {
params.set('remoteip', remoteIp)
}
const controller = new AbortController()
const timeout = setTimeout(() => controller.abort(), 5000)
try {
const response = await fetch('https://challenges.cloudflare.com/turnstile/v0/siteverify', {
method: 'POST',
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
body: params,
signal: controller.signal
})
const result = await response.json() as TurnstileVerifyResult
return result.success === true
} catch {
return false
} finally {
clearTimeout(timeout)
}
}