この長々とした応答を書いた後、私はなぜあなたがそもそもjavascriptコードを難読化する必要があるのか疑問に思い始めました。Javascriptコードは本質的に公開されており、ページを見ている人は誰でも結果を見ることができます。実行する必要のある秘密/独自の処理がある場合は、AJAXのようなものを調べるか、サーバーにコールバックして処理を実行し、JavaScriptの結果を吐き出させます。javascriptで行う処理はすべて、誰でも見ることができます。難読化するとデバッグが難しくなり、誰かがコードを解読するのを防ぐことが保証されません。
一般に、JavaScriptを使用してプレゼンテーションを制御し、サーバー呼び出しからの結果をドキュメントに解析し、ユーザー入力を検証します。あなたがしたい秘密は何でも、彼らが起こっている正確なコードを見ることができないサーバー側でしてください。
そして、それが私の胸から離れているので、あなたがまだ名前の変更ルートに行きたいのであれば、ここに私の応答があります:
私はまだYUIコンプレッサーが何であるかをGoogleに説明していませんが、あなたが説明していることは、JavaScriptを解析し、そこから関数と変数の名前を変更する必要があるように聞こえます。いくつかの問題があります
document
javascriptがまたはのような組み込み変数名を使用する場合/および同様に。window
のような組み込み関数.getElementById()
。触れられないものや、スクリプトが意図したとおりに実行できないもの。
Javascriptはブラウザのコンテキストで実行され、HTMLのような他のjavascriptファイルの関数/変数を使用する場合があります。
<script type="text/javascript" src="a.js"></script>
<script type="text/javascript" src="b.js"></script>
の後にb.js
含まれている
ので、任意の関数または変数を参照して使用できます。したがって、名前をスクランブルする場合は、で行われた参照が新しい名前に適切に更新されていることを確認する必要があります。a.js
b.js
a.js
b.js
この名前変更を実行する頻度に応じて、コードを簡単に解読することと、ブラウザーのキャッシュを完全に破棄することとのトレードオフがあります。
- 名前を一度だけ変更して結果を保持します。そうすれば、ブラウザは応答を正しくキャッシュし、サイトはかなりうまく機能するはずですが、名前は呼び出し間で一貫しているため、誰かが名前の変更を簡単に解読できます。このソリューションでは、必ずしもPHPは必要ありませんが、任意の言語またはスクリプトを使用して1回実行するだけです。
- セッションごとに名前を変更します-おそらく最善の解決策であり、途中で名前の変更に関して各セッションに追加のメモリを保持する必要があるため、同じセッションからの新しいJavaScriptファイルのリクエストは必要に応じて名前が変更されます(最新のブラウザとサーバー設定のほとんどでは、ポイント2で説明したように、同じ名前のjavascriptファイルをキャッシュできます。そのため、の関数/変数
a.js
が別のjavascriptファイルで使用されている場合は、それに応じて更新する必要があります。
- リクエストごとにJavaScriptファイルを変更する-ユーザーが同じページをリロードした場合でも、ページに対するすべてのリクエストで新しいJavaScriptファイルをダウンロードする必要があるため、JavaScriptファイルのキャッシュを無効にする必要がある場合があります。これにより、ページの読み込みパフォーマンスが大幅に低下し(すべての関数の名前を再度変更して、新しいjavascriptファイルを生成し、ブラウザーでダウンロードして解析する必要があります)、帯域幅の消費量も増加しますが、ページに2つのスクリプトはありません。同様に。
全体として、これはあなたが着手したい1人(または2人または3人)のプロジェクトのようには見えません(あなたがあなたの手に多くの時間を持っているが、その後状況が変わる場合を除いて)、このようなものがあるかもしれませんすでにそこにあるか、あなたがフォークしてあなたのニーズに合わせて修正することができる何か近いものがあります。基本的に、あなたがやりたいことは、その価値よりも多くの仕事になると思います。