Comic Curseifier

Replaces random words on webpages with comic-style curses like @#$%!&*

// ==UserScript==
// @name         Comic Curseifier
// @namespace    http://kapow.bam/
// @version      1.0
// @description  Replaces random words on webpages with comic-style curses like @#$%!&*
// @match        *://*/*
// @run-at       document-idle
// @grant        none
// @license MIT 
// ==/UserScript==

(function () {
  'use strict';

  const CHANCE = 0.03; // 8% of words replaced
  const SYMBOLS = ['@', '#', '$', '%', '&', '*', '!', '?'];

  function generateComicCensor(length = 4) {
    let out = '';
    for (let i = 0; i < length; i++) {
      out += SYMBOLS[Math.floor(Math.random() * SYMBOLS.length)];
    }
    return out;
  }

  const walker = document.createTreeWalker(document.body, NodeFilter.SHOW_TEXT, {
    acceptNode: (node) => {
      const tag = node.parentNode?.tagName;
      return node.nodeValue.trim() &&
        tag &&
        !['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT'].includes(tag.toUpperCase())
        ? NodeFilter.FILTER_ACCEPT
        : NodeFilter.FILTER_REJECT;
    }
  });

  let node;
  while ((node = walker.nextNode())) {
    const original = node.nodeValue;
    const words = original.split(/(\s+)/); // preserve spaces
    let changed = false;

    for (let i = 0; i < words.length; i++) {
      if (/\w{3,}/.test(words[i]) && Math.random() < CHANCE) {
        words[i] = generateComicCensor(Math.min(words[i].length, 6));
        changed = true;
      }
    }

    if (changed) {
      node.nodeValue = words.join('');
    }
  }

  console.log('🤬 Comic Curseifier activated.');
})();

QingJ © 2025

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