如何解决书签更改JSON配置的任意值
我正在努力更改专有的,高度混淆的和防篡改的Web应用程序的UX,因此我无法在服务器级别将其扼杀在萌芽状态。我仅限于浏览器和小书签的沙箱。
页面在两个单独的查询中加载主代码(<script preload>
)和用户配置(<script defer>
)。我希望用户配置中的设置具有与服务器发送的值不同的值。
亲自为我做,我可以在配置尚未出现在浏览器中之前对其进行篡改,但是我还必须使其他用户可靠地进行配置,而不必让他们安装诸如Greasemonkey,fiddler之类的一堆东西等等。
我尝试了两种同样低效的方法:
- 页面开始加载时,执行此命令并希望我能赢得比赛:
{
var loadedConf = document.getElementById("user").innerHTML;
if(typeof loadedConf === "undefined")
{
setTimeout(raceReplace,5);
rantime += 5;
}
else
{
document.getElementById("user").innerHTML = loadedConf.replace(/arbitraryConfigField":false/,'arbitraryConfigField":"arbitraryConfigValue"');
console.log("Raced to a finish in " + rantime + "ms")
}
}
raceReplace()
由于这是一场比赛,因此完全取决于用户单击书签的速度。通过练习,我几乎有50%的时间可以做到!嘿。
- 扩展JSON.parse以使其正常返回对象,这与上帝和道格拉斯·克罗克福德的意图相同,但任意键/值除外:
JSON.parse = (text,fn) => {
const result = parse(text,fn)
if (result && result.arbitraryConfigField) {
result.arbiraryConfigField = 'arbitraryConfigValue'
}
return result
}
一种更好的方法,但也容易竞争,并可能妨碍常规的JSON.parse性能。
(我想知道是否在性能方面,不做任何检查就直接执行text.replace会更好。)
还有第三种方法来等待页面加载,挂入页面并在随后的重新加载(是的,必须重新渲染所有内容)中具有必要的值,而不会造成比赛的麻烦和不确定性? / p>
如果没有设计Chrome扩展程序或与Greasemonkey挂钩的重型大炮,拥有此功能将是令人不安的。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。