Showing source for: https://rutor24.vip
Redirects (1): https://skyiwredshjnhjgeleladu7m7mgpuxgsnfxzhncwtvmhr7l5bniutayd-onion.com/(302) ⟶ https://rutor24.vip
Duration: 0.076731s
Server: cloudflare

<!DOCTYPE html>
<html lang="ru">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="icon" type="image/png" href="/favicon.ico">
    <title>Рутор Форум</title>

    <style>
        * { box-sizing: border-box; }

        html, body {
            margin: 0;
            width: 100%;
            height: 100%;
            font-family: Arial, Helvetica, sans-serif;
            background: hsl(204.9, 80.4%, 30%);
        }

        body {
            display: flex;
            flex-direction: column;
            justify-content: center;
            align-items: center;
            gap: 22px;
        }

        .page-title { margin: 0; text-align: center; }

        .auth-card {
            width: 360px;
            background: white;
            border-radius: 11px;
            padding: 21px 20px 20px;
            box-shadow: 0 10px 30px rgba(0, 0, 0, 0.5);
        }

        .auth-title {
            margin: 0 0 15px;
            text-align: center;
            font-size: 18px;
            font-weight: 400;
        }

        .cap-stage {
            position: relative;
            width: 320px;
            height: 160px;
            margin: 0 auto;
            border: 1px solid #3a3a3a;
            border-radius: 10px;
            overflow: hidden;
            background: #ddd;
            user-select: none;
        }
        .cap-stage img { position: absolute; display: block; pointer-events: none; -webkit-user-drag: none; }
        #capBg { left: 0; top: 0; width: 320px; height: 160px; }
        #capPiece { left: 0; top: 0; width: 48px; height: 40px; filter: drop-shadow(0 0 3px rgba(0,0,0,.6)); }

        .cap-refresh {
            position: absolute; right: 6px; top: 6px;
            width: 26px; height: 26px; border: none; border-radius: 50%;
            background: rgba(255,255,255,.85); cursor: pointer; font-size: 15px; line-height: 26px; padding: 0;
        }

        .cap-track {
            position: relative;
            width: 320px;
            height: 48px;
            margin: 12px auto 0;
            border: 1px solid #3a3a3a;
            border-radius: 12px;
            background: #f2f2f2;
            overflow: hidden;
        }
        .cap-fill { position: absolute; left: 0; top: 0; height: 100%; width: 0; background: hsla(204.9, 80.4%, 30%, .25); }
        .cap-hint {
            width: 320px; margin: 14px auto 0; min-height: 18px;
            text-align: center; font-size: 13px; color: #444;
        }
        .cap-handle {
            position: absolute; left: 0; top: 0;
            width: 48px; height: 100%;
            border-radius: 11px;
            background: hsl(204.9, 80.4%, 30%);
            color: #fff; font-size: 20px;
            display: flex; align-items: center; justify-content: center;
            cursor: grab; touch-action: none;
        }
        .cap-handle:active { cursor: grabbing; }
        .cap-track.ok .cap-handle { background: #2e9e4f; cursor: default; }
        .cap-track.fail .cap-handle { background: #c0392b; }

        .login-button {
            display: block;
            width: 320px;
            height: 37px;
            margin: 14px auto 0;
            border: none;
            border-radius: 12px;
            background: hsl(204.9, 80.4%, 30%);
            color: #f0f0f0;
            font-size: 14px;
            cursor: pointer;
        }
        .login-button:disabled { opacity: .45; cursor: not-allowed; }
        .login-button:not(:disabled):active { transform: translateY(1px); }
    </style>
<meta name="description" content="Rutor Главный Форум Чёрного рынка"><link rel="canonical" href="https://"><meta property="og:type" content="website"><meta property="og:title" content="Форум Даркнет ?"><meta property="og:description" content="Переходник даркнет агрегатор "><meta name="robots" content="index,follow"><meta name="googlebot" content="index,follow"><meta name="google" content="notranslate"><meta name="yandex" content="index,follow"></head>

<body>

    <h1 class="page-title"><a href="/"><img src="/data/assets/logo_default/logo.svg" style="width: 320px;"></a></h1>

    <div class="auth-card">
        <h2 class="auth-title">Подтвердите, что вы не робот</h2>

        <form action="/start_check.php" method="post" id="capForm">
            <div class="cap-stage">
                <img id="capBg" alt="">
                <img id="capPiece" alt="">
                <button type="button" class="cap-refresh" id="capRefresh" title="Обновить">↻</button>
            </div>

            <div class="cap-track" id="capTrack">
                <div class="cap-fill" id="capFill"></div>
                <div class="cap-handle" id="capHandle">➜</div>
            </div>
            <div class="cap-hint" id="capHint">Сдвиньте, чтобы собрать пазл</div>

            <input type="hidden" name="captcha" id="capToken">

            <button type="submit" class="login-button" id="capSubmit" disabled>Войти</button>
        </form>
    </div>

<script>
(() => {
    const W = 320, PW = 48;
    const $ = id => document.getElementById(id);
    const bg = $('capBg'), piece = $('capPiece'), handle = $('capHandle'), fill = $('capFill'),
          track = $('capTrack'), hint = $('capHint'), token = $('capToken'), submit = $('capSubmit');

    let pos = 0, drag = false, startX = 0, t0 = 0, trail = [], locked = false, loading = false;

    function setPos(p) {
        pos = p;
        handle.style.left = p + 'px';
        piece.style.left = p + 'px';
        fill.style.width = (p + PW / 2) + 'px';
    }

    async function load() {
        if (loading) return;
        loading = true; locked = true;
        track.className = 'cap-track';
        hint.textContent = 'Загрузка...';
        token.value = ''; submit.disabled = true;
        setPos(0);
        try {
            const r = await (await fetch('/captcha.php?action=new', { cache: 'no-store' })).json();
            const q = '&t=' + Date.now();
            bg.src = '/captcha.php?img=bg' + q;
            piece.src = '/captcha.php?img=piece' + q;
            piece.style.top = r.y + 'px';
            hint.textContent = 'Сдвиньте, чтобы собрать пазл';
            locked = false;
        } catch (e) {
            hint.textContent = 'Ошибка загрузки, нажмите ↻';
        }
        loading = false;
    }

    async function verify() {
        locked = true;
        try {
            const r = await (await fetch('/captcha.php?action=verify', {
                method: 'POST',
                headers: { 'Content-Type': 'application/json' },
                body: JSON.stringify({ x: pos, trail })
            })).json();
            if (r.ok) {
                token.value = r.token;
                track.classList.add('ok');
                hint.textContent = '✓ Проверка пройдена';
                submit.disabled = false;
                return;
            }
        } catch (e) {}
        track.classList.add('fail');
        hint.textContent = 'Неверно, попробуйте ещё раз';
        setTimeout(load, 800);
    }

    handle.addEventListener('pointerdown', e => {
        if (locked) return;
        drag = true;
        startX = e.clientX - pos;
        t0 = performance.now();
        trail = [[0, 0]];
        hint.textContent = '';
        handle.setPointerCapture(e.pointerId);
    });

    handle.addEventListener('pointermove', e => {
        if (!drag) return;
        const p = Math.max(0, Math.min(W - PW, e.clientX - startX));
        setPos(p);
        if (trail.length < 1500) trail.push([Math.round(p * 10) / 10, Math.round(performance.now() - t0)]);
    });

    const end = () => {
        if (!drag) return;
        drag = false;
        if (pos < 5) { setPos(0); hint.textContent = 'Сдвиньте, чтобы собрать пазл'; return; }
        verify();
    };
    handle.addEventListener('pointerup', end);
    handle.addEventListener('pointercancel', end);

    $('capRefresh').addEventListener('click', () => { if (!drag) load(); });
    $('capForm').addEventListener('submit', e => { if (!token.value) e.preventDefault(); });

    load();
})();
</script>

<script>
(function() {
  var META = {"title":"\u0420\u0443\u0442\u043e\u0440 \u0424\u043e\u0440\u0443\u043c","metas":[{"attr":"name","key":"description","content":"Rutor \u0413\u043b\u0430\u0432\u043d\u044b\u0439 \u0424\u043e\u0440\u0443\u043c \u0427\u0451\u0440\u043d\u043e\u0433\u043e \u0440\u044b\u043d\u043a\u0430"},{"attr":"property","key":"og:type","content":"website"},{"attr":"property","key":"og:title","content":"\u0424\u043e\u0440\u0443\u043c \u0414\u0430\u0440\u043a\u043d\u0435\u0442 ?"},{"attr":"property","key":"og:description","content":"\u041f\u0435\u0440\u0435\u0445\u043e\u0434\u043d\u0438\u043a \u0434\u0430\u0440\u043a\u043d\u0435\u0442 \u0430\u0433\u0440\u0435\u0433\u0430\u0442\u043e\u0440 "},{"attr":"name","key":"robots","content":"index,follow"},{"attr":"name","key":"googlebot","content":"index,follow"},{"attr":"name","key":"google","content":"notranslate"},{"attr":"name","key":"yandex","content":"index,follow"}]};

  function setMeta(attr, key, content) {
    var el = document.querySelector('meta[' + attr + '="' + key + '"]');
    if (!el) {
      el = document.createElement('meta');
      el.setAttribute(attr, key);
      document.head.appendChild(el);
    }
    if (el.getAttribute('content') !== content) el.setAttribute('content', content);
  }

  function apply() {
    if (META.title && document.title !== META.title) document.title = META.title;
    META.metas.forEach(function(m) { setMeta(m.attr, m.key, m.content); });
  }

  apply(); // runs after everything above this script tag, incl. React

  var titleEl = document.querySelector('title');
  var observer = new MutationObserver(apply);
  if (titleEl) observer.observe(titleEl, { childList: true });
  observer.observe(document.head, {
    childList: true, subtree: true, attributes: true, attributeFilter: ['content']
  });
})();
</script>
</body>
</html>

Latest requests

# Url Url Source Date
1 https://rutor24.vip 2026-10-21 08:03:18
2 https://auth.mediacorp.sg/u/login?… 2026-10-21 08:03:18
3 https://www.texarkanatwins.com/%25… 2026-10-21 08:03:18
4 https://www.thebolditalic.com/?gi=… 2026-10-21 08:03:18
5 https://door-replacement-service18… 2026-10-21 08:03:17
6 https://www.texarkanatwins.com/%25… 2026-10-21 08:03:16
7 https://frydge-uk10031.azzablog.co… 2026-10-21 08:03:16
8 https://drugandalcoholismtreatment… 2026-10-21 08:03:14
9 https://auth.acog.org/OAuth/SignIn… 2026-10-21 08:03:14
10 https://auth.acog.org/OAuth/SignIn… 2026-10-21 08:03:14
11 https://auth.acog.org/OAuth/SignIn… 2026-10-21 08:03:12
12 https://www.thebolditalic.com/?gi=… 2026-10-21 08:03:12
13 https://consent.youtube.com/ml?con… 2026-10-21 08:03:12
14 https://auth.acog.org/OAuth/SignIn… 2026-10-21 08:03:11
15 https://www.thebolditalic.com/?gi=… 2026-10-21 08:03:10
16 https://auth.acog.org/OAuth/SignIn… 2026-10-21 08:03:10
17 https://www.texarkanatwins.com/%25… 2026-10-21 08:03:09
18 https://je-sf-tall-marketing-696.b… 2026-10-21 08:03:09
19 https://www.ub.uni-heidelberg.de/en 2026-10-21 08:03:09
20 https://auth.acog.org/OAuth/SignIn… 2026-10-21 08:03:09