molotro.ru · Russia · measured 8 Oct 2026
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>Changes recorded since June 2026.
No change recorded.