Privacidade e Bloqueio de Câmera

Bloqueia o acesso de sites a sua localização, microfone e câmera automaticamente.

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name           Privacidade e Bloqueio de Câmera
// @description    Bloqueia o acesso de sites a sua localização, microfone e câmera automaticamente.
// @namespace      CowanPRIV
// @license        CowBas
// @version        1.0
// @author         Cowanbas
// @match          *://*/*
// @exclude        
// @run-at         document-start
// ==/UserScript==

(function () {
  'use strict';

  // Script de Privacidade

  // Sobrescreve a função getCurrentPosition
  navigator.geolocation.getCurrentPosition = function (success, error, options) {
    if (error) {
      error({
        code: 1, // PERMISSÃO NEGADA
        message: "Localização Negada."
      });
    }
  };

  // Sobrescreve a função watchPosition
  navigator.geolocation.watchPosition = function (success, error, options) {
    if (error) {
      error({
        code: 1, // PERMISSÃO NEGADA
        message: "Localização Negada."
      });
    }
  };

  // Salva a função original para permitir acesso a outras mídias (como vídeo) se necessário
  navigator.mediaDevices.originalGetUserMedia = navigator.mediaDevices.getUserMedia.bind(navigator.mediaDevices);

  // Sobrescreve a função getUserMedia para bloquear o acesso ao microfone
  navigator.mediaDevices.getUserMedia = function (constraints) {
    return new Promise((resolve, reject) => {
      if (constraints && constraints.audio) {
        reject(new Error("Acesso ao microfone negado."));
      } else {
        // Se o pedido não for para usar o microfone, permite o acesso
        navigator.mediaDevices.originalGetUserMedia(constraints).then(resolve).catch(reject);
      }
    });
  };

  // Script de Bloqueio de Câmera

  // Sobrescreve a função navigator.mediaDevices.getUserMedia para bloquear o acesso à câmera
  if (navigator.mediaDevices && navigator.mediaDevices.getUserMedia) {
    const originalGetUserMedia = navigator.mediaDevices.getUserMedia.bind(navigator.mediaDevices);
    navigator.mediaDevices.getUserMedia = function (constraints) {
      if (constraints && constraints.video) {
        return Promise.reject(new Error('Acesso à câmera bloqueado.'));
      }
      return originalGetUserMedia(constraints);
    };
  }
})();