« 個性的な面々 | メイン | 海外の無料ホスティングサーバーを使用する »
前ページまででスパムメールと検索エンジンのキャッシュ対策を解説しました。
ロボットやクローラー対策としては以上で十分すぎる程ですが、将来的には数値参照文字やJavaScript内を解析するクローラーが現れるかもしれません。
また、相手が人間であればJavaScriptファイルを開き中のソースを保存する方法をとるかもしれません。
直接人間が保存する場合までは防ぐ手はありませんが、保存されても何が書いてあるのか容易にはわからなくするする手法ならあります。
検索エンジンにキャッシュされないメッセージをつくるで紹介した"nocache.js"の中身を「XORHTML」というツールを使って暗号化して見ましょう。
暗号化といってもパスワードやIDが必要なわけではなくJavaScriptに用意された文字コードの変換関数を用いて記述内容をクローラーや人間の目では判別できなくするわけです。
・先ほどの"nocache.js"の中身は以下の一文でした。
---------------------------------------------------------------------
document.write("このメッセージはキャッシュできません。")
---------------------------------------------------------------------
・".js"ファイルは<script language="JavaScript">~~~~</script>の宣言がいらないため、そのまま記述しましたが、「XORHTML」はページ内記述のJavaScriptを対象としているので、普通のページに記述する為に宣言をつけてやります。
---------------------------------------------------------------------
<script language="JavaScript">
document.write("このメッセージはキャッシュできません。")
</script>
---------------------------------------------------------------------
・このJavaScriptコードを「XORHTML」の上の窓にコピーペーストとし、「F2」をおします。下の窓に暗号化されたコードが生成されています。

| <SCRIPT LANGAGE="JavaScript">s="K 4 D 5 N 7 3W K F I @ 2 F @ BJU= F 1 F T D 5 N 7 3UIz!0z!0!1 C H D 2 J B I 3Y 0 5 N 3 B_U$ TG$ IG$!IG$!gG$#?G$!>G$#BG$ HG$#MG$!GG$!gG$#3G$!EG$ @G$:G$ 9G$,G$#WG$uGU^z!0z!0KX 4 D 5 N 7 3I";k=119;t="";r=0;for(i=0;i<s.length;i++){a=s.charCodeAt(i);if(a==36){++i;r=1;a=s.charCodeAt(i);}if(a==32){++i;a=(s.charCodeAt(i)-48)^k;}else if(a==33){++i;a=(s.charCodeAt(i)+77)^k;}else if(a==35){++i;a=(s.charCodeAt(i)+141)^k;}else a=a^k;if(r==1){r=2;e=a;}else if(r==2){r=0;t=t+String.fromCharCode(a*256+e);}else t=t+String.fromCharCode(a);}document.write(t);</SCRIPT> |
| "nocache.js"------------------ s="K 4 D 5 N 7 3W K F I @ 2 F @ BJU= F 1 F T D 5 N 7 3UIz!0z!0!1 C H D 2 J B I 3Y 0 5 N 3 B_U$ TG$ IG$!IG$!gG$#?G$!>G$#BG$ HG$#MG$!GG$!gG$#3G$!EG$ @G$:G$ 9G$,G$#WG$uGU^z!0z!0KX 4 D 5 N 7 3I";k=119;t="";r=0;for(i=0;i<s.length;i++){a=s.charCodeAt(i);if(a==36){++i;r=1;a=s.charCodeAt(i);}if(a==32){++i;a=(s.charCodeAt(i)-48)^k;}else if(a==33){++i;a=(s.charCodeAt(i)+77)^k;}else if(a==35){++i;a=(s.charCodeAt(i)+141)^k;}else a=a^k;if(r==1){r=2;e=a;}else if(r==2){r=0;t=t+String.fromCharCode(a*256+e);}else t=t+String.fromCharCode(a);}document.write(t); |