<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">
    <title>403 - 访问受限 | secvue 安全防护</title>
    <style type="text/css">
        :root {
            color-scheme: light dark;
            --bg: #f6f8fb;
            --card: #ffffff;
            --text: #0f172a;
            --muted: #475569;
            --border: rgba(15, 23, 42, 0.10);
            --shadow: 0 12px 28px rgba(15, 23, 42, 0.10);
            --brand: #0b5bd3;
            --brand-2: #0ea5e9;
            --brand-soft: rgba(11, 91, 211, 0.10);
            --danger: #b42318;
            --focus: 0 0 0 4px rgba(11, 91, 211, 0.18);
            --radius: 18px;
        }

        @media (prefers-color-scheme: dark) {
            :root {
                --bg: #0b1220;
                --card: rgba(255, 255, 255, 0.06);
                --text: rgba(255, 255, 255, 0.92);
                --muted: rgba(255, 255, 255, 0.68);
                --border: rgba(255, 255, 255, 0.14);
                --shadow: 0 18px 32px rgba(0, 0, 0, 0.45);
                --brand: #68a3ff;
                --brand-2: #22d3ee;
                --brand-soft: rgba(104, 163, 255, 0.14);
                --danger: #ff6b6b;
                --focus: 0 0 0 4px rgba(104, 163, 255, 0.22);
            }
        }

        * {
            box-sizing: border-box;
        }

        html, body {
            height: 100%;
        }

        body {
            margin: 0;
            background: radial-gradient(800px 500px at 10% 10%, var(--brand-soft), transparent 65%),
                        radial-gradient(800px 500px at 90% 20%, rgba(14, 165, 233, 0.10), transparent 65%),
                        var(--bg);
            color: var(--text);
            font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans CJK SC", "Noto Sans SC", Arial, sans-serif;
            line-height: 1.5;
        }

        .page {
            min-height: 100%;
            display: flex;
            align-items: center;
            justify-content: center;
            padding: 24px 20px;
        }

        .main {
            width: min(1080px, 100%);
            background: var(--card);
            border: 1px solid var(--border);
            border-radius: var(--radius);
            box-shadow: var(--shadow);
            overflow: hidden;
        }

        .header {
            display: flex;
            align-items: center;
            justify-content: space-between;
            gap: 16px;
            padding: 20px 28px 14px;
            flex-wrap: wrap;
            border-bottom: 1px solid var(--border);
        }

        .logo-container img {
            display: block;
            height: 22px;
            width: auto;
            max-width: 220px;
        }

        .badge {
            display: inline-flex;
            align-items: center;
            gap: 8px;
            padding: 6px 14px;
            border-radius: 999px;
            border: 1px solid var(--border);
            color: var(--muted);
            font-size: 12px;
            font-weight: 500;
            background: rgba(255, 255, 255, 0.6);
            backdrop-filter: blur(2px);
        }

        @media (prefers-color-scheme: dark) {
            .badge {
                background: rgba(0, 0, 0, 0.25);
            }
        }

        .badge-dot {
            width: 8px;
            height: 8px;
            border-radius: 50%;
            background: linear-gradient(135deg, var(--brand-2), var(--brand));
            box-shadow: 0 0 0 3px rgba(11, 91, 211, 0.12);
        }

        .content {
            display: grid;
            grid-template-columns: 1.25fr 0.95fr;
            gap: 0;
        }

        @media (max-width: 860px) {
            .content {
                grid-template-columns: 1fr;
            }
        }

        .left {
            padding: 24px 28px 28px;
        }

        .right {
            padding: 24px 28px 28px;
            border-left: 1px solid var(--border);
            background: linear-gradient(135deg, rgba(11, 91, 211, 0.04), transparent 50%);
        }

        @media (max-width: 860px) {
            .right {
                border-left: none;
                border-top: 1px solid var(--border);
            }
        }

        .error-header {
            display: flex;
            align-items: baseline;
            flex-wrap: wrap;
            gap: 12px;
            margin: 0 0 16px;
        }

        .errorCode {
            font-weight: 800;
            letter-spacing: 1px;
            font-size: 38px;
            color: var(--danger);
            line-height: 1.1;
        }

        .subTitle {
            font-size: 18px;
            color: var(--muted);
            font-weight: 500;
        }

        .desc {
            margin: 0 0 18px;
            font-size: 14px;
            color: var(--muted);
            line-height: 1.5;
        }

        .event-info {
            border: 1px solid var(--border);
            background: rgba(11, 91, 211, 0.04);
            padding: 16px 20px;
            border-radius: 16px;
            margin: 18px 0 16px;
        }

        .event-kv {
            display: grid;
            grid-template-columns: 80px 1fr;
            gap: 12px 16px;
            align-items: start;
        }

        .event-k {
            color: var(--muted);
            font-weight: 600;
            letter-spacing: 0.3px;
            font-size: 13px;
        }

        .event-v {
            font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
            background: rgba(0, 0, 0, 0.02);
            padding: 4px 6px;
            border-radius: 10px;
            font-size: 12px;
        }

        @media (prefers-color-scheme: dark) {
            .event-v {
                background: rgba(255, 255, 255, 0.05);
            }
        }

        .event-id-no-wrap {
            white-space: nowrap;
            overflow-x: auto;
            display: block;
            font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
            padding-bottom: 4px;
            scrollbar-width: thin;
            max-width: 100%;
            line-height: 1.4;
        }

        .event-id-no-wrap::-webkit-scrollbar {
            height: 4px;
        }

        .event-id-no-wrap::-webkit-scrollbar-track {
            background: var(--border);
            border-radius: 4px;
        }

        .event-id-no-wrap::-webkit-scrollbar-thumb {
            background: var(--brand);
            border-radius: 4px;
        }

        .highlight-blue {
            color: var(--brand);
            font-weight: 700;
        }

        .form-title {
            margin: 0 0 14px;
            font-size: 15px;
            color: var(--text);
            font-weight: 700;
            border-left: 3px solid var(--brand);
            padding-left: 12px;
        }

        .field-label {
            display: block;
            margin: 14px 0 6px;
            font-size: 12.5px;
            color: var(--muted);
            font-weight: 500;
        }

        .input-field {
            border: 1px solid var(--border);
            border-radius: 12px;
            padding: 10px 12px;
            width: 100%;
            background: transparent;
            color: var(--text);
            font-size: 13px;
            outline: none;
            transition: all 0.2s ease;
        }

        .input-field:focus {
            border-color: rgba(11, 91, 211, 0.65);
            box-shadow: var(--focus);
        }

        .input-field::placeholder {
            color: rgba(71, 85, 105, 0.65);
            font-size: 12px;
        }

        @media (prefers-color-scheme: dark) {
            .input-field::placeholder {
                color: rgba(255, 255, 255, 0.45);
            }
        }

        .textarea {
            resize: vertical;
            min-height: 100px;
        }

        .submit-btn {
            width: 100%;
            margin-top: 20px;
            padding: 10px 14px;
            background: linear-gradient(105deg, var(--brand), #0848aa);
            color: white;
            border: none;
            border-radius: 32px;
            font-size: 14px;
            font-weight: 600;
            cursor: pointer;
            transition: all 0.2s ease;
            box-shadow: 0 4px 12px rgba(11, 91, 211, 0.2);
            letter-spacing: 0.3px;
        }

        .submit-btn:hover {
            filter: brightness(1.02);
            transform: translateY(-1px);
            box-shadow: 0 6px 14px rgba(11, 91, 211, 0.25);
        }

        .submit-btn:active {
            transform: translateY(1px);
            box-shadow: 0 3px 8px rgba(11, 91, 211, 0.2);
        }

        .submit-btn:focus {
            outline: none;
            box-shadow: 0 0 0 4px rgba(11, 91, 211, 0.3), 0 4px 12px rgba(11, 91, 211, 0.2);
        }

        .hint {
            margin: 14px 0 0;
            font-size: 11.5px;
            color: var(--muted);
            display: flex;
            align-items: center;
            gap: 6px;
        }

        .footer {
            margin-top: 24px;
            padding-top: 14px;
            border-top: 1px solid var(--border);
            text-align: left;
            color: var(--muted);
            font-size: 11px;
            opacity: 0.8;
        }

        .copy-id-wrapper {
            display: inline-flex;
            align-items: center;
            gap: 8px;
            flex-wrap: wrap;
            margin-top: 6px;
        }

        .copy-btn {
            background: transparent;
            border: 1px solid var(--border);
            border-radius: 28px;
            padding: 4px 12px;
            font-size: 10.5px;
            font-weight: 500;
            color: var(--brand);
            cursor: pointer;
            transition: 0.2s;
            font-family: inherit;
        }

        .copy-btn:hover {
            background: var(--brand-soft);
            border-color: var(--brand);
            transform: scale(0.98);
        }

        .form-field-wrapper {
            width: 100%;
        }

        @media (max-width: 680px) {
            .left, .right {
                padding: 18px 18px 24px;
            }
            .header {
                padding: 16px 18px 12px;
            }
            .errorCode {
                font-size: 34px;
            }
            .subTitle {
                font-size: 16px;
            }
            .event-kv {
                grid-template-columns: 70px 1fr;
                gap: 10px;
            }
        }

        @media (min-width: 1400px) {
            .page {
                padding: 40px 24px;
            }
        }
    </style>
</head>
<body>
    <div class="page">
        <main class="main" role="main" aria-labelledby="pageTitle">
            <header class="header">
                <div class="logo-container">
                    <img border="0" src="https://m2-cloud.antiddos.cn/common/image/logo-sec.png" alt="secvue 安全防护">
                </div>
                <div class="badge" aria-label="安全防护状态">
                    <span class="badge-dot" aria-hidden="true"></span>
                    已触发安全防护策略
                </div>
            </header>

            <section class="content">
                <div class="left">
                    <div class="error-header">
                        <span class="errorCode">403</span>
                        <h1 id="pageTitle" class="subTitle">Request Forbidden</h1>
                    </div>

                    <p class="desc">
                        该网站已启用<span class="highlight-blue">secvue・网站防护服务</span>。当前访问触发了防护策略，为保障服务稳定性与安全性，请求已被暂时限制。
                        如你需要继续访问或认为触发不符合预期，可通过右侧表单提交反馈，我们将尽快核实处理。
                    </p>

                    <div class="event-info" aria-label="拦截事件信息">
                        <div class="event-kv">
                            <div class="event-k">事件ID</div>
                            <div class="event-v">

<span id="supportId" class="event-id-no-wrap">0e7703e8-6a7820a6-3b2a414d3cb91-69db9c1</span>
                                <div class="copy-id-wrapper">
                                    <button type="button" class="copy-btn" id="copyIdBtn" aria-label="复制事件ID">📋 复制ID</button>
                                </div>
                            </div>
                            <div class="event-k">访问域名</div>
                            <div class="event-v" id="websiteHost"></div>
                        </div>
                    </div>

                    <p class="hint">
                        <span>🔐</span> 请保留“事件ID”或点击复制，以便工程师快速定位问题。
                    </p>
                </div>

                <aside class="right" aria-label="反馈表单">
                    <p class="form-title">
                        <span class="highlight-blue">📢 申请解封 / 问题反馈</span>
                    </p>

                    <div class="form-field-wrapper">
                        <label class="field-label" for="mobile">📱 联系方式（手机号码/邮箱）</label>
                        <input id="mobile" type="text" autocomplete="email" placeholder="请输入手机号或邮箱，便于接收处理进度" required class="input-field" aria-required="true">
                    </div>

                    <div class="form-field-wrapper">
                        <label class="field-label" for="content">📄 反馈内容</label>
                        <textarea id="content" placeholder="请描述您的访问场景、触发拦截时的具体URL、请求方式（GET/POST）、出现时间段，以及您认为误判的理由等信息（越详细处理越快）" required class="input-field textarea" aria-required="true"></textarea>
                    </div>

                    <button class="submit-btn" type="button" onclick="onSend()">提交反馈并申请复核</button>

                    <div class="footer">
                        secapp/2.0.0 · 智能防护引擎 | 30分钟后可刷新页面重试
                    </div>
                </aside>
            </section>
        </main>
    </div>
    <script src="https://code.jquery.com/jquery-4.0.0.min.js"></script>
    <script type="text/javascript">
    var websiteHost = window.location.host;
    if (!websiteHost || websiteHost === '') {
        websiteHost = window.location.hostname || '未知域名';
    }
    $('#websiteHost').html(websiteHost);

    var copyBtn = document.getElementById('copyIdBtn');
    if (copyBtn) {
        copyBtn.addEventListener('click', function() {
            var supportIdText = document.getElementById('supportId').innerText;
            if (!supportIdText) {
                alert('未获取到事件ID，请刷新页面重试');
                return;
            }
            if (navigator.clipboard && navigator.clipboard.writeText) {
                navigator.clipboard.writeText(supportIdText).then(function() {
                    var original = copyBtn.innerText;
                    copyBtn.innerText = '✓ 已复制';
                    setTimeout(function() {
                        copyBtn.innerText = original;
                    }, 1800);
                }).catch(function() {
                    fallbackCopyId(supportIdText);
                });
            } else {
                fallbackCopyId(supportIdText);
            }
        });
    }

    function fallbackCopyId(text) {
        var textarea = document.createElement('textarea');
        textarea.value = text;
        document.body.appendChild(textarea);
        textarea.select();
        var success = false;
        try {
            success = document.execCommand('copy');
        } catch (err) {
            console.warn('复制失败', err);
        }
        document.body.removeChild(textarea);
        if (success) {
            var originalText = copyBtn.innerText;
            copyBtn.innerText = '✓ 已复制';
            setTimeout(function() {
                copyBtn.innerText = originalText;
            }, 1500);
        } else {
            alert('无法自动复制，请手动长按选择事件ID复制');
        }
    }

    function onSend() {
        var mobile = $('#mobile').val().trim();
        if (!mobile) {
            alert('请填写联系方式（手机号或邮箱），便于我们及时反馈处理结果。');
            $('#mobile').focus();
            return;
        }

        var content = $('#content').val().trim();
        if (!content) {
            alert('请填写反馈内容，描述您遇到的访问问题，帮助我们精准核实。');
            $('#content').focus();
            return;
        }

        var supportIdVal = $('#supportId').html();
        if (!supportIdVal || supportIdVal === '') {
            supportIdVal = document.getElementById('supportId')?.innerText || 'unknown_event_id';
        }

        var reqObj = {
            'supportId': supportIdVal,
            'websiteHost': websiteHost,
            'mobile': mobile,
            'content': content,
            'type': 'user_access_interception_feedback'
        };

        var $btn = $('.submit-btn');
        var originalText = $btn.text();
        $btn.text('提交中...').prop('disabled', true);

        $.ajax({
            type: 'post',
            url: 'https://ask.antiddos.cn/feedback',
            contentType: 'application/json;charset=UTF-8',
            data: JSON.stringify(reqObj),
            crossDomain: true,
            timeout: 16000,
            complete: function (jqXHR, textStatus) {
                $btn.text(originalText).prop('disabled', false);
                if (jqXHR.status === 200) {
                    alert('✅ 提交成功！我们的工程师会尽快核实处理，感谢您的耐心配合。');
                    $('#mobile').val('');
                    $('#content').val('');
                    setTimeout(function() {
                        try {
                            if (window.close) {
                                window.close();
                            } else {
                                if (confirm('反馈已提交，是否刷新页面重新尝试访问？')) {
                                    window.location.reload();
                                }
                            }
                        } catch (e) {
                            if (confirm('提交成功！是否需要刷新页面查看最新状态？')) {
                                window.location.reload();
                            }
                        }
                    }, 1500);
                    return;
                }
                if (jqXHR.status === 429) {
                    alert('提交过于频繁，请稍等5分钟后再尝试。');
                } else if (jqXHR.status === 400) {
                    alert('提交参数异常，请检查联系方式（手机号/邮箱）或反馈内容是否合规。');
                } else {
                    alert('提交失败，请稍后重试。如有疑问请联系技术支持。错误码：' + (jqXHR.status || '网络异常'));
                }
            },
            error: function(xhr, status, error) {
                $btn.text(originalText).prop('disabled', false);
                alert('网络或服务异常，请检查网络后重试。' + (error ? ' 详情：' + error : ''));
            }
        });
    }

    $(document).keypress(function (e) {
        var tag = e.target.tagName.toLowerCase();
        if (e.which === 13 && tag !== 'textarea' && tag !== 'input') {
            e.preventDefault();
            onSend();
        }
    });
    </script>
</body>
</html>
