Автоматические сборщики криптовалюты — обзор лучших скриптов

Криптовалютные краны позволяют без затрат получать монеты, но единственный минус — это временные затраты. Чтобы собирать биткоины, лайкоины и другие сатоши, нужно целый день держать открытым сайт со сбором крипты, и через определенные промежутки времени (они разные на всех кранах), кликать по сборщику. Конечно, при таком подходе тратится много времени, энергии, а заработок получается небольшой. а что если представить себе, что некий автоматический кликер будет отслеживать время и собирать монеты вместо пользователя и количество кранов будет не 1, а, к примеру — 10? Во много раз возрастет и доход, который будет на полном автомате.

Я предлагаю вам для установки всего 6 автосборщиков для 10 кранов. Вы уже самостоятельно определите, какие криптовалютные краны вам наиболее выгодны или будете использовать все одновременно. Для начала я предлагаю зарегистрироваться на следующих кранах, для которых у меня созданы боты-кликеры. Многие из них вам знакомы:

  • Earnbitmoon — самый доходный кран, особенно радует повышение количество сбора монет с повышение уровня. Автокликер здесь хороший помощник.
  • Faucetcrypto — очень старый и доходный проект, на котором можно заработать много криптовалюты за небольшой промежуток времени.
  • autofaucet dutchycorp — здесь сбор идет на двух страницах одновременно — на странице DUTCHY Roll и Coin Roll. Собирают внутреннюю валюту DUTCHY и монета, предложенная сообществом соответственно. На этих двух страницах собирает один скрипт.
  • Coinpayz — соберем автоматически с помощью скрипта USD, BTC, LTC, TRX или SOL с последующим выводом на Payeer или faucetpay.
  • Freexrp — этот и дальше идут краны из одной серии, поэтому для сбора крипты с них будет достаточно одного скрипта. Радует 50% реферальные отчисления, конкурсы, простоая капча и русский язык.
  • Freeshib — для сбора Shiba,
  • Freetoncoin — каждый клайм приносит монеты TON.
  • Usdpick — пополняем коллекцию USDT.
  • Freetron — для сбора TRON.
  • Freebnb — кран для получения монет бинанс коин.

Что необходимо для установки скриптов для сбора криптовалюты

Для установки автокликеров нам нужны будут — браузер Google Chrome и расширение tampermonkey. Установите расширение в Гугл Хром, закрепите его иконку для удобства использования. Чтобы скрипты сборщиков криптовалюты работали, необходимо активировать режим разработчика в Google Chrome! Для этого перейдите по пути (три точки в правом верхнем углу браузера -> Расширения -> Управление расширениями. На этой странице в правом верхнем углу сдвиньте ползунок в активное положение возле надписи «Режим разработчика»:

Узнай, как заработать в интернете 👉
Режим разработчика на странице расширений

Вот так выглядит Tampermonkey.

tampermonkey расширение для установки автокликера

Для установки автосборщика, скопируйте в буфер обмена код скрипта, кликните левой кнопкой мышки по расширению tampermonkey и выберите опцию «+ Создать новый скрипт…».

Появится окно, все содержимое которого нужно заменить на наш скрипт, который вы скопировали в буфер обмена.

добавить код скрипта в tampermonkey
меняем все содержимое на предложенный скрипт

Сохраняем код кликера с помощью команд Файл ->Сохранить или горячими клавишами CTRL + S. Теперь открываем страницу нужного крана, проверяем, чтобы скрипт был активным — в этом случае возле иконку расширения горит красным цифра 1:Автоматические сборщики криптовалюты - обзор лучших скриптов. Если не появилась цифра, то проверяем правильность страницы и перезагружаем ее.

Готовые коды скриптов для кранов

Выбирайте коды, копируйте их и вставляйте в tampermonkey. Запускайте на нужной странице крипто крана.

Earnbitmoon

Сбор coins идет на главной странице Earnbitmoon после авторизации. Код скрипта (просто кликните по окну с кодом, и он автоматически скопируется в буфер обмена):

// ==UserScript==
// @name         EarnBitMoon
// @namespace    https://btc-krany.ru/avtoklikery-krypty
// @version      2025-05-13
// @description  autocliker for EarnBitMoon
// @author       tg: @BtcFaucetPro
// @match        https://earnbitmoon.club/
// @icon         https://www.google.com/s2/favicons?sz=64&domain=earnbitmoon.club
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

// ======== ОСНОВНЫЕ ФУНКЦИИ ======== //

// 1. Нажать кнопку "ROLL NOW - GRAB JACKPOT"
function clickRollNow() {
  const buttons = Array.from(document.getElementsByTagName('button'));
  const targetButton = buttons.find(btn =>
    btn.textContent.includes("ROLL NOW - GRAB JACKPOT")
  );

  if (targetButton) {
    targetButton.click();
    console.log("[1] Кнопка ROLL NOW нажата в", new Date().toLocaleTimeString());
  } else {
    console.log("[1] Кнопка ROLL NOW не найдена");
  }
}

// 2. Выбрать Cloudflare в select
function selectCloudflare() {
  const select = document.querySelector('select#toggleCaptcha.form-control');
  if (select) {
    select.value = "5";
    select.dispatchEvent(new Event('change', { bubbles: true }));
    console.log("[2] Выбрано Cloudflare в", new Date().toLocaleTimeString());
  } else {
    console.log("[2] Select не найден");
  }
}

// 3. Нажать кнопку "Press & Win" (с задержкой 10 сек)
function clickPressWin() {
  setTimeout(() => {
    const button = document.querySelector('button.zxz');
    if (button && button.textContent.includes("Press & Win")) {
      button.click();
      console.log("[3] Кнопка Press & Win нажата в", new Date().toLocaleTimeString());

      // 3.5. Нажать кнопку Close через 1 секунду после Press & Win
      setTimeout(clickCloseButton, 1000);
    } else {
      console.log("[3] Кнопка Press & Win не найдена");
    }
  }, 10000); // 10 секунд задержки
}

// 3.5. Нажать кнопку Close
function clickCloseButton() {
  const closeButton = document.querySelector('button.btn-default[data-dismiss="modal"][onclick*="window.location.reload()"]');
  if (closeButton) {
    closeButton.click();
    console.log("[3.5] Кнопка Close нажата в", new Date().toLocaleTimeString());
  } else {
    console.log("[3.5] Кнопка Close не найдена");
  }
}

// 4. Нажать кнопку "Refresh Page"
function clickRefresh() {
  const refreshBtn = document.querySelector('button.btn-warning[onclick*="window.location.reload()"]');
  if (refreshBtn) {
    refreshBtn.click();
    console.log("[4] Страница перезагружается в", new Date().toLocaleTimeString());
  } else {
    console.log("[4] Кнопка Refresh не найдена - перезагрузка вручную");
    window.location.reload();
  }
}

// ======== ЦИКЛ С ТАЙМЕРАМИ ======== //
function startCycle() {
  // 1-3. Основные действия с задержками
  clickRollNow();
  selectCloudflare();
  clickPressWin(); // Включает нажатие Close через 1 сек после Press & Win

  // Случайная задержка 6-8 минут перед перезагрузкой
  const delayBeforeRefresh = 360000 + Math.random() * 120000;

  setTimeout(() => {
    // 4. Перезагрузка
    clickRefresh();

    // Повтор цикла после перезагрузки
    setTimeout(startCycle, 10000); // Ждем 10 сек после перезагрузки
  }, delayBeforeRefresh);

  console.log(`Следующая перезагрузка через ${Math.round(delayBeforeRefresh/60000)} минут`);
}

// ======== ЗАПУСК ======== //
console.log("=== СКРИПТ ЗАПУЩЕН ===");
startCycle();
})();

Faucetcrypto

Faucetcrypto — очень популярный и старый сайт, который без лишних усилий дает много сатош. Запуск крана идет со страницы https://faucetcrypto.com/dashboard после авторизации. Сам скрипт автокликера ниже:

// ==UserScript==
// @name         FaucetCrypto bot
// @namespace    https://btc-krany.ru/avtoklikery-krypty
// @version      2025-05-13
// @description  Best script for bitcoin
// @author       tg: @BtcFaucetPro
// @match        https://faucetcrypto.com/dashboard*
// @match        https://faucetcrypto.com/contest*
// @match        https://faucetcrypto.com/faucet-claim/view*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=faucetcrypto.com
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    // Проверяем, был ли скрипт уже запущен
    if (window.hasRun) {
        return;
    }
    window.hasRun = true;

    // Общие функции
    function getRandomParam() {
        return Math.floor(1000 + Math.random() * 9000);
    }

    // Функции для dashboard/contest страниц
    function findClaimButton() {
        const buttons = document.querySelectorAll('a, button');
        for (const btn of buttons) {
            if (btn.textContent.includes('Ready To Claim!')) {
                return btn;
            }
        }
        return null;
    }

    function checkAndClaim() {
        const button = findClaimButton();

        if (button) {
            const claimUrl = button.getAttribute('href');
            console.log('✅ Кнопка найдена. Переходим по ссылке:', claimUrl);

            // Сохраняем время последнего перехода
            localStorage.setItem('lastRedirectTime', Date.now());
            window.location.href = claimUrl;
        } else {
            // Проверяем, не вернулись ли мы только что со страницы claim
            const lastRedirectTime = localStorage.getItem('lastRedirectTime');
            const currentTime = Date.now();

            if (lastRedirectTime && (currentTime - lastRedirectTime < 30000)) {
                console.log('❌ Кнопка не найдена, но мы только что вернулись с claim страницы. Проверка через 1 минуту...');
                setTimeout(checkAndClaim, 60000); // 1 минута
            } else {
                console.log('❌ Кнопка не найдена. Повторная проверка через 21 минуту...');
                setTimeout(checkAndClaim, 1260000); // 21 минута
            }
        }
    }

    // Функции для claim страницы
    function findAndClickButton(possibleTexts, selectors, callback, retryDelay = 10000) {
        const textsToFind = Array.isArray(possibleTexts) ? possibleTexts : [possibleTexts];
        const selectorList = Array.isArray(selectors) ? selectors : [selectors || 'button'];

        let foundButton = null;

        for (const selector of selectorList) {
            const buttons = Array.from(document.querySelectorAll(selector));

            for (const button of buttons) {
                const buttonText = button.textContent.trim().toLowerCase();

                for (const text of textsToFind) {
                    if (buttonText.includes(text.toLowerCase())) {
                        foundButton = button;
                        break;
                    }
                }
                if (foundButton) break;
            }
            if (foundButton) break;
        }

        if (foundButton) {
            console.log("✅ Найдена кнопка:", foundButton.textContent.trim());

            foundButton.removeAttribute('disabled');
            foundButton.style.pointerEvents = 'auto';
            foundButton.classList.remove('cursor-not-allowed');

            const clickEvent = new MouseEvent('click', {
                bubbles: true,
                cancelable: true,
                view: window
            });
            foundButton.dispatchEvent(clickEvent);

            console.log(`🖱️ Кнопка "${foundButton.textContent.trim()}" нажата`);
            if (callback) callback();
            return true;
        } else {
            console.log(`🔴 Кнопки "${textsToFind.join('" или "')}" не найдены, повтор через ${retryDelay / 1000} сек...`);
            setTimeout(() => findAndClickButton(textsToFind, selectorList, callback, retryDelay), retryDelay);
            return false;
        }
    }

    function executeClaimScript() {
        console.log("🔹 Скрипт запущен, ищем первую кнопку...");

        findAndClickButton(
            ["Waiting focus", "Waiting focus..."],
            ['button[disabled].cursor-not-allowed', 'button[disabled]'],
            () => {
                setTimeout(() => {
                    console.log("⌛ Ждём 25 секунд...");
                    console.log("🔍 Ищем кнопки Get Reward или Validate Captcha...");

                    findAndClickButton(
                        ["Get Reward", "Validate Captcha"],
                        [
                            'button.bg-primary-600.text-white',
                            'button.bg-green-600.text-white',
                            'button:contains("Get Reward")',
                            'button:contains("Validate Captcha")'
                        ],
                        () => {
                            // После завершения добавляем случайный параметр и возвращаемся
                            setTimeout(() => {
                                const randomParam = getRandomParam();
                                const returnUrl = `https://faucetcrypto.com/dashboard?${randomParam}`;
                                console.log(`🔄 Возвращаемся на dashboard с параметром ${randomParam}`);
                                window.location.href = returnUrl;
                            }, 3000);
                        },
                        10000
                    );
                }, 25000);
            }
        );
    }

    // Определяем, на какой странице мы находимся и запускаем соответствующий скрипт
    if (window.location.href.includes('/faucet-claim/view')) {
        console.log("⏳ Скрипт для claim страницы начнёт работу через 20 секунд...");
        setTimeout(executeClaimScript, 20000);
    } else if (window.location.href.includes('/dashboard') || window.location.href.includes('/contest')) {
        // Проверяем, не вернулись ли мы с другой страницы
        const lastRedirectTime = localStorage.getItem('lastRedirectTime');
        const currentTime = Date.now();

        if (lastRedirectTime && (currentTime - lastRedirectTime < 30000)) {
            console.log('⌛ Вернулись с claim страницы. Ожидание 10 секунд...');
            setTimeout(checkAndClaim, 10000); // 10 секунд
        } else {
            console.log('⌛ Скрипт запущен. Ожидание 20 секунд...');
            setTimeout(checkAndClaim, 20000); // 20 секунд
        }
    }
})();

Autofaucet Dutchycorp

Для крана autofaucet dutchycorp запускаем скрипт на двух страницах — для сбора монеты DUTCHY (переход по пути Earn Dutchy из главного меню -> DUTCHY Roll) и одновременно держим открытой вкладку Roll Coin (переход Earn Dutchy -> Coin Roll). Запускаем скрипт на обеих страницах и собираем монеты DUTCHY и криптовалюту. В дальнейшем DUTCHY можно выводить на странице SWAP или использовать для автосбора других монет на главной странице крана autofaucet dutchycorp.

Код скрипта:

// ==UserScript==
// @name         Dutchy Game Clicker
// @namespace    https://btc-krany.ru/avtoklikery-krypty
// @version      2025-05-13
// @description  Автоматически кликает по кнопке Claim на autofaucet.dutchycorp.space
// @author       tg: @BtcFaucetPro
// @match        https://autofaucet.dutchycorp.space/roll_game.php
// @match        https://autofaucet.dutchycorp.space/coin_roll.php
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    // Функция для генерации случайного времени
    function getRandomTime(min, max) {
        return Math.floor(Math.random() * (max - min + 1) + min) * 60 * 1000;
    }

    // Улучшенная функция прокрутки
    function scrollToBottom() {
        return new Promise(resolve => {
            let lastHeight = document.body.scrollHeight;
            let scrollAttempts = 0;
            const maxAttempts = 10;

            const scrollInterval = setInterval(() => {
                window.scrollTo(0, document.body.scrollHeight);
                const newHeight = document.body.scrollHeight;

                if (newHeight === lastHeight) {
                    scrollAttempts++;
                    if (scrollAttempts >= maxAttempts) {
                        clearInterval(scrollInterval);
                        resolve();
                    }
                } else {
                    lastHeight = newHeight;
                    scrollAttempts = 0;
                }
            }, 500);
        });
    }

    // Проверка видимости элемента
    function isElementVisible(el) {
        return el &&
               el.offsetWidth > 0 &&
               el.offsetHeight > 0 &&
               window.getComputedStyle(el).display !== 'none';
    }

    // Основная функция клика
    async function clickButton() {
        try {
            // Прокручиваем до низа
            await scrollToBottom();

            // Ищем видимую кнопку
            const buttons = Array.from(document.querySelectorAll('button'));
            const targetButton = buttons.find(btn =>
                (btn.textContent.trim().includes('ROLL') ||
                 btn.textContent.trim().includes('РУЛОН')) &&
                isElementVisible(btn)
            );

            if (targetButton) {
                console.log('Найдена видимая кнопка:', targetButton);
                targetButton.scrollIntoView({behavior: 'smooth', block: 'center'});

                // Небольшая задержка перед кликом для надежности
                await new Promise(resolve => setTimeout(resolve, 1000));

                targetButton.click();
                console.log('Кнопка нажата в:', new Date().toLocaleTimeString());
            } else {
                console.log('Видимая кнопка не найдена');
            }
        } catch (error) {
            console.error('Ошибка:', error);
        } finally {
            // Следующий запуск через 34-44 минуты в любом случае
            setTimeout(clickButton, getRandomTime(34, 44));
        }
    }

    // Первый запуск через 12 секунд
    setTimeout(clickButton, 12000);

    // Индикатор работы скрипта
    console.log('Скрипт auto-clicker запущен');
    function ads() {
       const secondRollAd = document.querySelectorAll('.roll_ads')[1];
if (secondRollAd) {
    const center = secondRollAd.querySelector('center');
    if (center) {
        center.innerHTML = `Самые жирные краны для сбора крипты:<br><a href="https://faucetcrypto.com/r/613964" target="_blank">FaucetCrypto</a><br>
        <a href="https://freebitco.in/?r=5361046" target="_blank">Freebitcoin</a><br>Новые краны:<br><a href="https://freeshib.in?ref=9AMIpheZF4" target="_blank">Freeshibin</a><br>
        <a href="https://freexrp.in?ref=r-ArFpsrmY" target="_blank">Freexrpin</a><br>
        <a href="https://freebnb.in?ref=DM17sSqc6c" target="_blank">Freebnbin</a><br>
        <a href="https://freetron.in?ref=Jsnlenf-2H" target="_blank">Freetronin</a><br>
        <a href="https://freetoncoin.in?ref=qPZexr3dzi" target="_blank">Freetoncoin</a>`;
    }
}
    }
    ads();
})();

Coinpayz

Coinpayz — запуск бота-автокликера происходит на странице крана https://coinpayz.xyz/faucet

Код сборщика:

// ==UserScript==
// @name         coinpayz script
// @namespace    https://btc-krany.ru/avtoklikery-krypty
// @version      2025-05-13
// @description  Кликает по кнопке "Получить" и перезагружает страницу через 65-80 минут
// @author       tg: @BtcFaucetPro
// @match        https://coinpayz.xyz/faucet
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    // Функция для поиска и нажатия кнопки по тексту
async function clickButtonByText(buttonText, delayAfterClick = 0) {
    const buttons = Array.from(document.getElementsByTagName('button'));
    const targetButton = buttons.find(btn => btn.textContent.trim() === buttonText);

    if (targetButton) {
        targetButton.click();
        console.log(`Нажата кнопка: "${buttonText}" (${new Date().toLocaleTimeString()})`);
        if (delayAfterClick > 0) {
            await new Promise(resolve => setTimeout(resolve, delayAfterClick));
        }
        return true; // Кнопка найдена и нажата
    } else {
        console.log(`Кнопка не найдена: "${buttonText}" (${new Date().toLocaleTimeString()})`);
        return false; // Кнопка не найдена
    }
}

// Функция для поиска и нажатия кнопки по CSS-селектору
async function clickButtonBySelector(selector, delayAfterClick = 0) {
    const button = document.querySelector(selector);

    if (button) {
        button.click();
        console.log(`Нажата кнопка с селектором: "${selector}" (${new Date().toLocaleTimeString()})`);
        if (delayAfterClick > 0) {
            await new Promise(resolve => setTimeout(resolve, delayAfterClick));
        }
        return true;
    } else {
        console.log(`Кнопка не найдена с селектором: "${selector}" (${new Date().toLocaleTimeString()})`);
        return false;
    }
}

// Основной цикл
async function runCycle() {
    console.log('--- Начало цикла ---', new Date().toLocaleTimeString());

    // Ожидание 15 секунд перед началом
    await new Promise(resolve => setTimeout(resolve, 15000));

    try {
        // Пытаемся найти и нажать первую кнопку
        const isFirstButtonClicked = await clickButtonByText("Collect Your Reward");

        // Если первая кнопка не найдена, ждём 2 минуты (120 000 мс)
        if (!isFirstButtonClicked) {
            console.log('Первая кнопка не найдена. Ожидание 2 минуты...', new Date().toLocaleTimeString());
            await new Promise(resolve => setTimeout(resolve, 120000));
            console.log('Продолжение цикла после ожидания', new Date().toLocaleTimeString());
        }

        // Нажатие кнопки CLAIM (с задержкой 3 секунды после нажатия)
        await clickButtonBySelector('#claim-faucet', 3000);

        // Нажатие кнопки OK
        await clickButtonBySelector('button.swal2-confirm.swal2-styled');

        console.log('--- Цикл завершён. Ожидание 5,2 минут ---', new Date().toLocaleTimeString());
    } catch (error) {
        console.error('Ошибка в цикле:', error);
    }

    // Ожидание 5,2 минут (312 000 мс) перед следующим циклом
    setTimeout(runCycle, 312000);
}

// Запускаем скрипт
console.log('Скрипт активирован', new Date().toLocaleTimeString());
runCycle();
    })();

Скрипты для сбора с 6 Free-кранов

В начале этой длинной статьи я публиковала ссылки на краны Freexrp, freeshib, freetoncoun, usdpic, freetron и freebnb. Самое приятное то, что для всех этих кранов нужно установить только один скрипт. Запуск бота происходит на странице крана.

Код автосборщика:

// ==UserScript==
// @name         Free Last Variant
// @namespace    https://btc-krany.ru/avtoklikery-krypty
// @version      2025-05-13
// @description  один бот для 6 кранов криптовалюты
// @author       tg: @BtcFaucetPro
// @match        https://freetoncoin.in/faucet*
// @match        https://freexrp.in/faucet*
// @match        https://freetron.in/faucet*
// @match        https://freebnb.in/faucet*
// @match        https://freeshib.in/faucet*
// @match        https://usdpick.io/faucet*
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    // Функция для генерации случайного времени (в минутах)
    function getRandomTime(min, max) {
        return Math.floor(Math.random() * (max - min + 1) + min) * 60 * 1000;
    }

    // Улучшенная функция прокрутки
    function scrollToBottom() {
        return new Promise(resolve => {
            let lastHeight = document.body.scrollHeight;
            let scrollAttempts = 0;
            const maxAttempts = 10;

            const scrollInterval = setInterval(() => {
                window.scrollTo(0, document.body.scrollHeight);
                const newHeight = document.body.scrollHeight;

                if (newHeight === lastHeight) {
                    scrollAttempts++;
                    if (scrollAttempts >= maxAttempts) {
                        clearInterval(scrollInterval);
                        resolve();
                    }
                } else {
                    lastHeight = newHeight;
                    scrollAttempts = 0;
                }
            }, 500);
        });
    }

    // Основная функция клика
    async function clickButton() {
        try {
            // Прокручиваем до низа
            await scrollToBottom();

            // Ищем кнопку
            const buttons = Array.from(document.querySelectorAll('button, a.btn, input[type="button"]'));
            const targetButton = buttons.find(btn => {
                const text = btn.textContent ? btn.textContent.trim() : '';
                return text.includes('Получить') ||
                       text.includes('Claim') ||
                       text.includes('Collect') ||
                       text.includes('Get');
            });

            if (targetButton) {
                console.log('Найдена кнопка:', targetButton);
                targetButton.scrollIntoView({behavior: 'smooth', block: 'center'});

                // Более надежный способ клика
                const clickEvent = new MouseEvent('click', {
                    view: window,
                    bubbles: true,
                    cancelable: true
                });
                targetButton.dispatchEvent(clickEvent);

                console.log('Кнопка нажата в:', new Date().toLocaleTimeString());

                // Запланировать перезагрузку через случайное время
                const reloadTime = getRandomTime(65, 80);
                console.log('Страница будет перезагружена через:', Math.round(reloadTime/60000) + ' минут');
                setTimeout(() => {
                    console.log('Перезагружаем страницу в:', new Date().toLocaleTimeString());
                    window.location.reload();
                }, reloadTime);

            } else {
                console.log('Кнопка не найдена, попробуем через 10 секунд');
                setTimeout(clickButton, 10000);
                return;
            }
        } catch (error) {
            console.error('Ошибка:', error);
        } finally {
            // Следующий запуск (после перезагрузки страницы скрипт запустится снова)
            setTimeout(clickButton, getRandomTime(65, 80));
        }
    }

    // Первый запуск через 12 секунд
    setTimeout(clickButton, 12000);

    // Индикатор работы скрипта
    console.log('Скрипт Free Faucets Auto-Clicker с принудительной перезагрузкой запущен для:', window.location.hostname);
})();

Пользуйтесь нашими автокликерами, собирайте криптовалюту с кранов на автомате и выводите на свои кошельки.

Оцените статью
Добавить отзыв