Cowanimato

Um UserScript que tenta fazer com que você fique anonimo ao maximo na internet.

You will need to install an extension such as Tampermonkey, Greasemonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey to install this script.

You will need to install an extension such as Tampermonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Userscripts to install this script.

You will need to install an extension such as Tampermonkey to install this script.

You will need to install a user script manager extension to install this script.

(I already have a user script manager, let me install it!)

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

(I already have a user style manager, let me install it!)

// ==UserScript==
// @name          Cowanimato
// @description   Um UserScript que tenta fazer com que você fique anonimo ao maximo na internet.
// @namespace     CowanNIMO
// @license       GPL-3.0
// @version       2.0
// @author        Cowanbas
// @match         *://*/*
// @run-at        document-start
// ==/UserScript==

(function () {
  'use strict';

  // Bloqueia cookies de rastreamento
  Object.defineProperty(document, 'cookie', {
    get: () => "",
    set: () => { },
    configurable: true
  });

  setInterval(() => {
    try {
      Object.defineProperty(document, 'cookie', {
        get: () => "",
        set: () => { },
        configurable: true
      });
    } catch (e) { }
  }, 1000);

  // Bloqueia Referer (evita que sites saibam de onde você veio)
  Object.defineProperty(document, 'referrer', { get: () => '', configurable: true });

  // Altera User-Agent e outras propriedades para evitar fingerprinting
  const fakeUA = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36';

  Object.defineProperty(navigator, 'userAgent', { get: () => fakeUA, configurable: true });
  Object.defineProperty(navigator, 'platform', { get: () => 'Win32', configurable: true });
  Object.defineProperty(navigator, 'language', { get: () => 'en-US', configurable: true });
  Object.defineProperty(navigator, 'webdriver', { get: () => false, configurable: true });
  Object.defineProperty(navigator, 'plugins', { get: () => [], configurable: true });
  Object.defineProperty(navigator, 'hardwareConcurrency', { get: () => 4, configurable: true });

  // Impede fingerprinting básico (WebGL, Canvas, Audio)
  const blockFingerprinting = () => {
    const protectCanvas = (ctx) => {
      if (!ctx) return;
      const originalGetImageData = ctx.getImageData;
      ctx.getImageData = function (x, y, w, h) {
        const data = originalGetImageData.call(this, x, y, w, h);
        for (let i = 0; i < data.data.length; i += 4) {
          data.data[i] ^= 0xFF;
        }
        return data;
      };
    };
    protectCanvas(CanvasRenderingContext2D.prototype);

    // Bloqueia WebGL Fingerprinting
    const fakeWebGL = (gl) => {
      if (!gl) return;
      const originalGetParameter = gl.getParameter;
      gl.getParameter = function (param) {
        if (param === 37445) return 'Intel OpenGL Fake';
        if (param === 37446) return 'Fake GPU Model';
        return originalGetParameter.call(gl, param);
      };
    };
    fakeWebGL(WebGLRenderingContext.prototype);
    fakeWebGL(WebGL2RenderingContext.prototype);
  };
  blockFingerprinting();

  // Função utilitária para redefinir propriedades de objetos (usada nas novas proteções)
  function redefine(obj, prop, value) {
    try {
      Object.defineProperty(obj, prop, { get: () => value, set: () => { }, configurable: true });
    } catch (e) { }
  }

  // Acrescenta propriedades extras ao navigator
  redefine(navigator, 'languages', ['en-US', 'en']);
  redefine(navigator, 'deviceMemory', 8);

  // Canvas extra - Protege toDataURL e toBlob
  if (window.CanvasRenderingContext2D) {
    const ctxProto = CanvasRenderingContext2D.prototype;
    if (!ctxProto._anonimato_patched) {
      const scramble = str => str.split('').reverse().join('');
      const origToDataURL = ctxProto.toDataURL;
      ctxProto.toDataURL = function () {
        return scramble(origToDataURL.apply(this, arguments));
      };
      const origToBlob = ctxProto.toBlob;
      ctxProto.toBlob = function (callback, ...args) {
        origToBlob.call(this, function (blob) {
          callback(blob);
        }, ...args);
      };
      ctxProto._anonimato_patched = true;
    }
  }

  // Protege AudioContext (fingerprinting)
  if (window.OfflineAudioContext) {
    const origStartRendering = OfflineAudioContext.prototype.startRendering;
    OfflineAudioContext.prototype.startRendering = function () {
      this.oncomplete = null;
      return origStartRendering.apply(this, arguments);
    };
  }

  // Remove ou neutraliza APIs de rastreamento
  const blockAPIs = [
    'deviceorientation', 'devicemotion', 'geolocation', 'clipboard', 'bluetooth'
  ];
  blockAPIs.forEach(api => {
    if (navigator[api]) redefine(navigator, api, undefined);
  });

  // Remove permissões de rastreamento (Geolocalização, etc)
  if (navigator.permissions) {
    const originalQuery = navigator.permissions.query;
    navigator.permissions.query = function (parameters) {
      if (parameters.name === 'geolocation') {
        return Promise.resolve({ state: 'denied' });
      }
      return originalQuery.apply(this, arguments);
    };
  }

  // Tenta bloquear WebRTC (vaza IP local)
  if (window.RTCPeerConnection) {
    window.RTCPeerConnection = function () {
      throw new Error('WebRTC blocked');
    };
  }

  // Limpa localStorage e sessionStorage
  try { localStorage.clear(); } catch (e) { }
  try { sessionStorage.clear(); } catch (e) { }

  // Remove Service Workers
  if ('serviceWorker' in navigator) {
    navigator.serviceWorker.getRegistrations().then(function (registrations) {
      for (let registration of registrations) {
        registration.unregister();
      }
    });
  }

  // Remove event listeners suspeitos
  window.addEventListener = function () { };
  document.addEventListener = function () { };

  // Remove métodos de fingerprinting conhecidos
  if (window.Intl) window.Intl = undefined;
  if (window.screen) {
    redefine(window.screen, 'width', 1920);
    redefine(window.screen, 'height', 1080);
    redefine(window.screen, 'colorDepth', 24);
  }

})();