网站能否检测到使用简单的 Tampermonkey 脚本?
Can websites detect use of simple Tampermonkey scripts?
出于好奇,又找不到明确的答案,我在想。网站是否能够检测到 Tampermonkey 用户脚本的使用?如果是这样,它是任何脚本还是仅当它具有特定功能时?
像下面这样的简单脚本会被网站检测到吗?
(function() {
var randomizer = Math.floor(Math.random() * 241) + 20; //Gets a random number between 0 and 240, then adds 20
//console.log(randomizer);
setTimeout(function(){ location.reload(); }, randomizer*1000);
})();
tl;dr - 没有
浏览器和 Tampermonkey 插件都不会公布用户脚本的存在。那就是没有直接的方法来编写 if(tampermonkeyActive)
并检测它。
但是,网页可能会实施防篡改技术。这些可能不是针对 Tampermonkey,而是针对任何类型的可疑行为。这可能包括:
- 每位用户每单位时间的可疑数量 activity
- Activity 网页未聚焦时
- 意外的全局变量或函数调用
- 正在检查
isTrusted
事件。
在所有这些中,我只体验过第一个例子,即记录activity服务器端并手动审查它。因此,如果您尝试使某些东西自动化,而网站所有者不喜欢它,您应该考虑让它看起来像人。
安全
Tampermonkey 脚本已经在包装范围内运行,因此自调用函数是多余的。
检测用户脚本可能是恶意行为者想要做的事情。如果您使用 @grant
来获取 tampermonkey 的任何特殊功能,并且还使用 @grant unsafeWindow
,则泄露任何功能都可能允许检测到该功能的攻击者入侵您的浏览器。不过这会花费很多精力——他们需要检测用户脚本,然后手动破解它,因为每个用户脚本都是不同的。
出于好奇,又找不到明确的答案,我在想。网站是否能够检测到 Tampermonkey 用户脚本的使用?如果是这样,它是任何脚本还是仅当它具有特定功能时? 像下面这样的简单脚本会被网站检测到吗?
(function() {
var randomizer = Math.floor(Math.random() * 241) + 20; //Gets a random number between 0 and 240, then adds 20
//console.log(randomizer);
setTimeout(function(){ location.reload(); }, randomizer*1000);
})();
tl;dr - 没有
浏览器和 Tampermonkey 插件都不会公布用户脚本的存在。那就是没有直接的方法来编写 if(tampermonkeyActive)
并检测它。
但是,网页可能会实施防篡改技术。这些可能不是针对 Tampermonkey,而是针对任何类型的可疑行为。这可能包括:
- 每位用户每单位时间的可疑数量 activity
- Activity 网页未聚焦时
- 意外的全局变量或函数调用
- 正在检查
isTrusted
事件。
在所有这些中,我只体验过第一个例子,即记录activity服务器端并手动审查它。因此,如果您尝试使某些东西自动化,而网站所有者不喜欢它,您应该考虑让它看起来像人。
安全
Tampermonkey 脚本已经在包装范围内运行,因此自调用函数是多余的。
检测用户脚本可能是恶意行为者想要做的事情。如果您使用 @grant
来获取 tampermonkey 的任何特殊功能,并且还使用 @grant unsafeWindow
,则泄露任何功能都可能允许检测到该功能的攻击者入侵您的浏览器。不过这会花费很多精力——他们需要检测用户脚本,然后手动破解它,因为每个用户脚本都是不同的。