Mega4Upload Auto-Click

Auto Click mega4upload.net

이 스크립트를 설치하려면 Tampermonkey, Greasemonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey와 같은 확장 프로그램을 설치해야 합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Userscripts와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 유저 스크립트 관리자 확장 프로그램이 필요합니다.

(이미 유저 스크립트 관리자가 설치되어 있습니다. 설치를 진행합니다!)

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

(이미 유저 스타일 관리자가 설치되어 있습니다. 설치를 진행합니다!)

// ==UserScript==
// @name         Mega4Upload Auto-Click
// @namespace    https://github.com/BlazeFTL
// @description  Auto Click mega4upload.net
// @version      1.0
// @author       BlazeFTL
// @match        https://mega4upload.net/*
// @license      MIT
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    // 1st Page Action
    const infoBtn = document.querySelector('.btn-sm.btn-info.btn');
    if (infoBtn) infoBtn.click();

    // 2nd Page Action
    const downloadBtn = document.querySelector('.downloadbtn.btn-success.btn-icon-split.btn-sm.btn');

    if (downloadBtn) {
        // Create an observer to watch for the "disabled" attribute being removed
        const observer = new MutationObserver((mutations) => {
            mutations.forEach((mutation) => {
                if (mutation.type === 'attributes' && mutation.attributeName === 'disabled') {
                    if (!downloadBtn.hasAttribute('disabled')) {
                        console.log('Disabled attribute removed! Clicking...');
                        downloadBtn.click();
                        observer.disconnect(); // Stop watching once clicked
                    }
                }
            });
        });

        // Start observing the button for attribute changes
        observer.observe(downloadBtn, { attributes: true });

        // Fallback: If Captcha is solved but observer missed the attribute change
        captchaSolved(() => {
            if (!downloadBtn.hasAttribute('disabled')) {
                downloadBtn.click();
            }
        });
    }

    // Your Captcha Detection Function
    function captchaSolved(callback) {
        let intervalId = setInterval(() => {
            try {
                const captcha = window.turnstile || window.hcaptcha || window.grecaptcha;
                if (captcha && typeof captcha.getResponse === 'function' && captcha.getResponse()) {
                    clearInterval(intervalId);
                    callback();
                }
                // Visual check for IconCaptcha
                if (document.querySelector('.iconcaptcha-modal__body-title')?.innerText.includes('complete')) {
                    clearInterval(intervalId);
                    callback();
                }
            } catch (e) {}
        }, 1000);
    }
})();