JavaScript eval 圧縮コードの展開と再圧縮
エンコード処理はすべてブラウザ内で完結します。データは送信されません
Dean Edwards の packer —— いわゆる `eval(function(p,a,c,k,e,d){…})` を扱います。ソース内で繰り返し現れる語(`function`、`document`、`length` など)を短い名前に置き換え、圧縮後の本文を1つの文字列として持ち、対応表を末尾に付けます。⚠️ 暗号化ではありません:鍵はなく、表はそのコードの中にあり、展開に追加情報は一切不要です。この形式は広く流通しており、多くのサイトが「軽い難読化」として使っていますが、実は最も容易に復元できるものの一つです。
機能
- 展開:`eval(function(p,a,c,k,e,d){…})` を読めるソースに戻します
- 圧縮:同じ形式を逆に生成。基数は 2〜62 で変更できます
- ⚠️ すべて文字列処理で、JavaScript は一切実行しません
- 本文に含まれる引用符・エスケープ・改行も正しく解析します
- 大きいインデックスから置換するため、単語表が10個を超えても衝突しません
- この形式でない場合は、期待される形を示します(単なる解析エラーではありません)
使い方
- `eval(function(p,a,c,k,e,d){…})` 全体を(先頭の `eval(` を含めて)入力欄に貼り付けます
- Ctrl/⌘ + Enter か「実行」を押します
- 結果が復元されたソースコードです
- 逆に圧縮する場合は方向を切り替えます
よくある質問
- スクリプトは実行されますか?
- 実行されません。 ここでの展開は純粋な文字列処理です:パラメータを解析し、短い名前を元の語に置換するだけで、`eval` はどこにもありません。世の中の多くのツールは手軽さからそのコードを評価しますが、それは他人のスクリプトをあなたのブラウザ内で実行することに等しく、圧縮されたコードこそ盲目的に走らせるべきではないものです。本実装は出所不明のコードにも安全に使えます。
- 出力されたコードはそのまま実行できますか?
- 通常は可能です。出てくるのは語を置換し直しただけの元のソースで、構造は変わっていないため、コンソールや HTML に貼れば動きます。ただし2点注意してください:元がすでに圧縮(minify)されていた場合、展開しても読みやすくはなりません —— それにはフォーマッタが必要です。また、復元されたコードはあなたが精査していない第三者のコードのままです。読めるようにすることと安全であることは別です。
- 圧縮結果は原版と完全に同じになりますか?
- 1バイト単位では一致しません。 原版の packer はソースを走査して語の頻度を数え、独自の規則で短い名前を割り当てます。本ツールの実装は簡略版(識別子を抽出し、出現回数で並べ、使える最短のインデックスを割り当てる)です。形式は互換で、ブラウザはそのまま実行でき、本ツールも展開できますが、割り当て結果は異なる場合があります。原版の出力が必要なら原版スクリプトを使ってください。
関連ツール
JS 難読化
整形コメントと空白を削り、文字列と数値をエスケープ表記にし、ローカル変数を短い名前に —— 小さく、ざっと見て読みにくく。すべて端末内で処理します。
JS 圧縮と整形
整形JavaScript をオンラインで圧縮・整形。圧縮はコメントと空白を削除(/*! のライセンス表記は保持)、整形は波括弧とセミコロンで組み直します。
コード着色
Webコードに色を付け、選択コピーで色ごとスライドや Word に貼れます。インラインスタイルの HTML を出力してブログに貼ることも可能。26 言語に対応。
Base64 変換
エンコードテキストを Base64 に変換し、Base64 からテキストへ戻します。日本語や中国語、emoji も UTF-8 として正しく処理。すべてブラウザ内で完結し、内容は送信しません。
URL エンコード
エンコード日本語や中国語、空白・記号を %XX にエスケープし、復元します。URL 全体とパラメータ値では方式が異なり、間違えるとリンクが開けません。ブラウザ内で処理します。
HTML 実体参照
エンコード< > & と引用符を HTML 実体参照に変換し、文字へ戻します。デコードは1回だけで、&lt; は山括弧ではなく < になります。すべてブラウザ内で処理します。