画像の無断転載防止

 ネット人口が増え続ける今、ネットマナーを持ち合わせていない初心者による、イラストサイトの画像などの無断転載の被害も増えています。

 このスクリプトは、右クリックドラッグ&ドロップでの画像ファイル保存と、HTMLのソースから安易に画像ファイルのURLが知られることを防ぐためのものです。

 実際にこのスクリプトを利用したサンプルページを用意しました。

 まず、保存されたくない画像のあるHTML文書を次のテキストエリアに貼り付け、変換をクリックしてください。すると、すべてのIMG要素がSCRIPT要素に変換され、ぱっと見ただけでは何が書いてあるのか分からなくなります。

 一部の画像だけ、転載防止の機能を付けたい場合は、そのIMG要素だけを貼り付けて変換をクリックし、出てきたSCRIPT要素をHTMLのソースの画像を表示したい部分に貼り付けてください。

出力

 次に、変換した後のHTMLの<head>〜</head>に、次のSCRIPT要素を貼り付けてください。もちろん、JSファイルにしても構いません。

<script type="text/javascript">
<!--
function printImage(str){
    var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789*+-./@_$%";
    var len = chars.length;
    var xorchr = str.charAt(0);
    var xorcode = xorchr.charCodeAt(0);
    str = str.substring(1, str.length);
    var _ = eval("*!-;#+ :`9<':+".replace(/./g, function (chr){
        return String.fromCharCode(chr.charCodeAt(0) ^ "N".charCodeAt(0));
    }));
    str = str.replace(/./g, function (chr, n){
        var code = chars.charCodeAt(n % len);
        chr = chars.charAt((chars.indexOf(chr) - (code ^ xorcode) + len * 4) % len);
        return chr;
    });
    str = str.replace(/$[\da-f]{4}/gi, function (enc){
        return String.fromCharCode(parseInt("0x" + enc.substr(1, 4)));
    }).replace(/%[\da-f]{2}/gi, function (enc){
        return String.fromCharCode(parseInt("0x" + enc.substr(1, 2)));
    });
    str = _("<img " + str + " oncontextmenu=\"return false\" ondragstart=\"return false\" onselectstart=\"return false\">") ? str : "";
    return str;
}
//-->
</script>

 このツールのJSファイルはjswh20.jsです。。

利点や欠点

 これはJavaScriptを利用して画像を表示させるものです。したがって、JavaScriptの利用できないブラウザでは画像を表示することができなくなります。

 ただしよくある右クリック禁止とは違い、JavaScriptを無効にしても保存できないという点ではメリットでもあります。

 また、ソース全体をJavaScriptで分からなくするものとは違い、文章の部分は変換されないので、ロボット検索の結果への影響はあまり大きくないと思います。

 このスクリプトは初心者による安易な画像の保存、転載を防ぐためのものであって、完全な防止を保証するものではありません。ある程度の知識がある人なら簡単に保存されてしまうでしょう(無断転載するのは大抵が初心者だとは思いますが)。

 このスクリプトの効果があるのは基本的にInternet Explorerだけだと考えてください。

動作確認ブラウザ [説明]
Internet Explorer 6.0 Firefox 1.0 Netscape 7.1 Opera 7.5