Hide Shipped and Sponsored Items in Facebook Marketplace

Hide sponsored and shipped posts in facebook marketplace


    // ==UserScript==
    // @name         Hide Shipped and Sponsored Items in Facebook Marketplace
    // @icon         https://www.google.com/s2/favicons?domain=facebook.com
    // @version      1.0.6
    // @description  Hide sponsored and shipped posts in facebook marketplace
    // @match        *://*.facebook.com/marketplace*
    // @exclude      *://*.facebook.com/marketplace/item*
    // @grant        none
    // @author       Russell Aaron Wright III
    // @namespace    AaronWright3.scripts
    // @license      MIT
    // ==/UserScript==

    // Options for the observer (which mutations to observe)
    const config = { childList: true, attributes: true, subtree: true }

    const isExternalURL = (url) => new URL(url).origin !== location.origin;

    // Callback function to execute when mutations are observed
    const callback = (mutationsList, observer) => {
        if (!window.location.href.includes("item")) {
            { //sponsored facebook listings
                let xpath = "//a[contains(@href,'li.facebook.com') or contains(@href,'l.facebook.com')]";
                let matchingElement = document.evaluate(xpath, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
                if (matchingElement && matchingElement.closest("span")) {
                    try {
                        matchingElement.closest("span").parentNode.style.display = "none";
                        matchingElement.closest("span").remove();
                    }
                    catch(e) {
                        console.log(matchingElement);
                    }
                }
            }
            { //more sponsored facebook listings
                let xpath = "//a[contains(@href, '?__cft__') and not(contains(@href, '/marketplace'))]";
                let matchingElement = document.evaluate(xpath, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
                if (matchingElement && matchingElement.closest("span")) {
                    try {
                        matchingElement.closest("span").parentNode.style.display = "none";
                        matchingElement.closest("span").remove();
                    }
                    catch(e) {
                        console.log(matchingElement);
                    }
                }
            }
            { //sponsored facebook listings with an href of '#' (this was a tough one)
                let matchingElement = document.querySelector('a.oajrlxb2.gs1a9yip.g5ia77u1.mtkw9kbi.tlpljxtp.qensuy8j.ppp5ayq2.goun2846.ccm00jje.s44p3ltw.mk2mc5f4.rt8b4zig.n8ej3o3l.agehan2d.sk4xxmp2.rq0escxv.nhd2j8a9.q9uorilb.mg4g778l.btwxx1t3.pfnyh3mw.p7hjln8o.kvgmc6g5.cxmmr5t8.oygrvhab.hcukyx3x.tgvbjcpo.hpfvmrgz.jb3vyjys.rz4wbd8a.qt6c0cv9.a8nywdso.l9j0dhe7.i1ao9s8h.esuyzwwr.f1sip0of.du4w35lb.lzcic4wl.n00je7tq.arfg74bv.qs9ysxi8.k77z8yql.abiwlrkh.p8dawk7l.k4urcfbm[href="#"]');
                if (matchingElement && matchingElement.closest("span")) {
                    try {
                        matchingElement.closest("span").parentNode.style.display = "none";
                        matchingElement.closest("span").remove();
                    }
                    catch(e) {
                        console.log(matchingElement);
                    }
                }
            }
            { //sponsored posts or posts that ship to you
                let xpath = "//span[text()='Sponsored' or text()='Ships to you']";
                let matchingElement = document.evaluate(xpath, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
                if (matchingElement) {
                    if (matchingElement.closest(".sonix8o1")) {
                        matchingElement.closest(".sonix8o1").parentNode.style.display = "none";
                        matchingElement.closest(".sonix8o1").remove();
                    } else if (matchingElement.closest("a")) {
                        matchingElement.closest("a").parentNode.style.display = "none";
                        matchingElement.closest("a").remove();
                    }
                }
            }
            { //I don't remember what this one is
                let matchingElement = document.querySelector("div.rq0escxv.j83agx80.cbu4d94t.i1fnvgqd.muag1w35.pybr56ya.f10w8fjw.k4urcfbm.c7r68pdi.suyy3zvx");
                if (matchingElement && matchingElement.childElementCount < 3) {
                    console.warn("IT WORKS!!!");
                    if (matchingElement.closest(".sonix8o1")) {
                        matchingElement.closest(".sonix8o1").parentNode.style.display = "none";
                        matchingElement.closest(".sonix8o1").remove();
                    } else if (matchingElement.closest("a")) {
                        matchingElement.closest("a").parentNode.style.display = "none";
                        matchingElement.closest("a").remove();
                    }
                }
            }
            { // removes new style of listings that display the seller icon
                let matchingElement = document.querySelector("div.aov4n071.jifvfom9.idiwt2bm.j83agx80");
                if (matchingElement && matchingElement.childElementCount < 3) {
                    console.warn("IT WORKS!!!");
                    if (matchingElement.closest(".sonix8o1")) {
                        matchingElement.closest(".sonix8o1").parentNode.style.display = "none";
                        matchingElement.closest(".sonix8o1").parentNode.parentNode.style.display = "none";
                        matchingElement.closest(".sonix8o1").remove();
                    } else if (matchingElement.closest("a")) {
                        matchingElement.closest("a").parentNode.style.display = "none";
                        matchingElement.closest("a").remove();
                    }
                }
            }
        }
    }

    // Create an observer instance linked to the callback function and observe
    new MutationObserver(callback).observe(document, config)

window.onLoad = function() {
    callback()
}

QingJ © 2025

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