我如何防止网站(在浏览器中)因为我的操作系统偏好而对我区别对待?

我如何防止网站(在浏览器中)因为我的操作系统偏好而对我区别对待?

我使用的一个网站会执行浏览器检查,由于我的浏览器显示它们是 Linux,而不是 Windows 或 Mac,因此它会在每个页面上弹出警告,提示我使用的是“不受支持”的操作系统。
我尝试伪造用户代理,但 Chrome 似乎没有保存该设置,并且用户代理切换器扩展程序似乎无效。

浏览器检测似乎被捆绑到一个 javascript 文件中。因此,我认为如果我可以将该文件列入黑名单或禁止它,那么它就不会再困扰我“不支持”的操作系统了。

那么,我该如何将该文件列入黑名单或禁止该文件?适用于多种浏览器的解决方案是一个加分项。

答案1

您可以使用用户脚本实现相同的效果。它不会阻止外部 JavaScript 加载,但会禁用 JavaScript 函数alert()confirm()。使用 JavaScript 删除横幅可能会导致闪烁,但您可以注入 CSS 来隐藏它。

用户脚本

// ==UserScript==
// @name        No Nagging
// @description Disables nagging on harrison.edu
// @version     1.2
// @include     *://harrison.edu/*
// @include     *://*.harrison.edu/*
// @run-at      document-start 
// ==/UserScript==

var script = document.createElement('script');
var style = document.createElement('style');

script.appendChild(document.createTextNode(
    'window.alert=function(){};' + 
    'window.confirm=function(){};'
));

style.appendChild(document.createTextNode(
    '.topmenubar{display:none;}'
));

var interval = setInterval(function() {
    if (document.head) {
        document.head.appendChild(script);
        document.head.appendChild(style);
        clearInterval(interval);
    }
}, 10);

怎么运行的

前四条指令创建<script><style>元素。其中的 JavaScript<script>将全局函数alert()和替换confirm()为空函数;其中的 CSS<style>隐藏横幅。

<script>
    window.alert=function(){};
    window.confirm=function(){};
</script>

<style>
    .topmenubar{display:none;}
</style>

接下来,我们创建一个间隔,每 10 毫秒检查一次元素<head>是否已经存在。

当它发生时,我们将创建的元素附加到<head>间隔并取消间隔。

如何安装

  1. 将脚本另存为no-nagging.user.js

    • 打开chrome://extensions

    • 拖入no-nagging.user.js打开的选项卡。

    或者

    • 关闭 Chrome,然后通过执行以下命令重新打开它:

      google-chrome --easy-off-store-extension-install
      
    • 拖入no-nagging.user.js地址栏。

  2. 点击添加

答案2

你可以使用广告拦截器,例如广告拦截器。然后您可以通过其 URL 阻止该文件。

相关内容