Malicious Domain Blocker

Blocks access to known malicious domains

// ==UserScript==
// @name         Malicious Domain Blocker
// @namespace    http://tampermonkey.net/
// @version      1.0
// @description  Blocks access to known malicious domains
// @author       MrBlank
// @match        *://*/*
// @license MIT
// @grant        none
// ==/UserScript==

(function() {
    'use strict';
    if (window.location.protocol !== "https:") {
        window.location.protocol = "https:";
    }

    var maliciousDomains = [];

    var domainListUrls = [
        "https://www.malwaredomainlist.com/hostslist/hosts.txt",
        "https://www.malwaredomains.com/files/justdomains",
        "https://zeustracker.abuse.ch/blocklist.php?download=domainblocklist",
        "https://ransomwaretracker.abuse.ch/downloads/RW_DOMBL.txt",
        "https://urlhaus.abuse.ch/downloads/text/",
    ];

    async function fetchMaliciousDomains() {
        try {
            for (const url of domainListUrls) {
                const response = await fetch(url);
                if (!response.ok) {
                    throw new Error(`Failed to fetch domain list from ${url}`);
                }
                const data = await response.text();
                const domains = data.split(/\r?\n/);
                maliciousDomains.push(...domains.filter(domain => /^[^#]/.test(domain) && domain.trim() !== ""));
            }
        } catch (error) {
            console.error(error);
        }
    }

    function checkMaliciousDomain() {
        const currentHostname = window.location.hostname;
        if (maliciousDomains.includes(currentHostname)) {
            window.onbeforeunload = null;
            window.location.href = "https://blank.org";
        }
    }

    fetchMaliciousDomains().then(checkMaliciousDomain);
})();