您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
click like a real person
// ==UserScript== // @name Auto Blum natural // @namespace http://violentmonkey.net/ // @version 3 // @description click like a real person // @author nothing here // @match https://telegram.blum.codes/* // @icon https://cdn.prod.website-files.com/65b6a1a4a0e2af577bccce96/65ba99c1616e21b24009b86c_blum-256.png // @grant none // ==/UserScript== (function() { 'use strict'; const minBombClickCount = 0; // number of bombs will click const minFreezeClickCount = 2; // The tape number will click const cloverSkipPercentage = 10; // clover click abandonment rate (%) const consoleRed = 'font-weight: bold; color: red;'; const consoleGreen = 'font-weight: bold; color: green;'; const consolePrefix = '%c [AutoBot] '; const originalConsoleLog = console.log; console.log = function () { if (arguments[0].includes('[AutoBot]') || arguments[0].includes('github.com')) { originalConsoleLog.apply(console, arguments); } }; console.error = console.warn = console.info = console.debug = function () { }; console.clear(); console.log(`${consolePrefix}Start bots...`, consoleGreen); let totalPoints = 0; let bombClickCount = 0; let freezeClickCount = 0; let skippedClovers = 0; let gameEnded = false; let checkGameEndInterval; // Function to get random delay function getRandomDelay(min, max) { return Math.random() * (max - min) + min; } // Function to click at a random position within an element function clickRandomPosition(element) { const rect = element.getBoundingClientRect(); const x = rect.left + Math.random() * rect.width; const y = rect.top + Math.random() * rect.height; const clickEvent = new MouseEvent('click', { clientX: x, clientY: y }); element.dispatchEvent(clickEvent); } // Function to simulate human-like click with movement function simulateHumanClick(element) { const delayBeforeClick = getRandomDelay(500, 2000); // Delay acak sebelum klik setTimeout(() => { // Simulate mouse movement if necessary (optional) clickRandomPosition(element); // Klik pada posisi acak }, delayBeforeClick); } // Function to check and click the Play button function checkAndClickPlayButton() { const playButton = document.querySelector('a.play-btn'); if (playButton && playButton.offsetParent !== null) { const rect = playButton.getBoundingClientRect(); if (rect.top >= 0 && rect.left >= 0) { simulateHumanClick(playButton); console.log('Tombol Play diklik.'); } else { console.log('Tombol Play tidak berada dalam viewport.'); } } else { console.log('Tombol Play tidak ditemukan.'); } } // Function to continuously check the Play button function continuousPlayButtonCheck() { console.log('Memeriksa tombol Play...'); checkAndClickPlayButton(); setTimeout(continuousPlayButtonCheck, 1000); // Memanggil kembali setiap detik } continuousPlayButtonCheck(); // Start continuous check const originalPush = Array.prototype.push; Array.prototype.push = function(...args) { args.forEach(arg => { if (arg && arg.item) { if (arg.item.type === "CLOVER" || arg.item.type === "FREEZE") { const randomDelay = getRandomDelay(1000, 5000); // Delay antara 1 hingga 5 detik setTimeout(() => { if (arg && arg.item) { // Memastikan arg masih valid if (arg.item.type === "CLOVER") { arg.shouldSkip = Math.random() < (cloverSkipPercentage / 100); if (arg.shouldSkip) { skippedClovers++; console.log(`${consolePrefix}Skip the three-leaf clover (${skippedClovers})`, consoleRed); } else { console.log(`${consolePrefix}Click on the three-leaf clover (${totalPoints})`, consoleGreen); totalPoints++; simulateHumanClick(arg.item.element); // Klik dengan perilaku manusia arg.isExplosion = true; arg.addedAt = performance.now(); } } else if (arg.item.type === "FREEZE" && freezeClickCount < minFreezeClickCount) { console.log(`${consolePrefix}Click freeze`, consoleGreen); simulateHumanClick(arg.item.element); // Klik dengan perilaku manusia arg.isExplosion = true; arg.addedAt = performance.now(); freezeClickCount++; } } }, randomDelay); // Menunggu selama waktu acak sebelum melakukan klik } else if (arg.item.type === "BOMB" && bombClickCount < minBombClickCount) { console.log(`${consolePrefix}Click on bomb`, consoleRed); totalPoints = 0; simulateHumanClick(arg.item.element); // Klik dengan perilaku manusia arg.isExplosion = true; arg.addedAt = performance.now(); bombClickCount++; } } }); return originalPush.apply(this, args); }; function checkGameEnd() { const rewardElement = document.querySelector('div.reward .animated-points.visible'); if (rewardElement && !gameEnded) { gameEnded = true; const rewardAmount = rewardElement.querySelector('.amount').textContent; console.log(`${consolePrefix}Game over. Total points earned: ${rewardAmount}`, consoleGreen); totalPoints = 0; bombClickCount = 0; freezeClickCount = 0; skippedClovers = 0; const playButton = document.querySelector('button.kit-button.is-large.is-primary'); if (playButton) { const playPassesText = playButton.querySelector('.label span').textContent; const playPasses = parseInt(playPassesText.match(/\d+/)[0], 10); if (playPasses > 0) { setTimeout(() => { playButton.click(); console.log(`${consolePrefix}Start a new game...`, consoleGreen); gameEnded = false; }, getRandomDelay(3000, 5000)); // Delay acak antara 3 hingga 5 detik } else { console.log(`${consolePrefix}Completed the game`, consoleRed); clearInterval(checkGameEndInterval); } } else { console.log(`${consolePrefix}Play button not found`, consoleRed); } } } function startGameEndCheck() { if (checkGameEndInterval) { clearInterval(checkGameEndInterval); } checkGameEndInterval = setInterval(checkGameEnd, 1000); const observer = new MutationObserver((mutationsList, observer) => { for (const mutation of mutationsList) { if (mutation.type === 'childList') { checkGameEnd(); } } }); observer.observe(document.body, { childList: true, subtree: true }); } startGameEndCheck(); })();