このツールの機能
この難読化ツールは、acornでコードを解析して構文木を組み立て、いくつかの構造変換を適用し、astringでJavaScriptを再生成します。すべてブラウザ内で処理され、貼り付けた内容がサーバーに送信されることはありません。
ここでの「難読化」の意味を明確にしておきます:これはカジュアルな閲覧を妨げるための手段であり、暗号化でも本物のセキュリティでもありません。コードを実行して調べる意志のある人(あるいは単に少し時間をかけて読む人)は、その挙動を復元できます。ブラウザに配信されたJavaScriptは常にダウンロード・実行が可能であり、どんな変換もその事実は変えられません。このツールは何気ないコピー&ペーストを難しくするために使い、秘密情報の保護には使わないでください。難読化の有無にかかわらず、APIキーや認証情報などの本物の秘密をクライアント側のJavaScriptに置かないでください。
3つのレベル
基本は、ツールが局所的な束縛であると証明できる識別子すべての名前を変更します——関数のパラメータ、および関数内のvar/let/const宣言です——これは推測ではなく、実際の字句スコープ解析によるものです。グローバルまたは外部参照に解決されるものは意図的にそのまま残されます。名前を変更すればコードが壊れるためです。コードの再生成時に空白とコメントも取り除かれます。
中間は基本のすべてに加え、式として使われるすべての文字列リテラルをファイル先頭の1つの配列にまとめ、各出現箇所を_fn(3)のようなインデックス検索呼び出しに置き換えます。
強力は中間のすべてに加え、その配列内の各文字列を通常の文字ではなく\x/\uエスケープで記述し、3文以上連続する直線的なコードをwhile(1) { switch(_i) { ... } }形式のディスパッチループに書き換えるため、上から下へと読める構造ではなくなります。
正確性を最優先
各レベルは、貼り付けたコードとまったく同じように動作するコードを生成するよう設計されています。安全性を証明できない構文——分割代入パターン、eval、with——については、プログラムを壊すリスクを冒すよりも名前変更をスキップします。コードにevalやwithが含まれる場合、その理由により名前変更が完全にスキップされたことを通知で知らせます。
サイズの数値の読み方
統計欄には、入力と出力の正確なバイト数とその変化率が表示されます。名前変更や文字列抽出は、コードが読みにくくなる一方で、通常サイズを少し増加させます。難読化と圧縮は目的が異なるためです。
典型的な用途
- デモやコード片を共有する前に、小さなスクリプトをざっと読みにくくする。
- 入力と出力を比較しながら、難読化ツールの仕組みを学ぶ。
- ロジック自体は機密ではないスクリプトに軽い抑止力を加える。
JavaScriptを貼り付け、レベルを選び、結果をコピーまたはダウンロードしてください。
Tiny Online Tools







