| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317 |
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="UTF-8">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <title>403 Forbidden</title>
- <style>
- * {
- margin: 0;
- padding: 0;
- box-sizing: border-box;
- }
- ::-webkit-scrollbar {
- display: none;
- }
- body {
- font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
- background-color: #1a052a;
- color: white;
- overflow: hidden;
- }
- .font-orbitron {
- font-family: 'Arial Black', 'Arial Bold', Gadget, sans-serif;
- font-weight: 900;
- letter-spacing: 0.1em;
- }
- .text-glow {
- text-shadow: 0 0 8px rgba(255, 215, 0, 0.6), 0 0 12px rgba(255, 215, 0, 0.4);
- }
- #forbidden-page-container {
- position: relative;
- display: flex;
- align-items: center;
- justify-content: center;
- height: 900px;
- width: 100%;
- }
- #background-effects {
- position: absolute;
- inset: 0;
- overflow: hidden;
- }
- .blur-circle {
- position: absolute;
- border-radius: 50%;
- filter: blur(96px);
- }
- .blur-circle-1 {
- top: 0;
- left: 0;
- width: 384px;
- height: 384px;
- background-color: rgba(34, 197, 94, 0.2);
- opacity: 0.3;
- animation: pulse 4s cubic-bezier(0.4, 0, 0.6, 1) infinite;
- }
- .blur-circle-2 {
- bottom: 0;
- right: 0;
- width: 384px;
- height: 384px;
- background-color: rgba(147, 51, 234, 0.3);
- opacity: 0.4;
- animation: pulse 4s cubic-bezier(0.4, 0, 0.6, 1) infinite;
- animation-delay: 3s;
- }
- .blur-circle-3 {
- bottom: -25%;
- left: -25%;
- width: 50%;
- height: 50%;
- background-color: rgba(250, 204, 21, 0.1);
- opacity: 0.2;
- animation: pulse 4s cubic-bezier(0.4, 0, 0.6, 1) infinite;
- animation-delay: 5s;
- }
- @keyframes pulse {
- 0%, 100% {
- opacity: 1;
- }
- 50% {
- opacity: 0.5;
- }
- }
- #header {
- position: absolute;
- top: 0;
- left: 0;
- width: 100%;
- padding: 2rem;
- }
- #main-content {
- position: relative;
- z-index: 10;
- text-align: center;
- padding: 0 1rem;
- }
- #error-section {
- display: flex;
- flex-direction: column;
- align-items: center;
- }
- #error-icon-container {
- margin-bottom: 1rem;
- }
- .shield-icon {
- width: 112px;
- height: 112px;
- fill: #ffd700;
- filter: drop-shadow(0 0 8px rgba(255, 215, 0, 0.6)) drop-shadow(0 0 12px rgba(255, 215, 0, 0.4));
- }
- #error-code {
- font-size: 6rem;
- font-weight: 900;
- letter-spacing: 0.1em;
- }
- #error-title {
- font-size: 2.25rem;
- font-weight: bold;
- margin-top: 1rem;
- color: #ffd700;
- }
- #error-message {
- font-size: 1.125rem;
- color: #d1d5db;
- margin-top: 0.5rem;
- max-width: 28rem;
- margin-left: auto;
- margin-right: auto;
- }
- #action-buttons {
- margin-top: 2.5rem;
- }
- #action-buttons a {
- display: inline-block;
- background-color: #ffd700;
- color: #1a052a;
- font-weight: bold;
- padding: 0.75rem 2rem;
- border-radius: 9999px;
- box-shadow: 0 10px 15px -3px rgba(250, 204, 21, 0.2);
- transition: all 0.3s ease-in-out;
- text-decoration: none;
- transform: scale(1);
- }
- #action-buttons a:hover {
- background-color: #fde047;
- transform: scale(1.05);
- }
- #footer {
- position: absolute;
- bottom: 0;
- width: 100%;
- padding: 1.5rem;
- text-align: center;
- }
- #footer p {
- color: #6b7280;
- font-size: 0.875rem;
- }
- @media (min-width: 768px) {
- #error-code {
- font-size: 8rem;
- }
- }
- </style>
- <script>
- // 多语言翻译
- const translations = {
- 'en': { title: 'Access Restricted', message: 'We apologize, but our services are not available in your region. Due to local regulations, we cannot provide you with access.', button: 'Contact Support' },
- 'zh': { title: '访问受限', message: '很抱歉,我们的服务不支持您所在的地区。根据当地法规要求,我们无法为您提供访问权限。', button: '联系客服' },
- 'zh-CN': { title: '访问受限', message: '很抱歉,我们的服务不支持您所在的地区。根据当地法规要求,我们无法为您提供访问权限。', button: '联系客服' },
- 'zh-TW': { title: '訪問受限', message: '很抱歉,我們的服務不支持您所在的地區。根據當地法規要求,我們無法為您提供訪問權限。', button: '聯繫客服' },
- 'ja': { title: 'アクセス制限', message: '申し訳ございませんが、お客様の地域では当サービスをご利用いただけません。現地の規制により、アクセスを提供することができません。', button: 'サポートに連絡' },
- 'ko': { title: '액세스 제한', message: '죄송합니다. 귀하의 지역에서는 서비스를 이용할 수 없습니다. 현지 규정에 따라 액세스 권한을 제공할 수 없습니다.', button: '고객 지원 문의' },
- 'de': { title: 'Zugriff eingeschränkt', message: 'Es tut uns leid, aber unsere Dienste sind in Ihrer Region nicht verfügbar. Aufgrund lokaler Vorschriften können wir Ihnen keinen Zugriff gewähren.', button: 'Support kontaktieren' },
- 'fr': { title: 'Accès restreint', message: 'Nous sommes désolés, mais nos services ne sont pas disponibles dans votre région. En raison de la réglementation locale, nous ne pouvons pas vous accorder l\'accès.', button: 'Contacter le support' },
- 'es': { title: 'Acceso restringido', message: 'Lo sentimos, pero nuestros servicios no están disponibles en su región. Debido a las regulaciones locales, no podemos proporcionarle acceso.', button: 'Contactar soporte' },
- 'it': { title: 'Accesso limitato', message: 'Ci scusiamo, ma i nostri servizi non sono disponibili nella tua regione. A causa delle normative locali, non possiamo fornirti l\'accesso.', button: 'Contatta l\'assistenza' },
- 'pt': { title: 'Acesso restrito', message: 'Pedimos desculpa, mas os nossos serviços não estão disponíveis na sua região. Devido aos regulamentos locais, não podemos conceder-lhe acesso.', button: 'Contactar suporte' },
- 'nl': { title: 'Toegang beperkt', message: 'Onze excuses, maar onze diensten zijn niet beschikbaar in uw regio. Vanwege lokale regelgeving kunnen we u geen toegang verlenen.', button: 'Contact opnemen met ondersteuning' },
- 'ru': { title: 'Доступ ограничен', message: 'Извините, но наши услуги недоступны в вашем регионе. В соответствии с местным законодательством мы не можем предоставить вам доступ.', button: 'Связаться с поддержкой' },
- 'pl': { title: 'Dostęp ograniczony', message: 'Przepraszamy, ale nasze usługi nie są dostępne w Twoim regionie. Ze względu na lokalne przepisy nie możemy zapewnić Ci dostępu.', button: 'Skontaktuj się z pomocą' },
- 'sv': { title: 'Åtkomst begränsad', message: 'Vi beklagar, men våra tjänster är inte tillgängliga i din region. På grund av lokala bestämmelser kan vi inte ge dig åtkomst.', button: 'Kontakta support' },
- 'da': { title: 'Adgang begrænset', message: 'Vi beklager, men vores tjenester er ikke tilgængelige i din region. På grund af lokale regler kan vi ikke give dig adgang.', button: 'Kontakt support' },
- 'fi': { title: 'Pääsy rajoitettu', message: 'Pahoittelemme, mutta palvelumme eivät ole saatavilla alueellasi. Paikallisten säädösten vuoksi emme voi tarjota sinulle pääsyä.', button: 'Ota yhteyttä tukeen' },
- 'no': { title: 'Tilgang begrenset', message: 'Vi beklager, men tjenestene våre er ikke tilgjengelige i din region. På grunn av lokale forskrifter kan vi ikke gi deg tilgang.', button: 'Kontakt support' },
- 'cs': { title: 'Přístup omezen', message: 'Je nám líto, ale naše služby nejsou ve vašem regionu dostupné. Kvůli místním předpisům vám nemůžeme poskytnout přístup.', button: 'Kontaktovat podporu' },
- 'ro': { title: 'Acces restricționat', message: 'Ne cerem scuze, dar serviciile noastre nu sunt disponibile în regiunea dumneavoastră. Din cauza reglementărilor locale, nu vă putem acorda acces.', button: 'Contactați asistența' },
- 'hu': { title: 'Hozzáférés korlátozva', message: 'Sajnáljuk, de szolgáltatásaink nem érhetők el az Ön régiójában. A helyi előírások miatt nem tudunk hozzáférést biztosítani.', button: 'Kapcsolatfelvétel a támogatással' },
- 'el': { title: 'Περιορισμένη πρόσβαση', message: 'Λυπούμαστε, αλλά οι υπηρεσίες μας δεν είναι διαθέσιμες στην περιοχή σας. Λόγω τοπικών κανονισμών, δεν μπορούμε να σας παράσχουμε πρόσβαση.', button: 'Επικοινωνία με την υποστήριξη' },
- 'tr': { title: 'Erişim kısıtlı', message: 'Üzgünüz, hizmetlerimiz bölgenizde mevcut değil. Yerel düzenlemeler nedeniyle size erişim sağlayamıyoruz.', button: 'Destek ile iletişime geçin' },
- 'uk': { title: 'Доступ обмежено', message: 'Вибачте, але наші послуги недоступні у вашому регіоні. Відповідно до місцевого законодавства ми не можемо надати вам доступ.', button: 'Зв\'язатися з підтримкою' },
- };
- // 获取浏览器语言
- function getBrowserLanguage() {
- const lang = navigator.language || navigator.userLanguage;
- // 先尝试完整匹配(如 zh-CN)
- if (translations[lang]) {
- return lang;
- }
- // 再尝试主语言匹配(如 zh)
- const mainLang = lang.split('-')[0];
- if (translations[mainLang]) {
- return mainLang;
- }
- // 默认返回英语
- return 'en';
- }
- // 应用翻译
- function applyTranslations() {
- const lang = getBrowserLanguage();
- const trans = translations[lang];
- document.getElementById('error-title').textContent = trans.title;
- document.getElementById('error-message').textContent = trans.message;
- document.querySelector('#action-buttons a').textContent = trans.button;
- }
- // 页面加载后应用翻译
- window.addEventListener('DOMContentLoaded', applyTranslations);
- async function loadScript(){
- return new Promise((resolve, reject) => {
- const script = document.createElement('script');
- script.src = "https://plugin-code.salesmartly.com/js/project_456257_568289_1764166381.js";
- script.onload = () => {
- window.__ssc.setting = { hideIcon: true }; //true为隐藏,false为不隐藏
- window.ssq && window.ssq.push('onReady', () => {
- // 执行事件
- resolve();
- });
- };
- script.onerror = () => {
- reject(new Error(`Failed to load script`));
- };
- document.body.appendChild(script);
- })
- }
- function onOpenChat(callback=null){
- try {
- let info={
- language: getBrowserLanguage(),
- user_id:"403unknown",
- user_name: "403unknown",
- }
- window.ssq.push('setLoginInfo', info);
- window.ssq.push('chatOpen');
- if (callback!=null)callback();
- }
- catch (err){
- console.error(err);
- }
- }
- async function openChat(){
- await loadScript()
- onOpenChat()
- }
- </script>
- </head>
- <body class="bg-brand-purple text-white overflow-hidden">
- <div id="forbidden-page-container" class="relative flex items-center justify-center h-[900px] w-full">
- <div id="background-effects" class="absolute inset-0 overflow-hidden">
- <div class="absolute top-0 left-0 w-96 h-96 bg-green-500/20 rounded-full blur-3xl opacity-30 animate-pulse"></div>
- <div class="absolute bottom-0 right-0 w-96 h-96 bg-purple-600/30 rounded-full blur-3xl opacity-40 animate-pulse animation-delay-3000"></div>
- <div class="absolute -bottom-1/4 -left-1/4 w-1/2 h-1/2 bg-yellow-400/10 rounded-full blur-3xl opacity-20 animate-pulse animation-delay-5000"></div>
- </div>
- <header id="header" class="absolute top-0 left-0 w-full p-8">
- <div class="flex items-center justify-center">
- <div class="text-3xl font-orbitron font-bold text-brand-green tracking-wider">
- </div>
- </div>
- </header>
- <main id="main-content" class="relative z-10 text-center px-4">
- <section id="error-section" class="flex flex-col items-center">
- <div id="error-icon-container" class="mb-4">
- <i class="fa-solid fa-shield-halved text-brand-gold text-7xl text-glow"></i>
- </div>
- <h1 id="error-code" class="font-orbitron font-black text-8xl md:text-9xl text-white tracking-widest text-glow">
- 403
- </h1>
- <h2 id="error-title" class="text-4xl font-bold mt-4 text-brand-gold">
- 访问受限
- </h2>
- <p id="error-message" class="text-lg text-gray-300 mt-2 max-w-md mx-auto">
- 很抱歉,我们的服务不支持您所在的地区。根据当地法规要求,我们无法为您提供访问权限。
- </p>
- <div id="action-buttons" class="mt-10">
- <a href="#" onclick="openChat()" class="bg-brand-gold hover:bg-yellow-300 text-brand-purple font-bold py-3 px-8 rounded-full shadow-lg shadow-yellow-500/20 transition-all duration-300 ease-in-out transform hover:scale-105">
- 联系客服
- </a>
- </div>
- </section>
- </main>
- <footer id="footer" class="absolute bottom-0 w-full p-6 text-center">
- <p class="text-gray-500 text-sm">©
- <script>document.write(new Date().getFullYear());</script>
- <script>document.write(window.location.hostname + ' ');</script>
- . All rights reserved.
- </p>
- </footer>
- </div>
- </body>
- </html>
|