javascript - 网站可以知道我是否在运行用户脚本吗?

标签 javascript facebook greasemonkey userscripts tampermonkey

例如,Facebook.com 能否在我的浏览器上运行版本控制脚本,并查明我是否正在使用脚本运行更改过的 HTML 代码?

这是否可以通过一个脚本来完成,该脚本可以读取缓存中的 HTML 代码并生成某种散列标签,然后将其发送回服务器并与发送给客户端的代码进行比较?

最佳答案

是的,理论上,网站可以推断出各种情况下脚本的存在。

这不是万无一失的,通常对于网站的微不足道的“威胁”来说太麻烦了。 (话又说回来,一些网站管理员可能对这些事情有强制症。;))

一些方法,取决于脚本的作用(排名不分先后):

  1. 游戏或拍卖网站可以监控“出价”点击的时间(速度和规律性)。

  2. 一个站点可以通过 AJAX 返回比方说 <script> 的计数节点,寻找额外的东西。

  3. 同样,网站可以 AJAX 支持页面的任何或所有内容,并将其与预期值进行比较。

  4. 可以记录额外的 AJAX 调用或不满足 Conceal 要求的 AJAX 调用(并允许显示为成功)。

  5. 如果脚本使用unsafeWindow以正确(错误)的方式,a page can detect that and even hijack (slightly) elevated privileges .

  6. 可以检测到之前没有发生鼠标悬停事件的“点击”。我实际上已经看到它在野外使用。

  7. A page's javascript can often detect script-generated clicks (etc.)与用户生成的不同。 (谢谢 c69 的提醒。)

然而,最终,优势是给用户脚本编写者的。可以在用户端检测并阻止网页采取的任何反制措施。即使是自定义的、必需的插件或必需的硬件加密狗也可以被熟练且积极的用户破坏。

关于javascript - 网站可以知道我是否在运行用户脚本吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8548141/

相关文章:

javascript - Canvas 中鼠标悬停错误

php - 使用 Graph API PHP SDK 从特定 Facebook 相册获取所有图像

facebook - Facebook 个人资料中未返回用户名

javascript - Facebook 评论未显示 ios swift

javascript - 是否可以使用 node.js 作为 greasemonkey 的更快、更优雅、支持数据库的替代品?

javascript - Greasemonkey if/else 带有日期的超时

javascript - 滚动 800 像素后如何在主页上显示一个 div?

Javascript 是否有一个很好的方法来 'slice' map

javascript - 如何从父状态的嵌套状态访问参数?

javascript - 在 Firefox 和 JSBin 上使用 Devtools : Some files don't want to load with devtools closed