1<!DOCTYPE html> 2<html> 3<head> 4 <meta charset="UTF-8"> 5 <title>ÐÑовеÑка безопаÑноÑÑи</title> 6 <style> 7 * { 8 margin: 0; 9 padding: 0; 10 box-sizing: border-box; 11 } 12 body { 13 font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; 14 display: flex; 15 justify-content: center; 16 align-items: center; 17 min-height: 100vh; 18 background: #f6f6f6; 19 color: #333; 20 } 21 .challenge-box { 22 background: white; 23 padding: 40px; 24 border-radius: 8px; 25 box-shadow: 0 2px 10px rgba(0,0,0,0.1); 26 text-align: center; 27 max-width: 400px; 28 width: 90%; 29 } 30 .spinner { 31 border: 3px solid #f3f3f3; 32 border-top: 3px solid #3498db; 33 border-radius: 50%; 34 width: 40px; 35 height: 40px; 36 animation: spin 1s linear infinite; 37 margin: 20px auto; 38 } 39 @keyframes spin { 40 0% { transform: rotate(0deg); } 41 100% { transform: rotate(360deg); } 42 } 43 h1 { 44 font-size: 20px; 45 margin-bottom: 10px; 46 color: #2c3e50; 47 } 48 p { 49 font-size: 14px; 50 color: #7f8c8d; 51 margin-top: 10px; 52 } 53 .progress-container { 54 margin-top: 20px; 55 } 56 .progress-bar { 57 width: 100%; 58 height: 4px; 59 background: #ecf0f1; 60 border-radius: 2px; 61 overflow: hidden; 62 } 63 .progress-fill { 64 height: 100%; 65 background: #3498db; 66 width: 0%; 67 animation: fillProgress 5s linear forwards; 68 } 69 @keyframes fillProgress { 70 to { width: 100%; } 71 } 72 </style> 73</head> 74<body> 75 <div class="challenge-box"> 76 <h1>ÐÑовеÑка безопаÑноÑÑи</h1> 77 <div class="spinner"></div> 78 <p>ÐÑовеÑÑем Ð²Ð°Ñ Ð±ÑаÑÐ·ÐµÑ Ð¿ÐµÑед доÑÑÑпом к ÑайÑÑ</p> 79 <div class="progress-container"> 80 <div class="progress-bar"> 81 <div class="progress-fill"></div> 82 </div> 83 </div> 84 <p style="margin-top: 15px; font-size: 12px;"> 85 ÐÑо Ð·Ð°Ð¹Ð¼ÐµÑ Ð½ÐµÑколÑко ÑекÑнд 86 </p> 87 </div> 88 89
89<script> 90 (function() { 91 'use strict'; 92 93 const startTime = performance.now(); 94 const minWaitTime = 3000 + Math.random() * 2000; 95 96 function performChecks() { 97 const checks = { 98 navigator: typeof navigator !== 'undefined', 99 window: typeof window !== 'undefined', 100 document: typeof document !== 'undefined', 101 localStorage: typeof localStorage !== 'undefined', 102 sessionStorage: typeof sessionStorage !== 'undefined', 103 canvas: typeof HTMLCanvasElement !== 'undefined', 104 webgl: typeof WebGLRenderingContext !== 'undefined', 105 webdriver: navigator.webdriver === undefined, 106 plugins: navigator.plugins.length > 0, 107 languages: navigator.languages && navigator.languages.length > 0 108 }; 109 110 if (window.phantom || window.callPhantom || window.__nightmare) { 111 return false; 112 } 113 114 if (navigator.webdriver) { 115 return false; 116 } 117 118 if (!checks.navigator || !checks.window || !checks.document) { 119 return false; 120 } 121 122 return true; 123 } 124 125 function generateToken() { 126 const data = { 127 ts: Date.now(),
128 ua: navigator.userAgent.substring(0, 100), 129 lang: navigator.language, 130 tz: Intl.DateTimeFormat().resolvedOptions().timeZone, 131 screen: window.screen.width + 'x' + window.screen.height, 132 rand: Math.random().toString(36) 133 }; 134 return btoa(JSON.stringify(data)); 135 } 136 137 function completeChallenge() { 138 if (!performChecks()) { 139 document.querySelector('.challenge-box').innerHTML = 140 '<h1 style="color: #e74c3c;">ÐоÑÑÑп запÑеÑен</h1>' + 141 '<p>ÐÐ°Ñ Ð±ÑаÑÐ·ÐµÑ Ð½Ðµ пÑоÑел пÑовеÑÐºÑ Ð±ÐµÐ·Ð¾Ð¿Ð°ÑноÑÑи.</p>'; 142 return; 143 } 144 145 const elapsed = performance.now() - startTime; 146 const remaining = Math.max(minWaitTime - elapsed, 100); 147 148 setTimeout(function() { 149 const token = generateToken(); 150 151 document.cookie = 'challenge_token=' + token + 152 '; path=/; max-age=3600; SameSite=Lax'; 153 154 const params = new URLSearchParams(window.location.search); 155 const redirect = params.get('redirect') || '/en/'; 156 window.location.href = redirect; 157 }, remaining); 158 } 159 160 completeChallenge(); 161 })(); 162 </script>
162 163</body> 164</html> 165 166
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.