Anti Snoop

Conceal information about network type (e.g. cellular/broadband), number of CPU cores (or Hyper Threads), and video adapter brand & model.

您需要先安装一个扩展,例如 篡改猴Greasemonkey暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴Userscripts ,之后才能安装此脚本。

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

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

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

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

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

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

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

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

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

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

// ==UserScript==
// @name        Anti Snoop
// @namespace   https://greasyfork.org/en/users/85671-jcunews
// @version     1.0.6
// @license     AGPLv3
// @author      jcunews
// @description Conceal information about network type (e.g. cellular/broadband), number of CPU cores (or Hyper Threads), and video adapter brand & model.
// @match       *://*/*
// @inject-into page
// @grant       none
// @run-at      document-start
// ==/UserScript==

(() => {
  ["connection", "mozConnection", "webkitConnection", "hardwareConcurrency"].forEach((k, p) => {
    if (navigator[k] && (p = Object.getPrototypeOf(navigator, k))) {
      p.get = undefined;
      Object.defineProperty(navigator, k, p)
    }
  });
  [window.WebGL2RenderingContext, window.WebGLRenderingContext].forEach(fn => {
    if (fn && !fn.prototype.getParameter_) {
      fn.prototype.getParameter_ = fn.prototype.getParameter;
      fn.prototype.getParameter = function(n) {
        if ([37445, 37446].includes(n)) return "";
        return fn.prototype.getParameter_.apply(this, arguments)
      }
    }
  })
})();