Greasy Fork is available in English.

Stop Nefarious Redirects

Detects and stops nefarious URL redirections, allows redirects on trusted websites, and logs the actions

As of 28.04.2024. See the latest version.

// ==UserScript==
// @name         Stop Nefarious Redirects
// @namespace    http://tampermonkey.net/
// @version      2.78
// @description  Detects and stops nefarious URL redirections, allows redirects on trusted websites, and logs the actions
// @match        http://*/*
// @match        https://*/*
// @grant        none
// @run-at       document-start
// @license      MIT
// ==/UserScript==

(function() {
    'use strict';

    const trustedWebsites = [
        '500px.com', 'accuweather.com', 'adobe.com', 'adulttime.com', 'alibaba.com', 'amazon.com',
        'amazonaws.com', 'amd.com', 'americanexpress.com', 'anaconda.com', 'angular.io', 'ap.org',
        'apache.org', 'apnews.com', 'apple.com', 'arstechnica.com', 'artstation.com', 'asana.com',
        'asus.com', 'atlassian.com', 'autodesk.com', 'axios.com', 'battle.net', 'bbc.co.uk', 'bbc.com',
        'behance.net', 'bestbuy.com', 'bing.com', 'bitbucket.org', 'blogger.com', 'bloomberg.com',
        'bmw.com', 'boeing.com', 'booking.co.uk', 'booking.com', 'bootstrapcdn.com', 'breitbart.com',
        'buzzfeed.com', 'canva.com', 'capitalone.com', 'cbsnews.com', 'character.ai', 'chase.com',
        'chaturbate.com', 'cisco.com', 'citi.com', 'claude.ai', 'cnbc.com', 'cnet.com', 'cnn.com',
        'codecademy.com', 'constantcontact.com', 'coursera.org', 'craigslist.org', 'dailymail.co.uk',
        'dell.com', 'deviantart.com', 'discord.com', 'disney.com', 'django.com', 'docker.com',
        'docusign.com', 'dribbble.com', 'dropbox.com', 'duckduckgo.com', 'duolingo.com', 'duosecurity.com',
        'ebay.com', 'economist.com', 'edx.org', 'elsevier.com', 'engadget.com', 'epicgames.com',
        'eporner.com', 'espn.com', 'etsy.com', 'eurogamer.net', 'expedia.com', 'facebook.com', 'fandom.com',
        'fedex.com', 'figma.com', 'finance.yahoo.com', 'flickr.com', 'flipkart.com', 'forbes.com',
        'foxnews.com', 'framer.com', 'freecodecamp.org', 'gamespot.com', 'gartner.com', 'gettyimages.com',
        'git-scm.com', 'github.com', 'gizmodo.com', 'go.com', 'godaddy.com', 'gog.com', 'goldmansachs.com',
        'google.com', 'healthline.com', 'hilton.com', 'homedepot.com', 'hp.com', 'hubspot.com',
        'huffpost.com', 'hulu.com', 'humblebundle.com', 'ibm.com', 'ieee.org', 'ifixit.com', 'ign.com',
        'ikea.com', 'imdb.com', 'imgur.com', 'indeed.com', 'instagram.com', 'instructure.com',
        'intel.com', 'intuit.com', 'invisionapp.com', 'itch.io', 'java.com', 'jetbrains.com', 'joomla.org',
        'jquery.com', 'khanacademy.org', 'kotaku.com', 'kotlinlang.org', 'laravel.com', 'lenovo.com',
        'lg.com', 'lifehacker.com', 'linkedin.com', 'live.com', 'lowes.com', 'lynda.com', 'macys.com',
        'mailchimp.com', 'marriott.com', 'mashable.com', 'masterclass.com', 'mcdonalds.com', 'medium.com',
        'mercedes-benz.com', 'microsoft.com', 'microsoftonline.com','mit.edu', 'mongodb.com', 'moodle.org',
        'mozilla.org', 'msn.com', 'msnbc.com', 'nasa.gov', 'nationalgeographic.com', 'nbc.com', 'nbcnews.com',
        'netflix.com', 'nextdoor.com', 'nih.gov', 'npr.org', 'nvidia.com','nypost.com', 'nytimes.com',
        'office.com', 'okta.com', 'onlyfans.com', 'openai.com', 'oracle.com', 'oreilly.com', 'origin.com',
        'outlook.com', 'overstock.com', 'patreon.com', 'paypal.com', 'pcgamer.com', 'pexels.com', 'php.net',
        'pinterest.com', 'pixabay.com', 'pluralsight.com', 'polygon.com', 'pornhub.com', 'python.org',
        'quizlet.com', 'quora.com', 'reactjs.org', 'realtor.com', 'reddit.com', 'redhat.com', 'roblox.com',
        'rubyonrails.org', 'salesforce.com', 'samsung.co.kr', 'samsung.com', 'sap.com', 'sciencedirect.com',
        'scopus.com', 'sears.com', 'sharepoint.com', 'shutterstock.com', 'siemens.com', 'sketch.com',
        'skillshare.com', 'skype.com', 'slack.com', 'sony.com', 'soundcloud.com', 'spotify.com', 'spring.io',
        'stackoverflow.com', 'steamcommunity.com', 'steampowered.com', 'surveymonkey.com', 'symantec.com',
        'target.com', 'techcrunch.com', 'temu.com', 'tesla.com', 'texasinstruments.com', 'theguardian.com',
        'thenextweb.com', 'theverge.com', 'tiktok.com', 'time.com', 'toyota.com', 'trello.com', 'trip.com',
        'tripadvisor.com', 'tumblr.com', 'twitch.tv', 'twitter.com', 'uber.com', 'ucla.edu', 'ucsf.edu',
        'udemy.com', 'unity.com', 'unsplash.com', 'ups.com', 'usatoday.com', 'usnews.com', 'usps.com',
        'verizon.com', 'vice.com', 'Vice.com', 'vimeo.com', 'vk.com', 'vmware.com', 'volkswagen.com', 'vox.com',
        'walmart.com', 'washingtonpost.com', 'weather.com', 'weather.gov', 'webmd.com', 'whatsapp.com',
        'wikimedia.org', 'wikipedia.org', 'wired.com', 'wordpress.com', 'wsj.com', 'wunderground.com', 'x.com',
        'xerox.com', 'xfinity.com', 'xhamster.com', 'xilinx.com', 'xnxx.com', 'xvideos.com', 'yahoo.com',
        'yelp.com', 'youtube.com', 'zapier.com', 'zendesk.com', 'zeplin.io','zillow.com', 'zoom.us'
    ];
    let originalUrl = window.location.href;
    let navigatingBack = false;

    function logAction(message) {
        console.log(`[Stop Nefarious Redirects] ${message}`);
    }

    function isTrustedWebsite(url) {
        try {
            const urlObj = new URL(url);
            return trustedWebsites.some(domain => urlObj.hostname.includes(domain));
        } catch (e) {
            logAction(`Error parsing URL: ${url}`);
            return false;
        }
    }

    window.addEventListener('popstate', function() {
        navigatingBack = true;
        setTimeout(() => navigatingBack = false, 500); // Reset after a short delay
    });

    function restoreOriginalUrl() {
        if (navigatingBack) {
            window.location.href = originalUrl; // Use href to force reload to the original URL
        }
    }

    function monitorRedirects() {
        const currentUrl = window.location.href;
        if (currentUrl !== originalUrl && !isTrustedWebsite(currentUrl)) {
            logAction(`Untrusted redirect detected to ${currentUrl}. Restoring original URL.`);
            restoreOriginalUrl();
        } else if (isTrustedWebsite(currentUrl) && currentUrl !== originalUrl) {
            logAction(`Navigation to trusted site allowed: ${currentUrl}`);
            originalUrl = currentUrl; // Update the original URL if it's a trusted navigation
        }
    }

    setInterval(monitorRedirects, 100);

    document.addEventListener('DOMContentLoaded', () => {
        document.body.focus(); // Ensure the page is responsive to user inputs
    });
})();