CrawlerPulse
CrawlerPulse / Europe / Russia / molotro.ru

Molot

molotro.ru · Russia · measured 8 Oct 2026

Google Search
Allowed
Google-Extended
Allowed
OpenAI
Allowed
Anthropic
Allowed
Perplexity
Allowed
Meta
Allowed
Common Crawl
Allowed
ByteDance
Allowed
Apple
Allowed
Amazon
Allowed

robots.txt

As read on 8 Oct 2026, 2,387 bytes. No rule names an AI crawler.

<!DOCTYPE html>
<html lang="ru">
<head>
  <meta charset="UTF-8">
  <title>Проверка безопасности</title>
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <style>
    html, body {
      margin: 0;
      width: 100%;
      height: 100%;
      background: #ffffff;
    }
    body {
      display: flex;
      align-items: center;
      justify-content: center;
    }
    .challenge-container {
      display: flex;
      flex-direction: column;
      align-items: center;
      justify-content: center;
      gap: 24px;
    }
    .spinner {
      width: 48px;
      height: 48px;
      border-radius: 50%;
      background:
        conic-gradient(
          from -90deg,
        );
      mask: radial-gradient(farthest-side, transparent 65%, black 66%);
      -webkit-mask: radial-gradient(farthest-side, transparent 65%, black 66%);
      animation: spin 1s linear infinite;
    }
    @keyframes spin {
      to { transform: rotate(-360deg); }
    }
  </style>
</head>
<body>
  <div class="challenge-container">
    <div class="spinner"></div>
  </div>
  <script>
    const nonce = "730510325600265007";
    const difficulty = "4";
    const returnUrl = "\/molot\/robots.txt";
    async function sha256hex(str) {
      const buf = await crypto.subtle.digest(
        "SHA-256",
        new TextEncoder().encode(str)
      );
      return [...new Uint8Array(buf)]
        .map(b => b.toString(16).padStart(2, '0'))
        .join('');
    }
    async function solveChallenge() {
      let solution = 0;
      const prefix = '0'.repeat(difficulty);
      while (true) {
        const h = await sha256hex(nonce + solution);
        if (h.startsWith(prefix)) break;
        solution++;
        if (solution % 10000 === 0) {
          await new Promise(r => setTimeout(r, 0));
        }
      }
      const res = await fetch("/ep-challenge", {
        method: "POST",
        headers: { "Content-Type": "application/json" },
        body: JSON.stringify({
          nonce,
          difficulty: difficulty.toString(),
          solution: solution.toString(),
          return_url: returnUrl
        })
      });
      if (res.ok) {
        location.replace(returnUrl);
      }
    }
    window.addEventListener('load', solveChallenge);
  </script>
</body>
</html>

History

Changes recorded since June 2026.

No change recorded.

In context

Russia
6.3% block at least one AI crawler
Behind Cloudflare
No