Greasy Fork

Fuck Baidu

屏蔽搜索引擎中来自百度的搜索结果 Filter out all search results from "baidu.com" for some search engines.

目前为 2024-05-24 提交的版本。查看 最新版本

// ==UserScript==
// @name         Fuck Baidu
// @namespace    http://tampermonkey.net/
// @version      1.7
// @description:zh-CN   屏蔽搜索引擎中来自百度的搜索结果
// @description:en-US   Filter out all search results from "baidu.com" for some search engines.
// @author       Hijack_Nick & Spectrollay
// @match        *://*.google.com/*
// @match        *://*.bing.com/*
// @match        *://*.yahoo.com/*
// @match        *://*.yandex.com/*
// @match        *://duckduckgo.com/*
// @grant        none
// @license      MIT
// @description 屏蔽搜索引擎中来自百度的搜索结果 Filter out all search results from "baidu.com" for some search engines.
// ==/UserScript==

(function() {
    'use strict';

    const filterKeywords = ['baidu.'];

    function filterResults() {
        let results = [];

        if (location.hostname.includes('google.com')) {
            results = document.querySelectorAll('.g');
        } else if (location.hostname.includes('bing.com')) {
            results = document.querySelectorAll('.b_algo');
        } else if (location.hostname.includes('yahoo.com')) {
            results = document.querySelectorAll('.dd.algo');
        } else if (location.hostname.includes('yandex.com')) {
            results = document.querySelectorAll('.k_5ay1tJkv0OU_card');
        } else if (location.hostname.includes('duckduckgo.com')) {
            results = document.querySelectorAll('li[data-layout="organic"]');
        }

        results.forEach(result => {
            const resultText = result.innerText.toLowerCase();

            filterKeywords.forEach(keyword => {
                if (resultText.includes(keyword)) {
                    result.style.display = 'none';
                }
            });
        });
    }

    filterResults();

    const searchInput = document.querySelector('input[name="q"], input[name="p"], input[name="text"], #sb_form_q');
    if (searchInput) {
        searchInput.addEventListener('input', () => {
            const results = document.querySelectorAll('.g, .b_algo, .dd.algo, .serp-item, .result');
            results.forEach(result => {
                result.style.display = '';
            });
            filterResults();
        });

        const searchForm = searchInput.closest('form');
        if (searchForm) {
            searchForm.addEventListener('submit', (event) => {
                event.preventDefault();
                filterResults();
            });
        }
    }

    const observer = new MutationObserver((mutations) => {
        mutations.forEach((mutation) => {
            if (mutation.addedNodes.length || mutation.removedNodes.length) {
                filterResults();
            }
        });
    });

    observer.observe(document.body, { childList: true, subtree: true });

})();