● HTMLファイルの一括変換について・よくある質問


1.Advancedコースでは、「特定フォルダー内のHTMLファイルを一括変換し、別のフォルダーに出力するサンプルプログラム 」が付属するとありますが、これは自分でもプログラムできます。その場合、Standardコースを購入して、自分で同じようなプログラムを作って、静的なHTMLファイルの一括変換処理をこのサーバサイドSHTMLを使って行った場合、ライセンス違反になりませすか?
いいえ、ライセンス違反になりません。自分でプログラムしていただいていいです。ただし、Standardコースのご購入者の方には、そのような一括変換プログラムに関するサポートは一切できませんので、その点はご容赦ください。

2.難読化の処理にかかる時間の目安を教えてください。
もちろん、これはお客様サーバのスペックやアクセス数その他の条件に左右されることは言うまでもないと思いますが、参考値として、概ね、10KB(日本語約5,000字)のデータの難読化に約0.15秒〜0.2秒前後かかるとお考えください。


3. 文字化けします。
引数として渡している文字列の文字コードは想定しているものでしょうか?  ディレクトリー内のHTMLファイルの文字コードが単一でない場合には、特にご注意ください。HTMLファイルがShift_JISで記述されているのであれば、難読化関数であるgetEncryption_shtml関数の第4引数に「sjis」をセットしていただかなければなりません。もし、Standardコースをご利用の場合で、文字コードの追加オプションを申し込まれていない場合には、第4引数を指定できませんので、文字コードの追加オプションをお申し込みしていただく必要があります。

お客様の方で簡単な文字コード変換をするようにすれば、わざわざ文字コードの追加オプションをご購入していただく必要がないように見えるかもしれません。例えば、Standardコースの「サーバサイドSHTML for Perl/CGI」EUC-JP版をご利用で、Shift_JISのHTMLファイルを一括変換されたい場合は、一旦HTMLファイルの中身をEUC-JPに自力で文字コード変換し、そのEUC-JPの文字列を難読化させれば良いように見えるかもしれません。

ただ、それは、機種依存文字(「①Ⅱ㈱㍍」などのNEC特殊文字や、「髙德彅﨑」などのIBM拡張文字)が含まれていないことが分かっている場合に限られるかもしれません。Jcode.pmやjcode.plで機種依存文字の文字コード変換はなかなか難しいはずです。

自力で文字コード変換をされる場合、機種依存文字の問題でうまくできない場合もあるかもしれません。弊社ライブラリで難読化処理をする前に、Shift_JIS→EUC-JPの文字コード変換の時点で文字化けしていることはないかご確認ください。

うまく変換できたとして、そのEUC-JPの文字列をgetEncryption_shtml関数に引数として渡していただき、難読化処理をしていただいた後、最後にもう一つ処理が必要かもしれません。難読化処理した結果に日本語が含まれる場合※3-1があり、その場合は、再度、EUC-JP→Shift_JISに変換する必要があるためです)。

※3-1 「サーバサイドSHTML for Perl/CGI」で難読化したソースのほとんどは意味不明なASCII文字に変換されますが、ページタイトル及びメタタグは難読化しません。これらの中に日本語が含まれている場合には、その部分はEUC-JP特有の符号になりますから、この場合は、EUC-JP→Shift_JISに再変換していただかないと問題が発生します。また、getEncryption_shtml関数の第3引数にXMLファイルを指定していて、「Javascriptをoffにしているサイト訪問者向けのメッセージ」に日本語を使っている場合も、難読化後の文字列に日本語が含まれます。

結論といたしまして、Shift_JIS機種依存文字を含むファイルを処理する必要がある場合は、Shift_JIS版の「サーバサイドSHTML for Perl/CGI」Standardコースを最初から申し込んでいただくか、EUC-JP版の「サーバサイドSHTML for Perl/CGI」Standardコースに文字コード追加(1つ1万円)をしていただいた方が良いかと思います。もしくは、Shift_JIS(CP932)、EUC-JP(CP51932+補助漢字)、UTF-8の文字コードすべてが利用可能なAdvancedコースをお申し込みください。


4. 一括変換用のPerl/CGIプログラムは、登録済みのサーバで動かして一括変換を行いましたので、その一括変換して作成したHTMLファイルは、好きなサーバにアップロードしても問題ありませんか?
いいえ、「サーバサイドSHTML for Perl/CGI」をHTMLファイルの一括変換を目的に利用される場合でも、その一括変換で生成されたHTMLファイルは、あくまでもご登録済みのサーバにのみアップロードしていただくことを許可させていただいています。規約に書かせていただいていますので、ご確認ください。

ご登録済み以外のサーバへのアップロードをご希望のお客様は、別途費用が必要です。サポートにご相談ください。

5. 「サーバサイドSHTML」を使えば、難読化対象のオリジナルのHTMLファイル(静的なもの)を頻繁に更新する場合にも、役に立つと聞きました。具体的に説明してください。
はい、非常にメリットがあります。静的なHTMLファイルの難読化に特化した弊社姉妹商品「SHTML」では、オリジナルのHTMLファイルの更新を行っても、自動では難読化後のHTMLファイルは更新されません。しかし、「サーバサイドSHTML for Perl/CGI」では、オリジナルのPerl/CGIファイルを更新したり、そのPerl/CGIプログラムが読み込んでいるテンプレートHTMLソースを更新すれば、難読化後のHTMLソースも自動で更新されます。

さらに、サーバサイドSHTMLでは、動的なHTMLソースのみならず、静的なHTMLファイルのリアルタイム更新(もしくは、短時間内の更新反映)という御用途にもご利用いただけます。具体的な方法は下記の通りです。

静的なHTMLファイルのリアルタイム更新用のPerl/CGIプログラムのファイル名をここでは、convert_html.cgiとします。このconvert_html.phpでは、特定のディレクトリー(フォルダー)内(「ディレクトリーA=『product2』」と呼びます。作業用ディレクトリー)にアップされているHTMLファイルを、サーバサイドSHTMLのライブラリを使って、特定のフォルダー(一般公開用のディレクトリー。「ディレクトリーB=『product』」と呼びます。)に一括で出力するプログラムにしておきます。(「サーバサイドSHTML for Perl/CGI」Advancedコースに付属の「特定フォルダー内のHTMLファイルの一括更新プログラムのサンプル」を参考にしていただくといいと思います。)

後は、編集・更新したオリジナルのHTMLファイルをディレクトリーA(上記挿絵でいうところの「product2」という名称のディレクトリー)にまとめてアップし、convert_html.cgiを何らかの手段で実行すれば、一般公開用のHTMLファイルが更新されます。convert_html.cgiを実行させる方法(上記挿絵の「2.難読化の方法」に該当。)は、手動が面倒であればcronでもできるでしょうが、頻繁に更新されない場合には、cronの実行頻度に気をつけられないと、サーバに思わぬ負荷をかける場合がありますのでご注意ください。

なお、ブラウザ経由でURLを入力してconvert_html.cgiを実行する場合(= http://お客様サーバ名/〜/convert_html.cgiへのアクセス。上記挿絵でいうところの「『2.難読化の方法』の『b』」)、ディレクトリーB(上記挿絵で言うところの「product」という名称のディレクトリー)やその中のHTMLファイルのパーミッションに注意しなければなりません。websuerに対して書き込み権限を与えなければ動作しませんが、セキュリティ上、好ましくない場合もありますから、一括更新する時のみ、一時的にパーミッションを変更し、すぐに元に戻すなどした方が良いでしょう。

この方式のメリットは、WEBデザイナーの方でプログラムの知識がまったくない方でも、普段どおりにFTPソフトでHTMLファイルを特定のディレクトリーにアップするだけで、cronを使えば完全自動で(convert_html.cgiへ手動でアクセスする場合でも、きわめて簡単な方法で)、難読化が可能だということです。convert_html.cgiのプログラムをプログラマーが一つ準備するだけで、ホームページのデザイナーが負担する作業は、アップするディレクトリーが今まで(=公開用ディレクトリー)と違う(ex. 今まで、「product」というディレクトリーにアップしていたものを「product_for_shtml」とか「prodcut2」にアップする)だけで、その他の特別な作業が一切不要になることです。

なお、この方法を使用する場合、作業用のディレクトリー(=オリジナルのHTMLファイルをアップロードするディレクトリー。上の例で言えば、「prodct_for_shtml」や「product2」のディレクトリー)にあるファイルに、一般の方がブラウザ経由でアクセスできると問題がありますので、.htaccessで、ブラウザ経由ではアクセスできないようにしていただくか、そもそもproduct2というディレクトリーをDocumentRootの下に置くのではなく、ブラウザ経由ではアクセスできないDocumentRootより上に置くようにしてください。ご不明の点は、サポートにお問い合わせください。



HTMLソース難読化用Perlライブラリ
「サーバサイドSHTML for Perl/CGI」
© 株式会社プランセスお問い合わせ