簡體   English   中英

半模糊/丑化JavaScript

[英]Semi-obfuscate/uglify JavaScript

我了解JS礦工,混淆器和礦工。 我想知道是否存在任何現有工具(或任何快速編碼解決方案)來部分混淆JavaScript。 我的意思是說它應該變得難以閱讀,但不會顯得丑陋或縮小。 它應該保持縮進,但要保留注釋,並部分更改變量名,使它們不清楚,而不必像混淆器一樣將它們轉換為“ a,b,c”。

這樣做的目的可能是采用顯式且可重用的代碼,並使其隱式且難以被其他人重用,而又無法自己進行工作。

從哪里開始實現這一目標的任何想法? 也許編輯現有的混淆器?

我不知道可以滿足您特定要求的工具,但是鑒於重要部分已經存在,因此它似乎相對易於創建。

  • 使用esprima或類似方法將源解析為AST
  • 以您想要的方式操作樹(例如,刪除注釋,修飾符標識符等)
  • 使用escodegen從樹中重建源

[此答案是對OP請求的直接響應]。

語義設計JavaScript混淆器將完成您想要的操作,但是您需要兩次通過。

第一步,以混淆器的身份運行它; 它將重命名標識符(盡管您可以控制執行多少操作),去除空白和注釋。 如果限制其重命名標識符的能力,則會失去混淆器的力量,但這是您的選擇。

在第二遍,將其作為prettyprinter運行; 它將再次引入漂亮的縮進。 (實際上,迷戀的想法來自於構建prettyprinter;如果您可以打印漂亮,那么肯定很容易打印丑陋的東西)。

從使用代碼的角度來看,最好以自己喜歡的任何方式使用主副本,並附帶縮進和漂亮的注釋作為文檔。 准備好進行混淆時,可以運行混淆器,並發送混淆的結果。 可以使用混淆步驟中產生的混淆后的<->原始名稱的映射,將混淆結果中報告的涉及混淆名稱的錯誤映射回原始名稱。

這是我公司的產品。 我會提供一個鏈接,但是這樣做時我非常討厭它,因此您必須通過我的個人簡介或Google來查找它。

PS:它完全按照@georg的建議運行,通過解析為AST,修改和prettyprinting。 它不使用esprima。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM