feat: 移除 Turnstile 支持并优化 reCAPTCHA 错误处理

- 完全移除 Turnstile 验证码相关的代码逻辑,包括初始化、刷新和执行功能
- 删除不再需要的全局变量如 `__cfTurnstileToken` 和 `__lastTurnstileError`
- 优化 reCAPTCHA 的错误处理机制,添加错误计数和最大重试次数限制
- 更新 CSP 策略,移除对 Cloudflare Turnstile 域名的引用
- 简化 captcha-manager.js 代码结构,提高可维护性
This commit is contained in:
Abner
2026-05-18 20:45:31 +08:00
parent 084c055f21
commit 118ee45371
3 changed files with 11 additions and 3 deletions

View File

@@ -21,7 +21,7 @@
<link rel="preconnect" href="https://publicapi.giffgaff.com" crossorigin>
<!-- CSP策略 -->
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdn.jsdelivr.net https://cdnjs.cloudflare.com https://browser.sentry-cdn.com https://www.google.com https://www.gstatic.com; style-src 'self' 'unsafe-inline' https://cdn.jsdelivr.net https://cdnjs.cloudflare.com https://fonts.googleapis.com; font-src 'self' data: https://cdnjs.cloudflare.com; connect-src 'self' https://cdn.jsdelivr.net https://cdnjs.cloudflare.com https://www.google-analytics.com https://www.googletagmanager.com https://qrcode.show https://api.qrserver.com https://appapi.simyo.nl https://api.giffgaff.com https://id.giffgaff.com https://publicapi.giffgaff.com https://www.google.com https://www.gstatic.com https://*.sentry.io; img-src 'self' data: https:; frame-src 'self' https://www.google.com;">
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdn.jsdelivr.net https://cdnjs.cloudflare.com https://browser.sentry-cdn.com https://www.google.com https://www.gstatic.com; style-src 'self' 'unsafe-inline' https://cdn.jsdelivr.net https://cdnjs.cloudflare.com https://fonts.googleapis.com; font-src 'self' data: https://cdnjs.cloudflare.com https://fonts.gstatic.com; connect-src 'self' https://cdn.jsdelivr.net https://cdnjs.cloudflare.com https://www.google-analytics.com https://www.googletagmanager.com https://qrcode.show https://api.qrserver.com https://appapi.simyo.nl https://api.giffgaff.com https://id.giffgaff.com https://publicapi.giffgaff.com https://www.google.com https://www.gstatic.com https://*.sentry.io; img-src 'self' data: https:; frame-src 'self' https://www.google.com;">
<title>Giffgaff eSIM 工具</title>
<link rel="manifest" href="/manifest.webmanifest">

View File

@@ -9,6 +9,8 @@ class CaptchaManager {
this.recaptchaWidgetId = null;
this.recaptchaReadyResolver = null;
this.recaptchaReadyPromise = null;
this.recaptchaErrorCount = 0;
this.recaptchaMaxRetries = 3;
}
async init() {
@@ -70,13 +72,19 @@ class CaptchaManager {
size: 'invisible',
callback: (token) => {
this.storeToken(token);
this.recaptchaErrorCount = 0;
},
'expired-callback': () => {
this.storeToken(undefined);
this.executeRecaptcha();
},
'error-callback': () => {
setTimeout(() => this.executeRecaptcha(), 1000);
this.recaptchaErrorCount++;
if (this.recaptchaErrorCount <= this.recaptchaMaxRetries) {
setTimeout(() => this.executeRecaptcha(), 1000);
} else {
console.warn('[CaptchaManager] reCAPTCHA 连续失败次数超限,停止重试');
}
}
});
this.executeRecaptcha();

View File

@@ -47,7 +47,7 @@
<link rel="preconnect" href="https://appapi.simyo.nl" crossorigin>
<!-- CSP策略 -->
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdn.jsdelivr.net https://cdnjs.cloudflare.com https://browser.sentry-cdn.com; style-src 'self' 'unsafe-inline' https://cdn.jsdelivr.net https://cdnjs.cloudflare.com https://fonts.googleapis.com; font-src 'self' data: https://cdnjs.cloudflare.com; connect-src 'self' https://cdn.jsdelivr.net https://cdnjs.cloudflare.com https://www.google-analytics.com https://www.googletagmanager.com https://qrcode.show https://api.qrserver.com https://appapi.simyo.nl https://*.sentry.io; img-src 'self' data: https:; frame-src 'self';">
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdn.jsdelivr.net https://cdnjs.cloudflare.com https://browser.sentry-cdn.com; style-src 'self' 'unsafe-inline' https://cdn.jsdelivr.net https://cdnjs.cloudflare.com https://fonts.googleapis.com; font-src 'self' data: https://cdnjs.cloudflare.com https://fonts.gstatic.com; connect-src 'self' https://cdn.jsdelivr.net https://cdnjs.cloudflare.com https://www.google-analytics.com https://www.googletagmanager.com https://qrcode.show https://api.qrserver.com https://appapi.simyo.nl https://*.sentry.io; img-src 'self' data: https:; frame-src 'self';">
<title>Simyo NL eSIM 工具</title>
<link rel="manifest" href="/manifest.webmanifest">