質問: HTML5のvideoタグで動画を閲覧できるようにした上で、閲覧したユーザーがローカルへ動画をダウンロードすることを難しくしたいと考えています。HLSやRTMPといったストリーミングプロトコルを使わずに、sourceタグにmp4動画のURLを指定する形を想定しています。 ある程度の知識と動機のあるユーザーでなければダウンロードしないよね、ぐらいのレベルでOKです。ちなみに、サーバーはrailsで構築されていますが、コードはどんな言語でもかまいません。 私の方では、以下のような方法を考え付きました。 * JavaScriptで動的にsourceタグを設定し、JavaScriptが無効化された状態での動画閲覧を制限する。その上で、JavaScriptでコンテクストメニューを無効化する。(コンテクストメニューにダウンロードオプションが表示されるためです。) 念のため、コンテクストメニューの無効化というのは、jQueryの以下のコードで実現されるものです。 ``` $('video').contextmenu(function() { return false; }); ``` * リファラを動画閲覧ページのURLのみに制限する。 * URLにトークンを付与し、有効期限を設定する。(一度限りのトークンを設定しようと考えたのですが、chromeなどのブラウザはリクエストにRangeヘッダーを付けて複数回リクエストを送るようになっており、断念しました。) * 上記sourceタグ内の動画URLにどのような文字列が入るのかわかりづらくするため、ソースコードを難読化する。(chromeのデベロッパーツールなどを見れば動画のURLが出てくるので、あまり意味がないかもと思っています。) 他にダウンロードのハードルを上げるような方法はありますでしょうか。皆様のお知恵をお貸しください。
回答: `URLにトークンを付与し、有効期限を設定する` が一般的だとは思います。 video要素を利用してMP4を再生可能とする以上、根本的にダウンロードを不可能にすることはできませんが、パッと思いつくものとして * トークン発行のseedにUser-Agentを含め、検証時に同一User-Agentのみ許可する + curl/wget などによるダウンロードを制限できます などが挙げられます。が、いずれも悪足掻きレベルと言えます。