我使用的一个网站会执行浏览器检查,由于我的浏览器显示它们是 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>
间隔并取消间隔。
如何安装
将脚本另存为
no-nagging.user.js
。打开
chrome://extensions
。拖入
no-nagging.user.js
打开的选项卡。
或者
关闭 Chrome,然后通过执行以下命令重新打开它:
google-chrome --easy-off-store-extension-install
拖入
no-nagging.user.js
地址栏。
点击添加。
答案2
你可以使用广告拦截器,例如广告拦截器。然后您可以通过其 URL 阻止该文件。