Webサイトでコピペを禁止するプログラムコード

私自身はあまりおすすめしない「コピペ禁止サイト」ですが、よく方法を聞かれます。

一定の需要はあるんだなと感じますので、プログラムコードを紹介します。

「右クリック」も「コピー(Ctrl + c)」も「F12(デベロッパーツール)」も防ぐ強固な手法です。

100%防ぐことはできませんが、90%くらいは対策できると思います。

右クリックを禁止するコード

コンテキストメニューといいますが、メニューの中に「コピー」や「ページのソースを表示」などがありますが、この項目を選択できないようにします。

bodyタグにオプションoncontextmenuを設定します。

<body oncontextmenu="return false">

JavaScriptのコードは下記です。

document.oncontextmenu = () => {
  alert('右クリック禁止');  // 右クリック時にアラートを出す
  return false;
}

右クリック時にアラートを出すことができます。

文字を選択させない

コピーをするときにコピー範囲を選択すると思います。

範囲選択を禁止する方法です。

bodyタグにonmousedownを設定します。

<body onmousedown="return false">

CSSで対策するなら下記になります。

body {
  user-select: none;
}

これでコピー範囲を選択することができなくなるので、コピー対策になります。

コピーの禁止

コンテキストメニューからコピーを選んだり、「Ctrl + C」でのコピーを禁止する対策です。

bodyタグにoncopyを設定します。

<body oncopy="return false">

JavaScriptのコードは下記です。

document.oncopy = () => {
  alert('コピーはダメです');  // 「Ctrl + c」コピー時にアラートを出す
  return false;
}

F12を禁止する

ChromeやEdgeなどのブラウザを使用時に「F12」を押すと開発者ツール(デベロッパーツール)が開きます。

HTMLが表示されるのでそこからコピーする強者も存在します。

JavaScriptで「F12」も対策します。

document.addEventListener('keydown', e => {
  if (e.keyCode == 123) e.preventDefault(); // 123:F12キーのコード、e.keyでF12を指定もあり
});

押したキーを判定してF12なら無効にするJavaScriptです。

同様のやり方で「Ctrl + U」の「ソースを表示する」も対策できます。(Ctrlキーを無効にする)

回避策

JavaScriptを無効にされるとコピーできてしまいます。

CSSの「user-select: none;」は効果あるので範囲選択ができないのでコピーは面倒ですが。

CSSも無効にされると打つ手なしです。

ただ、JavaScript無効もCSS無効も面倒くさいので、そこまでしてコピーしたいのかは微妙ですが。。

まとめ

当サイトではコピペを禁止にはしません。

ただし転載を許可しているわけではありません、禁止です。(ここ重要)

プログラムコードを1文字ずつ手打ちするのも大変なのでコピーブロックはしないです。

優しさです、私はバファリンの次にやさしいのです。

誰もがコピーして参考にしたくなる、そんな技術サイトになればいいなと思います。

関連記事
最新記事