IP Masker

Simply Hides your IP Address!

Voor het installeren van scripts heb je een extensie nodig, zoals Tampermonkey, Greasemonkey of Violentmonkey.

Voor het installeren van scripts heb je een extensie nodig, zoals Tampermonkey of Violentmonkey.

Voor het installeren van scripts heb je een extensie nodig, zoals Tampermonkey of Violentmonkey.

Voor het installeren van scripts heb je een extensie nodig, zoals Tampermonkey of Userscripts.

Voor het installeren van scripts heb je een extensie nodig, zoals {tampermonkey_link:Tampermonkey}.

Voor het installeren van scripts heb je een gebruikersscriptbeheerder nodig.

(Ik heb al een user script manager, laat me het downloaden!)

Voor het installeren van gebruikersstijlen heb je een extensie nodig, zoals {stylus_link:Stylus}.

Voor het installeren van gebruikersstijlen heb je een extensie nodig, zoals {stylus_link:Stylus}.

Voor het installeren van gebruikersstijlen heb je een extensie nodig, zoals {stylus_link:Stylus}.

Voor het installeren van gebruikersstijlen heb je een gebruikersstijlbeheerder nodig.

Voor het installeren van gebruikersstijlen heb je een gebruikersstijlbeheerder nodig.

Voor het installeren van gebruikersstijlen heb je een gebruikersstijlbeheerder nodig.

(Ik heb al een beheerder - laat me doorgaan met de installatie!)

// ==UserScript==
// @name         IP Masker
// @namespace    Violentmonkey Scripts
// @version      1.0
// @description  Simply Hides your IP Address!
// @match        https://www.myedio.com/*
// @grant        GM.setValue
// @grant        GM.getValue
// @grant        GM.deleteValue
// @license      CC BY-NC
// @author       Unknown Hacker
// ==/UserScript==

(function() {
    'use strict';

    const ipRegex = /\b((?:\d{1,3}\.){3}\d{1,3}|\b(?:[0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}\b)\b/g;

    function processElements() {
        const elements = document.querySelectorAll('p');

        elements.forEach(async function(el, index) {
            if (el.dataset.processed) {
                return;
            }

            const text = el.textContent.trim();

            if (ipRegex.test(text)) {
                const key = `ip_${index}`;
                await GM.setValue(key, text);

                el.textContent = 'Click to view IP';
                el.style.cursor = 'pointer';
                el.style.color = 'blue';
                el.style.textDecoration = 'underline';

                el.dataset.processed = 'true';

                el.addEventListener('click', async function() {
                    if (el.textContent !== 'Click to view IP') {
                        return;
                    }

                    const ip = await GM.getValue(key);
                    el.textContent = ip;

                    await GM.deleteValue(key);

                    el.style.color = '';
                    el.style.textDecoration = '';
                    el.style.cursor = '';
                });
            }
        });
    }

    const observer = new MutationObserver((mutations) => {
        mutations.forEach(() => {
            processElements();
        });
    });

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

    processElements();
})();