例如,Facebook.com 能否在我的浏览器上运行版本控制脚本,并查明我是否正在使用脚本运行更改过的 HTML 代码?
这是否可以通过一个脚本来完成,该脚本可以读取缓存中的 HTML 代码并生成某种散列标签,然后将其发送回服务器并与发送给客户端的代码进行比较?
最佳答案
是的,理论上,网站可以推断出各种情况下脚本的存在。
这不是万无一失的,通常对于网站的微不足道的“威胁”来说太麻烦了。 (话又说回来,一些网站管理员可能对这些事情有强制症。;))
一些方法,取决于脚本的作用(排名不分先后):
游戏或拍卖网站可以监控“出价”点击的时间(速度和规律性)。
一个站点可以通过 AJAX 返回比方说
<script>
的计数节点,寻找额外的东西。同样,网站可以 AJAX 支持页面的任何或所有内容,并将其与预期值进行比较。
可以记录额外的 AJAX 调用或不满足 Conceal 要求的 AJAX 调用(并允许显示为成功)。
如果脚本使用
unsafeWindow
以正确(错误)的方式,a page can detect that and even hijack (slightly) elevated privileges .可以检测到之前没有发生鼠标悬停事件的“点击”。我实际上已经看到它在野外使用。
A page's javascript can often detect script-generated clicks (etc.)与用户生成的不同。 (谢谢 c69 的提醒。)
然而,最终,优势是给用户脚本编写者的。可以在用户端检测并阻止网页采取的任何反制措施。即使是自定义的、必需的插件或必需的硬件加密狗也可以被熟练且积极的用户破坏。
关于javascript - 网站可以知道我是否在运行用户脚本吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8548141/