运行条件编译防止JS泄露IE浏览器

Prevent JS from revealing IE browser by running conditional compilations

下面的 JS 代码可以显示您的浏览器是否为 IE。

var isIE = /*@cc_on!@*/!1;

有没有办法在不禁用 javascript 的情况下防止这种行为?

根据对该问题的评论确定的最终目标是查看是否有办法通过 JavaScript 的任何类型检查来 "hide" 浏览器的身份,以帮助创建自定义浏览器完全匿名。

根据浏览器提供的所有 提示,我认为这几乎是不可能的,这些提示揭示了它的真实身份。

对于 Internet Explorer,这里只是(只读)属性 值的示例,表明浏览器是 Internet Explorer

//This could be any element
var bStyle = document.body.style;
for(var x in bStyle){
  console.log(x + ':' + bStyle[x]);
}

此 returns 属性如(ms 是 Microsoft 属性的前缀):

msBlockProgression: 
msInterpolationMode: 
msBackfaceVisibility:
msPerspective: 
msPerspectiveOrigin: 
msTransformStyle:
msTransform: 
msTransformOrigin: 
msAnimation: 
msAnimationDelay: 
msAnimationDirection: 
msAnimationDuration: 
msAnimationFillMode: 
msAnimationIterationCount: 
msAnimationName: 
msAnimationPlayState: 
msAnimationTimingFunction: 
msFlex: 
msFlexAlign: 
msFlexDirection: 
msFlexFlow: 
msFlexItemAlign: 
msFlexLinePack: 
msFlexNegative: 
msFlexOrder: 
msFlexPack: 
msFlexPositive: 
msFlexPreferredSize: 
msFlexWrap: 
and 50+ more...

还有几十个仅适用于 IE 的 API,人们可以检查它们是否会暴露 IE。

console.log(typeof(window.createPopup));
//>> function in IE, undefined in other browsers

console.log(typeof(document.body.currentStyle));
//>> object in IE, undefined in other browsers

然后是所有仅适用于 IE 的技术...Active-X、VML、XML Data Islands、VBScript、Behaviors、CSS Expressions 等。所有这些都提供了关于浏览器的指标实际上是 Internet Explorer。

我个人不使用它,但 Tor Browser 背后的想法似乎是更好的方法...匿名化您的 "tracks" 而不是实际使用的浏览器。