FBMP Listing Terminator

The ultimate Facebook Marketplace listing deletion machine - now with AI-powered evasion and ninja-like stealth

// ==UserScript==
// @name         FBMP Listing Terminator
// @namespace    http://tampermonkey.net/
// @version      1.0
// @description  The ultimate Facebook Marketplace listing deletion machine - now with AI-powered evasion and ninja-like stealth
// @author       The Phantom Deleter
// @match        https://www.facebook.com/marketplace/you/selling*
// @grant        none
// @license      MIT
// ==/UserScript==

(function() {
    'use strict';

    // Mission Control Configuration
    const config = {
        running: true,
        cycle: 0,
        maxCycles: 50,
        coolDown: 5,
        stealthMode: true,
        aiBehavior: "random", // "random", "sold", "unsold", "no_answer"
        maxFailures: 3,
        version: "1.0"
    };

    // AI Response Bank
    const aiResponses = {
        deletion: [
            "Terminating listing with extreme prejudice",
            "Making listing disappear like magic",
            "Sending listing to the shadow realm",
            "Executing order 66 on this listing"
        ],
        failure: [
            "Target evaded deletion!",
            "The listing fought back!",
            "Mission failed, we'll get 'em next time",
            "Facebook countermeasures detected!"
        ],
        waiting: [
            "Maintaining operational security",
            "Hiding from Facebook's watchful eyes",
            "Simulating human browsing patterns",
            "Calculating next move..."
        ]
    };

    // Stealth Operations
    function getRandomDelay() {
        return config.stealthMode ?
            1000 + Math.random() * 2000 : // Random delay between 1-5s in stealth mode
            500 + Math.random() * 700; // Faster operation when stealth is off
    }

    function getAIResponse(type) {
        const responses = aiResponses[type];
        return responses[Math.floor(Math.random() * responses.length)];
    }

    // Tactical UI Elements
    function createTerminatorUI() {
        const panel = document.createElement('div');
        panel.id = 'terminator-panel';
        panel.style.cssText = `
            position: fixed;
            bottom: 10px;
            left: 10px;
            z-index: 9999;
            padding: 15px;
            background: linear-gradient(135deg, #1a1a1a 0%, #000 100%);
            border-radius: 10px;
            color: #00ff00;
            font-family: 'Courier New', monospace;
            font-size: 13px;
            border: 1px solid #00ff00;
            box-shadow: 0 0 15px rgba(0, 255, 0, 0.3);
        `;

        panel.innerHTML = `
            <h3 style="margin-top:0;border-bottom:1px solid #333;padding-bottom:5px;">
                <img src="https://i.imgur.com/terminatorIcon.png" width="16" height="16" style="vertical-align:middle;margin-left:5px;">
                Listing Terminator 3000 v${config.version}
            </h3>
            <div style="margin-bottom:10px;">
                <label>Max Missions: <input type="number" id="maxCycles" value="${config.maxCycles}" style="width:60px;background:#111;color:#0f0;border:1px solid #333;"></label><br>
                <label>Cool Down: <input type="number" id="coolDown" value="${config.coolDown}" style="width:60px;background:#111;color:#0f0;border:1px solid #333;">s</label><br>
                <label style="display:block;margin-top:5px;">
                    <input type="checkbox" id="stealthMode" ${config.stealthMode ? 'checked' : ''}> Stealth Mode
                </label>
                <select id="aiBehavior" style="margin-top:5px;background:#111;color:#0f0;border:1px solid #333;width:100%">
                    <option value="random">Random Behavior</option>
                    <option value="sold">Mark as Sold</option>
                    <option value="unsold">Mark as Unsold</option>
                    <option value="no_answer">No Answer</option>
                </select>
            </div>
            <button id="toggleButton" style="background:linear-gradient(180deg, #ff3300 0%, #cc0000 100%);border:none;color:white;padding:5px 10px;border-radius:3px;cursor:pointer;font-weight:bold;">
                ⏹ TERMINATE SEQUENCE
            </button>
            <div style="margin-top:10px;font-size:12px;">
                Status: <span id="statusIndicator" style="color:#0f0;">ACTIVE</span>
            </div>
            <textarea id="terminator-log" rows="10" cols="35" readonly style="width:100%;resize:none;background:#111;color:#0f0;border:1px solid #333;margin-top:10px;font-family:monospace;"></textarea>
        `;

        document.body.appendChild(panel);

        document.getElementById('toggleButton').addEventListener('click', () => {
            config.running = !config.running;
            const status = document.getElementById('statusIndicator');
            const button = document.getElementById('toggleButton');

            if (config.running) {
                button.innerHTML = '⏹ TERMINATE SEQUENCE';
                button.style.background = 'linear-gradient(180deg, #ff3300 0%, #cc0000 100%)';
                status.textContent = 'ACTIVE';
                status.style.color = '#0f0';
                log('SYSTEM REACTIVATED');
                startTerminationSequence();
            } else {
                button.innerHTML = '▶ ACTIVATE TERMINATOR';
                button.style.background = 'linear-gradient(180deg, #00cc00 0%, #009900 100%)';
                status.textContent = 'STANDBY';
                status.style.color = '#ff0';
                log('TERMINATION SEQUENCE PAUSED');
            }
        });

        document.getElementById('stealthMode').addEventListener('change', (e) => {
            config.stealthMode = e.target.checked;
            log(`STEALTH MODE ${config.stealthMode ? 'ENABLED' : 'DISABLED'}`);
        });

        document.getElementById('aiBehavior').addEventListener('change', (e) => {
            config.aiBehavior = e.target.value;
            log(`AI BEHAVIOR SET TO: ${e.target.value.toUpperCase()}`);
        });

        // Perbarui coolDown secara langsung saat input berubah
document.getElementById('coolDown').addEventListener('input', (e) => {
    const val = parseInt(e.target.value);
    if (!isNaN(val) && val > 0) {
        config.coolDown = val;
        log(`⏳ CoolDown diubah menjadi: ${val} detik`);
    }
});

    }

    // Mission Logging System
    function log(message) {
        const logBox = document.getElementById('terminator-log');
        if (logBox) {
            const timestamp = new Date().toLocaleTimeString();
            logBox.value += `[${timestamp}] ${message}\n`;
            logBox.scrollTop = logBox.scrollHeight;
        }
    }

    async function sleep(ms) {
        for (let i = 0; i < ms; i += 200) {
            if (!config.running) throw new Error("TERMINATED");
            await new Promise(resolve => setTimeout(resolve, 200));
        }
    }

    // Tactical Element Location
    function isVisible(elem) {
        return !!(elem && (elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length));
    }

   function findZeroClickListingButton() {
       // Temukan semua elemen yang berisi teks "0 klik tawaran"
       const zeroClickElements = Array.from(document.querySelectorAll("div.x78zum5.x1q0g3np.xg7h5cd"))
       .filter(el => el.textContent.includes("0 klik tawaran"));

       for (const el of zeroClickElements) {
           // Naik ke atas sampai container listing
           let current = el;
           for (let i = 0; i < 10; i++) {
               if (!current) break;
               if (current.querySelector("div[aria-label^='Opsi lainnya untuk']")) {
                   const ellipsisBtn = current.querySelector("div[aria-label^='Opsi lainnya untuk']");
                   if (ellipsisBtn) return ellipsisBtn;
               }
               current = current.parentElement;
           }
       }

       // Jika tidak ada tombol ⋯ ditemukan dalam listing dengan 0 klik tawaran
       return null;
   }
    // Advanced Click Simulation
    function executeClick(elem) {
        if (!elem) return false;

        const rect = elem.getBoundingClientRect();
        const mouseEventInit = {
            bubbles: true,
            cancelable: true,
            view: window,
            clientX: rect.left + rect.width/2,
            clientY: rect.top + rect.height/2
        };

        ['mousedown', 'mouseup', 'click'].forEach(type => {
            elem.dispatchEvent(new MouseEvent(type, mouseEventInit));
        });

        return true;
    }

    async function engageDeleteConfirmation() {
    // Cari semua tombol "Hapus" yang terlihat
    const candidates = Array.from(document.querySelectorAll('div[role="dialog"] span'))
        .filter(span => span.textContent.trim() === "Hapus" && isVisible(span));

    if (candidates.length === 0) {
        log("❌ Tidak menemukan tombol 'Hapus' di dalam dialog.");
        return false;
    }

    // Ambil yang paling bawah (biasanya tombol konfirmasi biru)
    const button = candidates[candidates.length - 1];
    button.scrollIntoView({ behavior: "smooth", block: "center" });
    await sleep(getRandomDelay());
    executeClick(button);
    log(`🧨 Konfirmasi 'Hapus' dieksekusi.`);
    await sleep(1000);
    return true;
}

    // Strategic Element Engagement
    async function engageElement(text, tag = 'span') {
    const elements = Array.from(document.querySelectorAll(tag));
    const lowerText = text.toLowerCase();

    const target = elements.find(el => {
        const match = el.textContent.trim().toLowerCase() === lowerText;
        const visible = isVisible(el);

        // KHUSUS untuk tombol "Hapus" (konfirmasi)
//        if (lowerText === "hapus") {
//            const inDialog = el.closest('div[role="dialog"]');
//            return match && visible && inDialog;
//       }

        // Untuk tombol lain (global)
        return match && visible;
    });

    if (target) {
        target.scrollIntoView({ behavior: "smooth", block: "center" });
        await sleep(getRandomDelay());
        executeClick(target);
        log(`${getAIResponse('deletion')}: "${text}"`);
       await sleep(getRandomDelay());
        return true;
    } else {
        log(`${getAIResponse('failure')} - Target not found: "${text}"`);
        return false;
    }
}
    // Special Ops: Ellipsis Engagement
    async function engageEllipsis() {
    const target = findZeroClickListingButton();
    if (!target) {
        log("❌ Tidak ada listing dengan '0 klik tawaran' ditemukan.");
        return false;
    }

    target.scrollIntoView({ behavior: "smooth", block: "center" });
    await sleep(1000);
    executeClick(target);
    log("🎯 Target '0 klik tawaran' ditemukan dan diserang.");
    await sleep(getRandomDelay());
    return true;
}
    // AI-Powered Response Selection
    function getStrategicResponse() {
        switch(config.aiBehavior) {
            case "sold":
                return Math.random() > 0.5 ? "Ya, terjual di Facebook" : "Ya, terjual di tempat lain";
            case "unsold":
                return "Tidak, belum terjual";
            case "no_answer":
                return "Memilih tidak menjawab";
            default:{
                const options = [
                    "Memilih tidak menjawab",
                    "Ya, terjual di Facebook",
                    "Ya, terjual di tempat lain",
                    "Tidak, belum terjual",
                ];
                return options[Math.floor(Math.random() * options.length)];
            }
        }
    }

    // Main Termination Sequence
    async function startTerminationSequence() {
        try {
        config.maxCycles = parseInt(document.getElementById("maxCycles").value) || 50;
        config.coolDown = parseInt(document.getElementById("coolDown").value) || 5;
            log("Cooldown dari input:", config.coolDown);

        log(`INITIATING TERMINATION SEQUENCE - ${config.maxCycles} TARGETS`);
        log(`STRATEGY: ${config.aiBehavior.toUpperCase()} | STEALTH: ${config.stealthMode ? 'ON' : 'OFF'}`);

        // Initial setup
        log("DEPLOYING SORTING ALGORITHM");
        await sleep(1000);
        await engageElement("Urut berdasarkan");
        await sleep(500);
        await engageElement("Tanggal ditawarkan: terlama dulu");
        await sleep(15000); // Allow time for resort

        let consecutiveFailures = 0;

        for (config.cycle = 1; config.cycle <= config.maxCycles; config.cycle++) {
            if (!config.running) break;

            log(`MISSION ${config.cycle} OF ${config.maxCycles}`);

            // Phase 1: Engage ellipsis
            if (!await engageEllipsis()) {
                consecutiveFailures++;
                log(`WARNING: TARGET EVASION DETECTED (${consecutiveFailures}/${config.maxFailures})`);

                if (consecutiveFailures >= config.maxFailures) {
                    log("CRITICAL FAILURE - INITIATING EVASIVE MANEUVERS");
                    window.location.href = "/marketplace/you/selling";
                    return;
                }
                continue;
            } else {
                consecutiveFailures = 0;
            }

           await sleep(500);

            // Phase 2: Engage deletion
            if (!await engageElement("Hapus tawaran")) {
                log("ABORTING CURRENT MISSION - TARGET PROTECTED");
                continue;
            }

            await sleep(500);

            // Phase 3: Confirm deletion
            if (!await engageDeleteConfirmation("Hapus")) {
                log("CONFIRMATION FAILED - TARGET MAY STILL BE ACTIVE");
                continue;
            }

            // Phase 4: AI Reason Step (conditional)
            await sleep(300);
            const reasonExists = Array.from(document.querySelectorAll('span'))
            .some(span => ["Ya, terjual di Facebook", "Ya, terjual di tempat lain", "Tidak, belum terjual", "Memilih tidak menjawab"]
                  .includes(span.textContent.trim()));

            if (reasonExists) {
                const responseText = getStrategicResponse();
                await engageElement(responseText);
                await engageElement("Berikutnya");
            } else {
                const nextBtn = Array.from(document.querySelectorAll('span'))
                .find(span => span.textContent.trim() === "Berikutnya" && isVisible(span));

                if (nextBtn) {
                    executeClick(nextBtn);
                    log("DIRECT CONFIRMATION ENGAGED");
                    await sleep(getRandomDelay());
                } else {
                    log("⚠️ Tidak ada alasan penawaran. Menganggap listing sudah dihapus.");
                }
            }

            await sleep(1000);

            // Phase 4: AI Response
            const responseText = getStrategicResponse();
            if (await engageElement(responseText)) {
                await engageElement("Berikutnya");
            } else {
                // Fallback confirmation
                const confirmBtn = Array.from(document.querySelectorAll('span'))
                    .find(span => span.textContent.trim() === "Berikutnya" && isVisible(span));

                if (confirmBtn) {
                    executeClick(confirmBtn);
                    log("DIRECT CONFIRMATION ENGAGED");
                    await sleep(getRandomDelay());
                }
            }

            // Cool down period
            const waitingMsg = getAIResponse('waiting');
            log(`${waitingMsg} (${config.coolDown} detik)...`);
            for (let s = 1; s <= config.coolDown; s++) {
                if (!config.running) {
                    log("🛑 TERMINASI INSTAN - Dihentikan oleh pengguna.");
                    return;
                }
                log(`🕒 ${s}`);
                await sleep(1000);
            }
        }

        log("TERMINATION SEQUENCE COMPLETE");
        log("ALL TARGETS NEUTRALIZED OR MISSION ABORTED");
        } catch (e) {
            if (e.message === "TERMINATED") {
                log("🛑 PROSES DIHENTIKAN LANGSUNG OLEH PENGGUNA");
            } else {
                log(`❌ ERROR: ${e.message}`);
            }
        }
    }

    // Activation Protocol
    window.addEventListener('load', () => {
        setTimeout(() => {
            createTerminatorUI();
            log("SYSTEM ONLINE");
            log("AWAITING ORDERS");
            setTimeout(startTerminationSequence, 1000);
        }, 3000);
    });
})();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址