2

嘿,这是许多插件作者在不需要帮助的情况下所做的事情,不是吗?:) 这就是问题所在——我正在编写一个我打算出售的 jQuery 插件。我想提供一个现场演示;当然,我不希望任何人只使用演示代码。

我知道它很愚蠢,而且它当然不会带来任何好的因果报应,但是我可以在演示脚本中做哪些顽皮的事情,这会让任何尝试使用它的人的生活变得相当困难?想到设置undefined = true,以及覆盖 jQuery 方法。除此之外还有什么建议吗?

4

8 回答 8

14

我喜欢Diodeus 的视频(或截屏视频等)的想法。

但是,如果您绝对肯定想要一个交互式演示,请使用 jQuery、您的插件和您的演示代码,将所有三者放在一起,然后将 Closure Compiler 扔给它(如果您可以使用 jQuery 进行高级优化;使用简单否则优化)。Closure Compiler不仅仅是一个缩小器。它实际上重写了您的代码、内联函数(即使在简单模式下)、更改标识符名称等。如果所有代码一起编译,您不必告诉它“导出”任何符号,它可以有一个重命名,内联狂热。:-) 它将三个部分(jQuery、插件和演示)混为一谈,这样工作量就远远超过了解开它们的价值。

于 2012-05-11T15:28:20.640 回答
10

JavaScript 环境就其本质而言是不安全的。除了缩小代码之外,您实际上无能为力。如果浏览器可以看到,用户就可以看到。这与试图阻止人们窃取您的图像的论点相同。

如果您想制作演示,请制作视频。

于 2012-05-11T15:22:36.427 回答
3

不要让你的 deno 代码成为一个 jQuery 插件:相反,让它成为一个功能等同于 jQuery的库的插件。

基本上,获取 jQuery 的副本并重命名其中的所有函数(和/或交换函数参数的顺序)。然后制作一个你的插件的演示副本,它被修改为使用新的、混乱的 jQuery 副本。

或者(或另外),将它缩小并让它火炬/删除/破坏它不需要的任何 jQuery 组件。任何想要使用您的缩小代码的人都会发现他们的 jQuery 对象已被大幅更改。

所有这些防御措施都有相当简单的解决方法,但它可能会让任何没有足够专注于了解问题所在的人望而却步。最后,您可能会发现这根本不值得付出努力,并相信诚实的客户会让您的开发变得值得。

于 2012-05-11T15:36:25.083 回答
2

添加一个只会在您自己的主机上通过的检查。然后缩小代码以掩盖工作原理。

于 2012-05-11T15:23:23.060 回答
2

任何许多帖子都表明,大多数 JavaScript可以毫不费力地被扯掉,尽管这可能会让人们感到困难。我会推荐使用一个好的 JavaScript 混淆器;我刚刚发现了这个,它似乎使它即使是受过训练的眼睛也难以阅读。

前:

var somethingToSay = "hello world";
function saySomething(phrase)
{
    alert(phrase);
}
sayHello(somethingToSay);

后:

eval(function(p,a,c,k,e,d){e=function(c){return c};if(!''.replace(/^/,String)){while(c--){d[c]=k[c]||c}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('2 0="3 4";8 5(1){7(1)}6(0);',9,9,'somethingToSay|phrase|var|hello|world|saySomething|sayHello|alert|function'.split('|'),0,{}))

值得注意的是,任何混淆都可能会对性能造成轻微影响,但这是为“保护”您的工作所付出的代价。

于 2012-05-11T15:30:34.697 回答
1

您可以缩小代码以使其更难阅读。

于 2012-05-11T15:21:29.607 回答
1

以屏幕录制而不是实时代码的形式发布您的“演示”。

于 2012-05-11T15:23:25.747 回答
0

如果它在那里,它可能会被扯掉。你可以对源代码进行缩小、模糊、做一些奇怪的事情,比如把它拆分成一堆 JS 文件,但它仍然可以被扯掉。如果您真的想要演示,您是否考虑过录制视频演示?

于 2012-05-11T15:23:15.303 回答