2014-09-25 86 views
1

我瞭解JS minfiers,混淆器和縮小器。我想知道是否有任何現有的工具(或任何快速到代碼的解決方案)部分混淆JavaScript。部分地,我的意思是它應該變得難以閱讀,但不會顯示爲醜化/縮小。它應該保留縮進,但會丟失註釋,並部分更改變量名稱,使其變得不清晰,而不會將它們轉換爲像混淆器那樣的「a,b,c」。半模糊處理/ uglify JavaScript

這樣做的目的可能是採取明確且可重用的代碼,並使其隱含且難以被其他人重用,而不會使自己無法工作。

從哪裏開始做到這一點的任何想法?也許編輯現有的混淆器?

+0

當然,模糊處理是爲生產而設計的,而源代碼則用於開發。通過「不會讓自己無法工作」,我的意思是,如果您構建了非常易讀的代碼,並帶有註釋和顯式變量名稱,那麼可供其他可以訪問源代碼的開發人員重複使用。現在,如果您想讓這些源代碼隱含,難以被其他開發人員重用,您希望刪除註釋,並更改變量名稱以使其不那麼明確。 – Rayjax 2014-09-25 08:54:26

+0

可以有以下各種用例:知識產權保護,避免公司濫用(僱傭你建立一個殺手級項目,並且因爲他們有足夠的人維護它而激怒你),盜用源......以及其他很多人。我會將其視爲保護有權訪問它們的人的一些源代碼的一種方式。有些人會從一開始就編寫隱式代碼,但是其他人可能已經構建了明確的,可讀的和可重用的代碼,然後出於任何原因,他們會希望使其隱含。 – Rayjax 2014-09-25 08:58:11

回答

1

[此回答是對OP的請求的直接回復]。

語義設計JavaScript混淆器會做你想做的事,但你需要兩遍。

第一遍,運行它作爲混淆器;它會重新命名標識符(儘管你可以控制多少或完成的方式),剝離whitepspace和註釋。如果你限制了重命名標識符的能力,你會失去混淆器的一些實力,但這是你的選擇。

在第二次通過時,將其作爲漂亮打印機運行;它會再次引入好的縮進。 (事實上​​,構造障礙的想法來自構建一個漂亮的打印機;如果你可以打印,漂亮,確實很容易打印)。

從使用代碼的角度來看,您最好使用自己喜歡的任何方式處理主副本,並將縮進和好評作爲文檔完成。當你準備好obfsucate時,你運行混淆器,發送混淆結果。在混淆結果中報告的涉及混淆名稱的錯誤可以使用迷惑< - >在混淆步驟中生成的原始名稱映射回原始名稱。

這是我公司的產品。我會提供一個鏈接,但是當我這樣做時它會討厭它,所以你必須通過我的生物或谷歌搜索來找到它。

PS:它的工作原理與@georg建議的一樣,通過解析爲一個AST,mangling和prettyprinting。它不使用esprima。

1

我不知道有一種工具可以滿足您的特定要求,但是它似乎相對容易創建,因爲這些關鍵部件已經存在。

  • 分析源成AST,使用esprima或類似
  • 操作樹在你所希望的方式(如:刪除註釋,軋車標識等)
  • 重建使用escodegen
  • 樹源
+0

非常有洞察力,因爲它爲我們提供了關於uglifier組件的提示 – Rayjax 2014-09-26 13:10:41