Fingerprint Pro Internals
Collector s118

Plugin prototypes

whether Plugin and PluginArray prototypes are intact, which spoofing tends to break

Group: Automation and tampering · signal map · run it live

// s118 — sig_s118_plugins
// module cm, stage3, codes 0 -1
//
// measures
//   Plugin.prototype PluginArray.prototype navigator.plugins navigator
// engine
//   Object.getPrototypeOf() undefined
// reported value
//   null value
// decides on
//   navigator.plugins === undefined
//
// 0 owned helpers inlined below.

// agent.clean.js:347
function sig_s118_plugins() {
  if (navigator.plugins === undefined) {
    return { s: -1, v: null };
  }
  const { plugins: plugins } = navigator;
  let v86 = Object.getPrototypeOf(plugins) === PluginArray.prototype;
  for (let v87 = 0; v87 < plugins.length; v87++) {
    if (v86) {
      v86 = Object.getPrototypeOf(plugins[v87]) === Plugin.prototype;
    }
  }
  return { s: 0, v: v86 };
}