Найден корректный robots.txt
Файл управления сканированием сайта роботами
?
Robots.txt указывает поисковым роботам, какие страницы сканировать, а какие — нет. Ошибки в файле могут случайно закрыть важные разделы от индексации.
Robots.txt настроен корректно. Размер файла: 12455 байт. Загружен за: 0сек.
Проверяемая страница не запрещена в robots.txt.
Показать содержимое robots.txt
# As a condition of accessing this website, you agree to abide by the following
# content signals:
# (a) If a Content-Signal = yes, you may collect content for the corresponding
# use.
# (b) If a Content-Signal = no, you may not collect content for the
# corresponding use.
# (c) If the website operator does not include a Content-Signal for a
# corresponding use, the website operator neither grants nor restricts
# permission via Content-Signal with respect to the corresponding use.
# The content signals and their meanings are:
# search: building a search index and providing search results (e.g., returning
# hyperlinks and short excerpts from your website's contents). Search does not
# include providing AI-generated search summaries.
# ai-input: inputting content into one or more AI models (e.g., retrieval
# augmented generation, grounding, or other real-time taking of content for
# generative AI search answers).
# ai-train: training or fine-tuning AI models.
# use: how AI systems may consume the content (immediate, reference, or full).
# ANY RESTRICTIONS EXPRESSED VIA CONTENT SIGNALS ARE EXPRESS RESERVATIONS OF
# RIGHTS UNDER ARTICLE 4 OF THE EUROPEAN UNION DIRECTIVE 2019/790 ON COPYRIGHT
# AND RELATED RIGHTS IN THE DIGITAL SINGLE MARKET.
# BEGIN Cloudflare Managed content
User-agent: *
Content-Signal: search=yes,ai-train=no,use=reference
Allow: /
User-agent: Amazonbot
Disallow: /
User-agent: Applebot-Extended
Disallow: /
User-agent: Bytespider
Disallow: /
User-agent: CCBot
Disallow: /
User-agent: ClaudeBot
Disallow: /
User-agent: CloudflareBrowserRenderingCrawler
Disallow: /
User-agent: Google-Extended
Disallow: /
User-agent: GPTBot
Disallow: /
User-agent: meta-externalagent
Disallow: /
# END Cloudflare Managed Content
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Just a moment...</title>
<style>
* { margin: 0; padding: 0; box-sizing: border-box; }
body {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
min-height: 100vh;
display: flex;
flex-direction: column;
}
.cf-header {
background: var(--header-bg, #fff);
border-bottom: 1px solid var(--border, #e5e7eb);
padding: 12px 24px;
display: flex;
align-items: center;
}
.cf-logo { display: flex; align-items: center; gap: 8px; text-decoration: none; }
.cf-logo span { font-size: 18px; font-weight: 600; color: var(--logo-color, #1d2028); }
.main {
flex: 1;
display: flex;
justify-content: center;
align-items: center;
padding: 40px 20px;
background: var(--bg, #f0f2f5);
}
.card {
background: var(--card-bg, #fff);
border-radius: var(--radius, 8px);
box-shadow: var(--shadow, 0 1px 3px rgba(0,0,0,0.1));
padding: 48px 40px;
max-width: 440px;
width: 100%;
text-align: center;
}
.spinner-wrap { margin: 0 auto 28px; width: 60px; height: 60px; }
.spinner-wrap svg { width: 60px; height: 60px; }
.spin { animation: spin 0.9s linear infinite; }
.spin-reverse { animation: spin 0.9s linear infinite reverse; }
.pulse { animation: pulse-anim 1.2s ease-in-out infinite; }
.bounce-dots { display: flex; justify-content: center; gap: 8px; align-items: center; height: 60px; }
.dot { width: 12px; height: 12px; border-radius: 50%; background: var(--accent, #f38020); animation: bounce 0.6s ease-in-out infinite; }
.dot:nth-child(2) { animation-delay: 0.1s; }
.dot:nth-child(3) { animation-delay: 0.2s; }
@keyframes spin { 100% { transform: rotate(360deg); } }
@keyframes pulse-anim { 0%,100% { opacity: 1; transform: scale(1); } 50% { opacity: 0.5; transform: scale(0.85); } }
@keyframes bounce { 0%,100% { transform: translateY(0); } 50% { transform: translateY(-16px); } }
h1 { font-size: 22px; font-weight: 600; color: var(--text, #1d2028); margin-bottom: 12px; }
.subtitle { font-size: 14px; color: var(--subtext, #6b7280); line-height: 1.6; margin-bottom: 28px; }
.progress-bar { background: var(--progress-bg, #e5e7eb); border-radius: 4px; height: 4px; overflow: hidden; margin-bottom: 28px; }
.progress-fill { height: 100%; background: var(--accent, #f38020); border-radius: 4px; animation: progress 3s ease-in-out infinite; }
@keyframes progress { 0% { width: 0%; } 50% { width: 70%; } 80% { width: 85%; } 100% { width: 100%; } }
.checks { text-align: left; margin-bottom: 28px; }
.check-item { display: flex; align-items: center; gap: 10px; padding: 6px 0; font-size: 13px; color: var(--subtext, #6b7280); }
.check-item.done { color: var(--text, #374151); }
.check-icon { width: 18px; height: 18px; border-radius: 50%; flex-shrink: 0; display: flex; align-items: center; justify-content: center; font-size: 10px; }
.check-icon.pending { border: 2px solid #d1d5db; animation: pulse-anim 1s ease-in-out infinite; }
.check-icon.done-icon { background: var(--accent, #10b981); color: #fff; }
.ray { font-size: 11px; color: #9ca3af; margin-top: 8px; }
.cf-footer { text-align: center; padding: 16px; font-size: 12px; color: #9ca3af; }
.cf-footer a { color: var(--accent, #f38020); text-decoration: none; }
</style>
</head>
<body>
<header class="cf-header">
<a class="cf-logo" href="#">
<svg width="32" height="32" viewBox="0 0 109 41" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M82.5 14.5c-1.2-4.4-5.2-7.5-9.9-7.5-1.1 0-2.2.2-3.2.5C67.5 4.1 63.8 2 59.5 2c-7.2 0-13 5.8-13 13 0 .3 0 .7.1 1C43 17.2 40 20.5 40 24.5c0 4.4 3.6 8 8 8h34c4.4 0 8-3.6 8-8 0-4-3-7.3-7.5-10z" fill="#F38020"/>
<path d="M93 16.5c-.8-3-3.5-5.2-6.8-5.2-.8 0-1.5.1-2.2.4C82.5 9 79.8 7 76.5 7c-5 0-9 4-9 9 0 .2 0 .5.1.7C65 17.5 63 19.7 63 22.5c0 3 2.5 5.5 5.5 5.5H95c3 0 5.5-2.5 5.5-5.5 0-2.8-2-5-7.5-6z" fill="#FBAD41"/>
</svg>
<span>Cloudflare</span>
</a>
</header>
<main class="main">
<div class="card">
<div class="spinner-wrap" id="spinner-wrap"></div>
<h1 id="title">Checking your browser...</h1>
<p class="subtitle"><span id="domain"></span> needs to review the security of your connection before proceeding.</p>
<div class="progress-bar"><div class="progress-fill"></div></div>
<div class="checks">
<div class="check-item done">
<div class="check-icon done-icon">✓</div>
Verifying you are human
</div>
<div class="check-item" id="c2">
<div class="check-icon pending" id="c2-icon"></div>
Checking browser security
</div>
<div class="check-item" id="c3">
<div class="check-icon pending" id="c3-icon"></div>
Completing connection
</div>
</div>
<div class="ray">Ray ID: <span id="rayid"></span> • <span id="ts"></span></div>
</div>
</main>
<footer class="cf-footer">Performance & security by <a href="#">Cloudflare</a></footer>
<script>
function hashHost(str) {
let h = 0;
for (let i = 0; i < str.length; i++) h = (h * 31 + str.charCodeAt(i)) & 0xffffffff;
return Math.abs(h) % 10;
}
const themes = [
{ bg:'#f0f2f5', cardBg:'#fff', accent:'#f38020', text:'#1d2028', subtext:'#6b7280', headerBg:'#fff', border:'#e5e7eb', radius:'8px', shadow:'0 1px 3px rgba(0,0,0,0.1)' },
{ bg:'#0f1117', cardBg:'#1a1d27', accent:'#6366f1', text:'#f9fafb', subtext:'#9ca3af', headerBg:'#1a1d27', border:'#2d3148', radius:'12px', shadow:'0 4px 24px rgba(0,0,0,0.4)' },
{ bg:'#eff6ff', cardBg:'#fff', accent:'#2563eb', text:'#1e3a5f', subtext:'#64748b', headerBg:'#fff', border:'#dbeafe', radius:'6px', shadow:'0 2px 8px rgba(37,99,235,0.1)' },
{ bg:'#f0fdf4', cardBg:'#fff', accent:'#16a34a', text:'#14532d', subtext:'#6b7280', headerBg:'#fff', border:'#dcfce7', radius:'10px', shadow:'0 1px 4px rgba(22,163,74,0.1)' },
{ bg:'#ffffff', cardBg:'#fff', accent:'#111827', text:'#111827', subtext:'#6b7280', headerBg:'#fff', border:'#f3f4f6', radius:'0px', shadow:'0 0 0 1px #e5e7eb' },
{ bg:'#faf5ff', cardBg:'#fff', accent:'#7c3aed', text:'#3b0764', subtext:'#7c3aed', headerBg:'#fff', border:'#ede9fe', radius:'16px', shadow:'0 4px 16px rgba(124,58,237,0.1)' },
{ bg:'#0f172a', cardBg:'#1e293b', accent:'#38bdf8', text:'#f1f5f9', subtext:'#94a3b8', headerBg:'#1e293b', border:'#334155', radius:'8px', shadow:'0 4px 20px rgba(0,0,0,0.3)' },
{ bg:'#fdf2f8', cardBg:'#fff', accent:'#db2777', text:'#500724', subtext:'#9d174d', headerBg:'#fff', border:'#fce7f3', radius:'12px', shadow:'0 2px 8px rgba(219,39,119,0.1)' },
{ bg:'#f9fafb', cardBg:'#fff', accent:'#374151', text:'#111827', subtext:'#6b7280', headerBg:'#fff', border:'#e5e7eb', radius:'4px', shadow:'none' },
{ bg:'#fff1f2', cardBg:'#fff', accent:'#dc2626', text:'#7f1d1d', subtext:'#6b7280', headerBg:'#fff', border:'#fee2e2', radius:'8px', shadow:'0 2px 8px rgba(220,38,38,0.1)' },
];
const spinners = [
`<svg viewBox="0 0 50 50" class="spin" xmlns="http://www.w3.org/2000/svg"><circle cx="25" cy="25" r="20" fill="none" stroke="#e5e7eb" stroke-width="4"/><circle cx="25" cy="25" r="20" fill="none" stroke="ACCENT" stroke-width="4" stroke-dasharray="80 120" stroke-linecap="round"/></svg>`,
`<svg viewBox="0 0 50 50" xmlns="http://www.w3.org/2000/svg"><circle cx="25" cy="25" r="18" fill="none" stroke="ACCENT" stroke-width="3" stroke-dasharray="60 120" stroke-linecap="round" class="spin"/><circle cx="25" cy="25" r="10" fill="none" stroke="ACCENT" stroke-width="3" stroke-dasharray="30 60" stroke-linecap="round" class="spin-reverse"/></svg>`,
`<svg viewBox="0 0 50 50" class="pulse" xmlns="http://www.w3.org/2000/svg"><circle cx="25" cy="25" r="20" fill="none" stroke="ACCENT" stroke-width="4"/><circle cx="25" cy="25" r="10" fill="ACCENT"/></svg>`,
`DOTS`,
`<svg viewBox="0 0 50 50" class="spin" xmlns="http://www.w3.org/2000/svg"><rect x="10" y="10" width="30" height="30" fill="none" stroke="ACCENT" stroke-width="4" rx="4"/></svg>`,
`<svg viewBox="0 0 50 50" class="spin" xmlns="http://www.w3.org/2000/svg"><circle cx="25" cy="25" r="20" fill="none" stroke="ACCENT" stroke-width="4" stroke-dasharray="20 20" stroke-linecap="round"/></svg>`,
`<svg viewBox="0 0 50 50" class="spin" xmlns="http://www.w3.org/2000/svg"><circle cx="25" cy="25" r="22" fill="none" stroke="#e5e7eb" stroke-width="2"/><circle cx="25" cy="25" r="22" fill="none" stroke="ACCENT" stroke-width="2" stroke-dasharray="90 110" stroke-linecap="round"/></svg>`,
`<svg viewBox="0 0 50 50" class="spin" xmlns="http://www.w3.org/2000/svg"><circle cx="25" cy="25" r="18" fill="none" stroke="#e5e7eb" stroke-width="8"/><circle cx="25" cy="25" r="18" fill="none" stroke="ACCENT" stroke-width="8" stroke-dasharray="60 120" stroke-linecap="round"/></svg>`,
`<svg viewBox="0 0 50 50" class="spin" xmlns="http://www.w3.org/2000/svg"><circle cx="25" cy="25" r="20" fill="none" stroke="ACCENT" stroke-width="3" stroke-dasharray="4 8" stroke-linecap="round"/></svg>`,
`<svg viewBox="0 0 50 50" class="spin" xmlns="http://www.w3.org/2000/svg"><line x1="25" y1="5" x2="25" y2="45" stroke="ACCENT" stroke-width="4" stroke-linecap="round"/><line x1="5" y1="25" x2="45" y2="25" stroke="ACCENT" stroke-width="4" stroke-linecap="round"/></svg>`,
];
const idx = hashHost(location.hostname);
const theme = themes[idx];
const root = document.documentElement;
root.style.setProperty('--bg', theme.bg);
root.style.setProperty('--card-bg', theme.cardBg);
root.style.setProperty('--accent', theme.accent);
root.style.setProperty('--text', theme.text);
root.style.setProperty('--subtext', theme.subtext);
root.style.setProperty('--header-bg', theme.headerBg);
root.style.setProperty('--border', theme.border);
root.style.setProperty('--radius', theme.radius);
root.style.setProperty('--shadow', theme.shadow);
const wrap = document.getElementById('spinner-wrap');
if (idx === 3) {
wrap.innerHTML = `<div class="bounce-dots"><div class="dot"></div><div class="dot"></div><div class="dot"></div></div>`;
} else {
wrap.innerHTML = spinners[idx].replace(/ACCENT/g, theme.accent);
}
document.getElementById('domain').textContent = location.hostname;
document.getElementById('rayid').textContent =
Array.from({length:16}, () => '0123456789abcdef'[Math.floor(Math.random()*16)]).join('').toUpperCase();
document.getElementById('ts').textContent = new Date().toUTCString();
setTimeout(() => {
const c2 = document.getElementById('c2');
c2.classList.add('done');
document.getElementById('c2-icon').className = 'check-icon done-icon';
document.getElementById('c2-icon').textContent = '✓';
}, 1800);
</script>
</body>
</html>