我正在尝试分享一个 TamperMonkey 脚本,但我不想让他们与他们的朋友分享,我该怎么做?

问题描述 投票:0回答:2

我想知道如果您获得了他们的指纹,您是否可以仅将 TamperMonkey 脚本共享给某些人,这样他们就不能与其他任何人共享该脚本。可能吗?

我已经完成研究并询问了其他人,但互联网上没有任何地方给我提示,让我知道从哪里开始编写 Tampermonkey 脚本。我需要帮助。

javascript tampermonkey fingerprint
2个回答
1
投票

没有一种方法是万无一失的。有足够兴趣和足够技能的人将能够找到绕过您采取的任何保护措施的方法。用户脚本在客户端机器上运行;客户端机器必须拥有代码才能运行它,并且客户端可以完全控制自己的机器,因此了解浏览器和用户脚本如何工作的人可能无论如何都能找到解决方法。

但是您可以使共享脚本变得更难。一种可能性是用户脚本本身(带有元数据块等)不包含 actual 有趣的代码,而是只包含从您控制的服务器远程获取文本的代码。然后,如果允许用户运行脚本,您的服务器将以 actual 代码响应,如果允许,则用户计算机上的用户脚本将运行脚本响应(例如,附加 <script>

 标签,或类似的东西).

要确定是否应向特定客户端提供脚本,您可以设置登录系统。要求用户在最初请求脚本时发送其凭据。然后不仅在您服务器上的数据库中验证这些凭证,

而且还针对 浏览器指纹,以及针对用户的已知 IP 地址。只有在所有三个都匹配时才发送代码。 (首次注册用户时,您需要以某种方式获取他们的 IP 地址,例如向他们发送指向您网站的个性化链接。)

这使得您的脚本更难

共享,因为如果用户只是与某人共享原始脚本,它将无法工作。如果用户共享原始脚本他们的网络连接,除非浏览器具有相同的指纹,否则它将无法工作。但是足够聪明的人会知道他们可以打开浏览器的开发工具并访问代码的内容,并分享它。 还有其他方法,但这对您(编剧)来说仍然是很多工作要实施,而且从根本上说,这不是一个可以解决的问题。海事组织,别打扰了;拥抱

开源

.


0
投票

考虑到大多数计算机没有指纹传感器,并且从权限的角度来看,使用真实的生物识别指纹真的很难。最好只允许某些浏览器指纹。使用一些先进的技术,一些聪明的人发现你可以运行一些 JS 代码并每次获得一个运行浏览器唯一的数字。考虑查看像

get-browser-fingerprint

 这样的包来获取浏览器指纹,如果指纹与其中一个预设不匹配,只需退出脚本。
但是,任何人仍然可以只更改代码以删除此保护,因此您需要混淆整个脚本。这意味着通过一个程序运行它,该程序使它非常丑陋且非常混乱,但仍然可以运行。混淆是可逆的,但需要相当多的工作。这是

这个在线 JS 混淆器

的例子: console.log('hi');

成为

var _0x2be90f=_0x337b;function _0x5af6(){var _0x1cec7f=['17774990EijQlt','7657191Hbnsrq','10meabHV','328mRoSjv','3366273JDQtfM','1855566rgrUtg','960084UnADqG','1NcwfoY','135282VOtoAu','log','2552244wDCqcA'];_0x5af6=function(){return _0x1cec7f;};return _0x5af6();}function _0x337b(_0x2fbccd,_0x5871c5){var _0x5af66a=_0x5af6();return _0x337b=function(_0x337b45,_0x43fff6){_0x337b45=_0x337b45-0x174;var _0x574e2d=_0x5af66a[_0x337b45];return _0x574e2d;},_0x337b(_0x2fbccd,_0x5871c5);}(function(_0x58a2b9,_0x3115b5){var _0xbf3873=_0x337b,_0x2fa375=_0x58a2b9();while(!![]){try{var _0x4bd27c=parseInt(_0xbf3873(0x17d))/0x1*(-parseInt(_0xbf3873(0x17b))/0x2)+parseInt(_0xbf3873(0x17a))/0x3+-parseInt(_0xbf3873(0x17c))/0x4+-parseInt(_0xbf3873(0x178))/0x5*(parseInt(_0xbf3873(0x175))/0x6)+-parseInt(_0xbf3873(0x17e))/0x7*(-parseInt(_0xbf3873(0x179))/0x8)+-parseInt(_0xbf3873(0x177))/0x9+parseInt(_0xbf3873(0x176))/0xa;if(_0x4bd27c===_0x3115b5)break;else _0x2fa375['push'](_0x2fa375['shift']());}catch(_0x381ba4){_0x2fa375['push'](_0x2fa375['shift']());}}}(_0x5af6,0xc8d4d),console[_0x2be90f(0x174)]('hi'));

最后,如果您想使用 Big-Tech 方法,则威胁您的朋友,如果他们分享脚本侵犯了您对脚本的版权(这是一个笑话),则采取法律行动。

© www.soinside.com 2019 - 2024. All rights reserved.