Answers:
你应该在乎吗?没有。
为什么?因为您无能为力。
有些人可以预料地建议混淆。这适用于Java和.Net,但是Python,Javascript和Perl都是纯文本,因此您几乎无能为力。您网站中的价值无疑是服务器端,因此不必担心Javascript。
你为什么担心 我认为可能有两个原因:1)您正在编写商业JavaScript库。解决方案:获得另一个商业计划,JavaScript库通常是免费的。也许您可以在小型企业中赚钱,但是他们极有可能不会使用非法复制的代码。
2)您担心竞争对手会复制您的网站。如果这样做,您可以放心,您将永远领先于他们。他们更有可能编写自己的代码,并复制您网站的外观和行为,除非获得愚蠢的软件专利(例如亚马逊一键式购物),否则您将无法从中受益。
IOW,别担心。张贴版权声明,要求人们告诉您他们是否使用您的东西。如果有足够的人这样做,请使用您已经创建了一个有用的库这一事实来在极客之间赢得信誉,从长远来看,这可能是有益的。
否。请勿尝试和“保护”客户端脚本语言。混淆不起作用。缩小有其用途(但反盗版不是其中之一)
我还建议您不要减少代码,除非您每天获得数千次点击,否则每个请求的额外几千字节会有明显的不同(并且只有在正确压缩了所有使用的图像后才这样做,这样可以节省您的时间)远远超过几个KB,请正确设置缓存等等)。
即使您对Javascript进行了最小化/混淆处理,人们仍然可以轻松地将其复制到自己的站点。修改起来会有些困难,但是取决于脚本的功能,这可能并不重要。例如,人们提到的WMD编辑器已精简供公众使用。
混淆和缩小可以是相似的,但如果你要正确地混淆代码,你将不得不重新编写基本上它的大段让人很难理解。这使得代码更复杂,远远难以应付(对如果您的Javascript出现bug,则会防止盗版,因为没有人会想要使用(或窃取)它。.但是,那不是很好。
关于Javascript的一大优点是,任何人都可以右键单击/查看源代码,并通过实时查看工作代码来学习Javascript。正确的语言
我建议您在所有.js
文件和<script>
块的开头加上注释(包括您的信息(名称,网站)和某种许可)。根据代码的不同,也许会发出一个通知,说“如果您在项目中使用全部或部分代码,请让我知道!” 可能比“永远不要将此代码用于任何其他目的!”更有效。
为什么要担心呢?如果您的脚本值得窃取,则可以改为开放源代码并获得磨练它们的帮助。
因为它是一种始终以源代码形式提供的解释性语言,所以您不能真正做到这一点。如果海盗有足够的动机,那么即使混淆也不会有太大帮助。
(案例:StackOverflow WMD编辑器,从严格意义上讲,可以看作是盗版,尽管我知道Jeff和Dana只是出于好意)
我使用GWT(Google Web工具包)来编写Web应用程序,其中的代码全部用Java编写,并且可以使用以Java为中心的工具进行调试和测试,但是可以转换为JavaScript进行发布。
当不在PRETTY
或DETAILED
模式下时,GWT生成的JavaScript会进行高度优化和混淆,从而使其难以进行反向工程。(传统的JavaScript模糊处理程序将提供这些好处的一部分-但优化不取决于GWT进行详细的分支修剪和代码路径分析的能力)。
就是说,总的来说,我对混淆的看法为-1-例如,这意味着,即使他们碰巧具有开发技能和FireBug副本,合法客户也无法帮助您解决他们的问题。您是原始作者-您比其他任何人都了解代码,因此比起尝试进行廉价仿制的人,它具有竞争优势。此外,如果有任何这样的竞争对手实际上是在未经许可的情况下从他们偷走的东西中赚取了真钱,那么这将使他们敞开大门,将这些钱(或者可能是三倍的钱)在诉讼中带走;合法而严峻的竞争不会走这条路,为什么还要担心另一种呢?
我们在网络应用程序中使用了很多Javascript(和很多服务器端)代码,并且我们选择“模糊处理” Javascript以删除任何空格,换行符等。这不会真正保护您的代码,但是很难阅读和理解,并且很可能其他人不会因为所付出的努力而烦恼。
但是,我们这样做的原因并不在于我们不希望任何人复制部分代码,而是阻止我们向其交付代码的合作伙伴/客户直接在“我们的文件”中进行修改(避免在安装下一个更新时遇到麻烦)...
注意:尽管混淆有一个缺点,但您应该意识到:如果您需要调试该脚本代码,您自己将无法使用混淆的信息,因此,这始终涉及将“可读”文件复制到服务器优先。
如果您有商业秘密,则可以将代码中最敏感的部分移至ActionScript(Flash)。它与JavaScript本质上是相同的语言,并以标记化形式存储。