【问题标题】:Why does Bing obfuscate their JavaScript?为什么 Bing 会混淆他们的 JavaScript?
【发布时间】:2009-07-01 18:01:43
【问题描述】:

我像往常一样在网上冲浪,我想看看 Bing 的源代码,因为我很好奇,想知道他们用什么来使他们的图像淡入。我对什么感到惊讶只能由以下行限定:

文字的圣墙!

这让我想知道像这样混淆您的 (X)HTML、CSS 和 JavaScript 是否有任何优势?也许是为了减小文件的大小?


编辑:环顾四周后,我意识到这是一种很常见的做法。以前从未从缩小的角度看过它!

【问题讨论】:

    标签: javascript html css obfuscation bing


    【解决方案1】:

    它们没有混淆。他们是minifying,以减少他们每天看到的数百万个请求所使用的带宽。

    JavaScript 和 CSS 的目标 缩小总是为了保留 代码的操作质量 同时减少其总字节 足迹(无论是原始条款还是之后 gzipping,与大多数 JavaScript 和 CSS 一样 从生产 Web 服务器提供的服务是 gzip 作为 HTTP 协议的一部分)。

    您可能也有兴趣阅读 Yahoo!标题为 "Minification v. Obfuscation" 的用户界面博文。

    【讨论】:

    • 如果这是选择的答案,值得注意的是彼得的 [stackoverflow.com/users/131858/peter] 答案 [stackoverflow.com/questions/1070514/… 不应该尝试以这种方式编写代码,但是这应该作为某种类型的自动化过程来完成,或者作为将代码移入生产环境的一部分。
    • 这不是在回答任何问题。虽然这是对“MS 对他们的 Bing javascript 做了什么?”之类的问题的一个很好的答案。它没有回答“你应该混淆你的 javascript 吗?”
    • @Adam:问题的标题不太准确。我的回答说明了作者的真正意思。作者想知道为什么微软会混淆他们的 Javascript 代码。我指出他们不是故意混淆他们的代码,而是为了速度而缩小。我认为这充分回答了他的问题。
    • 我更新了标题以更准确地反映问题和这个公认的答案。希望对您有所帮助...
    • 很好,现在更有意义了:-)
    【解决方案2】:

    混淆代码的两个主要原因:

    • 减少文件的总大小(就像你提到的那样)如果你用 'C' 替换一个名为 'CallThisFunctionAndReturnAnArray' 的函数 - 你已经在文件中保存了很多字符。

      李>
    • 保护知识产权 - 虽然这是否现实值得商榷,但这是这样做的普遍理由。你可以用好的工具来解决这个问题,或者如果你真的很聪明。

    【讨论】:

    • 这是没有争议的。混淆 javascript 是浪费时间。如果您对 Javascript 感兴趣,那么有人会进行逆向工程。没那么难。
    【解决方案3】:

    文件大小肯定会有好处,例如 Gmail 本身不仅会这样做,还会压缩其内容。

    【讨论】:

      【解决方案4】:

      这绝对是一个优势。不过,有一些重要的事情需要注意。没有理由实际编写这样的代码。相反,在您完成某事(并以良好可读的形式编写)之后,使用缩小器删除不需要的空白等。对于较大的文件,这可以大大减少加载时间。

      【讨论】:

      • 一想到这样的编码就让我不寒而栗!
      【解决方案5】:

      我会回答,在这些情况下,“混淆”不是目标,而是带宽。如果您以这样的速度提供可缓存的内容,从而减小主页大小将是有益的,那么这样做确实是有意义的。

      至于混淆以避开窥探的眼睛 - 不。不要那样做。

      【讨论】:

        【解决方案6】:

        仅用于减小尺寸,并且仅适用于大型模块。使用 gzip 可以获得更大的收益。

        如果您使用任何第三方代码,您可能需要在缩小时保持其版权/许可 cmets 不变。人们经常忘记这样做。您可能也希望保留自己的版权 cmets。

        【讨论】:

          【解决方案7】:

          是的,文件大小减小。

          【讨论】:

            【解决方案8】:

            是的。减小文件大小不仅可以减少下载时间,还可以减少解析时间,这在某些浏览器(尤其是恶魔般的 IE6)上非常有用。

            这可能需要重新标记缩小。

            【讨论】:

              【解决方案9】:

              我会在优化以减少文件大小和混淆以防止(或至少进行硬)逆向工程的预期目的之间进行区分。此外,例如 google 有一个“编译器”,它可以扩展 JavaScript 以包含一些高级类型系统等;然后这个扩展代码被“编译”成常规的 JavaScript。显然,以优化的方式创建这个生成的代码是有意义的——不需要让它可维护。

              【讨论】:

                【解决方案10】:

                我敢打赌,他们这样做的主要原因是为了减小文件大小。较小的文件使页面加载速度更快。

                混淆并不那么重要。此外,它可能会使调试变得很痛苦,具体取决于您的操作方式。

                Speed is everything in search.

                【讨论】:

                  【解决方案11】:

                  这让我想知道像这样混淆您的 (X)HTML、CSS 和 Javascript 是否有任何优势?也许是为了减小文件的大小?

                  混淆略有不同于另一种用于 Javascript 文件的常用技术,即缩小。缩小在 Javascript 中很常见,因为它可以减小文件大小,而大文件可以显着减小它们的大小(因为大型 Javascript 文件通常包含大量 cmets、换行符、不需要的空格等,可以剥离这些文件以减小脚本)。

                  另一方面,混淆更多是关于隐藏您的代码,通过将变量名称更改为其他晦涩的变量名称,或者从 Javascript 文件中删除含义。但是,这样做通常会减小文件大小,因为变量名称通常比原始文件中的名称短得多。这是一种常见的技术,可以让其他人更难简单地复制代码,并且更多的是为了保护与其他平台相比显然更容易访问的代码。

                  同时进行压缩和混淆对您的脚本有利,因为它们会减小您的 Javascript 文件的大小,从而减少加载页面所花费的时间,并且也会使其他人更难对其进行逆向工程(如果这是您的代码的问题)。

                  但是:请注意,它不是万无一失 - 存在某些工具可以更轻松地对混淆代码进行逆向工程,因此它不会 100%远离真正想看看您的脚本如何工作的其他人。

                  【讨论】:

                    猜你喜欢
                    • 2021-04-06
                    • 1970-01-01
                    • 1970-01-01
                    • 2013-08-19
                    • 2021-06-05
                    • 2016-03-18
                    • 2015-10-27
                    • 1970-01-01
                    • 2012-04-04
                    相关资源
                    最近更新 更多