DevUploads Complete Auto Bypass

Auto bypass devuploads

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 Tampermonkey,才能安裝此腳本

您需要先安裝使用者腳本管理器擴充功能後才能安裝該腳本。

(我已經安裝了使用者腳本管理器,讓我安裝!)

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

(我已經安裝了使用者樣式管理器,讓我安裝!)

// ==UserScript==
// @name         DevUploads Complete Auto Bypass
// @namespace    http://tampermonkey.net/
// @version      2.0
// @description  Auto bypass devuploads 
// @author       Shiva
// @match        *://devuploads.com/*
// @match        *://*.devuploads.com/*
// @match        *://djxmaza.in/*
// @match        *://*.djxmaza.in/*
// @grant        GM_xmlhttpRequest
// @connect      devuploads.com
// @run-at       document-end
// @license      GPL-3.0-only
// ==/UserScript==

(function() {
    'use strict';

    console.log('[DevUploads Complete] Script loaded');

    // ============ UTILITY FUNCTIONS ============

    function randomString(length = 10) {
        const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
        let result = '';
        for (let i = 0; i < length; i++) {
            result += chars.charAt(Math.floor(Math.random() * chars.length));
        }
        return result;
    }

    function showStatus(message, color) {
        let status = document.getElementById('devuploads-bypass-status');
        if (!status) {
            status = document.createElement('div');
            status.id = 'devuploads-bypass-status';
            status.style.cssText = `
                position: fixed;
                top: 20px;
                right: 20px;
                background: ${color};
                color: white;
                padding: 15px 25px;
                border-radius: 10px;
                font-family: Arial, sans-serif;
                font-size: 14px;
                font-weight: bold;
                z-index: 999999;
                box-shadow: 0 4px 12px rgba(0,0,0,0.3);
                transition: all 0.3s ease;
            `;
            document.body.appendChild(status);
        }
        status.style.background = color;
        status.textContent = message;
    }

    // ============ TOKEN BYPASS ============

    function buildTokenData() {
        const randValue = randomString(10);
        const currentTime = Date.now();
        const timezoneOffset = -new Date().getTimezoneOffset();
        const referer = window.location.href;

        let tokenData = "[download]";
        tokenData += `[referer=${referer}]`;
        tokenData += `[rand=${randValue}]`;
        tokenData += "[altk=]";
        tokenData += `[emti=${currentTime}]`;
        tokenData += "[gifnun=0][gifhei=0][gifpos=0][gifvis=0]";
        tokenData += "[wc=doubleclick adsby onerror]";
        tokenData += `[setoff=${timezoneOffset}]`;
        tokenData += '[castyl={"pointerEvents":"auto","display":"block","visibility":"visible"}]';
        tokenData += '[caeven=auto][cadisp=block][cavis=visible]';
        tokenData += '[pc=0][pn=][gsm=]';

        return {
            rand: randValue,
            msg: tokenData
        };
    }

    function sendToken() {
        const tokenData = buildTokenData();

        console.log('[DevUploads Complete] Sending token:', tokenData);
        showStatus('🔄 Sending bypass token...', '#2196F3');

        GM_xmlhttpRequest({
            method: 'POST',
            url: 'https://devuploads.com/token/token.php',
            headers: {
                'Accept': '*/*',
                'Content-Type': 'application/x-www-form-urlencoded',
                'Origin': 'https://djxmaza.in',
                'Referer': window.location.href,
                'User-Agent': navigator.userAgent
            },
            data: `rand=${tokenData.rand}&msg=${encodeURIComponent(tokenData.msg)}`,
            onload: function(response) {
                console.log('[DevUploads Complete] Token response:', response.responseText);
                showStatus('✅ Token accepted!', '#4CAF50');

                // After token, click the buttons
                setTimeout(clickDownloadButtons, 2000);
            },
            onerror: function(error) {
                console.error('[DevUploads Complete] Token error:', error);
                showStatus('⚠️ Token failed, trying buttons...', '#FF9800');
                setTimeout(clickDownloadButtons, 2000);
            }
        });
    }

    // ============ BUTTON CLICKING ============

    function clickDownloadButtons() {
        console.log('[DevUploads Complete] Looking for download buttons...');

        // Step 1: Click "Generate Download Link" button (#gdl)
        const generateBtn = document.querySelector('#gdl');

        if (generateBtn) {
            console.log('[DevUploads Complete] Found "Generate Download Link" button');
            showStatus('🔘 Clicking Generate Link...', '#9C27B0');

            generateBtn.click();

            // Step 2: Wait for "Go to Generated Link" button (#gdlf) to appear
            setTimeout(() => {
                clickGoToLink();
            }, 3000); // Wait 3 seconds for link generation

        } else {
            console.log('[DevUploads Complete] Generate button not found, trying next step...');
            clickGoToLink();
        }
    }

    function clickGoToLink() {
        console.log('[DevUploads Complete] Looking for "Go to Link" button...');

        const goToLinkBtn = document.querySelector('#gdlf');

        if (goToLinkBtn) {
            console.log('[DevUploads Complete] Found "Go to Generated Link" button');
            showStatus('🔘 Clicking Go to Link...', '#9C27B0');

            goToLinkBtn.click();

            showStatus('✅ Download started!', '#4CAF50');

            // Hide status after 3 seconds
            setTimeout(() => {
                const status = document.getElementById('devuploads-bypass-status');
                if (status) status.remove();
            }, 3000);

        } else {
            console.log('[DevUploads Complete] Go to Link button not found yet, retrying...');
            showStatus('⏳ Waiting for download link...', '#FF9800');

            // Retry after 2 seconds
            setTimeout(clickGoToLink, 2000);
        }
    }

    // ============ FALLBACK METHODS ============

    function findAndClickDownload() {
        // Try to find any download-related elements
        const selectors = [
            '#gdl',                    // Generate download link
            '#gdlf',                   // Go to generated link
            'img[src*="generate_download"]',
            'img[src*="go_to_generated"]',
            'a[href*="download"]',
            'button:contains("Download")',
            '.download-btn',
            '#downloadButton'
        ];

        for (const selector of selectors) {
            const el = document.querySelector(selector);
            if (el) {
                console.log('[DevUploads Complete] Found element:', selector);
                el.click();
                return true;
            }
        }

        return false;
    }

    // ============ MONITOR FOR BUTTONS ============

    function monitorForButtons() {
        // Use MutationObserver to detect when buttons appear
        const observer = new MutationObserver((mutations) => {
            const gdl = document.querySelector('#gdl');
            const gdlf = document.querySelector('#gdlf');

            if (gdl && !gdl.dataset.clicked) {
                console.log('[DevUploads Complete] Generate button appeared!');
                gdl.dataset.clicked = 'true';
                showStatus('🔘 Auto-clicking Generate Link...', '#9C27B0');
                setTimeout(() => gdl.click(), 500);
            }

            if (gdlf && !gdlf.dataset.clicked) {
                console.log('[DevUploads Complete] Go to Link button appeared!');
                gdlf.dataset.clicked = 'true';
                showStatus('🔘 Auto-clicking Go to Link...', '#4CAF50');
                setTimeout(() => gdlf.click(), 500);
            }
        });

        observer.observe(document.body, {
            childList: true,
            subtree: true,
            attributes: true,
            attributeFilter: ['style', 'class']
        });

        console.log('[DevUploads Complete] Monitoring for buttons...');
    }

    // ============ MAIN EXECUTION ============

    function init() {
        showStatus('🚀 DevUploads Bypass Active', '#673AB7');

        // Start monitoring for buttons immediately
        monitorForButtons();

        // Send token after 1 second
        setTimeout(() => {
            sendToken();
        }, 1000);

        // Try clicking buttons after 3 seconds (in case they're already there)
        setTimeout(() => {
            clickDownloadButtons();
        }, 3000);

        // Fallback: try to find any download after 8 seconds
        setTimeout(() => {
            if (!document.querySelector('#gdlf[data-clicked="true"]')) {
                console.log('[DevUploads Complete] Using fallback...');
                findAndClickDownload();
            }
        }, 8000);
    }

    // Start when page is ready
    if (document.readyState === 'loading') {
        document.addEventListener('DOMContentLoaded', init);
    } else {
        init();
    }

})();