检测用户何时在浏览器中执行 JavaScript

Detecting when a user executes JavaScript in the browser

我目前正在开发一款完全基于浏览器的游戏(la Cookie Clicker),我正试图将用户利用可见的 JavaScript 来欺骗他们的游戏存档的可能性降到最低.为了便于说明,我们来看一个假设的函数;

let user = {
    money: 0
};

function addMoney(amount) {
    user.money += amount;
}

如果这在我的游戏中是一个真正的功能,任何用户都可以简单地弹出开发者控制台,输入 addMoney(1e100),并立即破坏我的潜在玩家群中任何竞争的可能性。

我想知道是否有任何方法可以禁用外部 JavaScript 输入(通过开发者控制台或通过在地址栏中使用 javascript:() 注入)以及是否可以一个东西不存在,是否至少可以 检测 外部 JavaScript 而不是 JavaScript 由站点本身在内部执行?

不多说了:

如果 'cheater' 足够坚定(和熟练),你不会阻止他们,但 obfuscating/minfying 代码会使它变得更加困难并阻止他们中的绝大多数 - 当然随意的。有很多可用的工具可以做到这一点,而且很容易做到。

这个很好用:
https://developers.google.com/closure/compiler/

除了此处提到的混淆选项外,还有 JavaScript 安全工具,如 Jscrambler,可在检测到任何篡改尝试时破解代码。他们 an example 与您描述的相同。