[解決済み】HTML5動画をダウンロード(右クリック保存)させないようにするには?)
質問
ブラウザの右クリックメニューの "ビデオを別名で保存..." を無効にして、クライアントがビデオをダウンロードするのを防ぐにはどうすればよいですか?
クライアントがファイルパスに直接アクセスできないようにする、より完全な解決策はありますか?
どのように解決するのですか?
できない . それは、ブラウザがそのように設計されているからです。 コンテンツを提供する . しかし ダウンロードしにくくすることができます。 .
まず最初に、あなたは
かもしれない
を無効化します。
contextmenu
イベント
別名「右クリック」。そうすれば、通常のスキディが右クリックして「名前を付けて保存」することでビデオをあからさまにリッピングすることを防ぐことができます。しかし、その場合、JSを無効にしてこれを回避するか、ブラウザのデバッガでビデオのソースを見つけることができます。それに、これは悪いUXです。コンテキストメニューには、「名前を付けて保存」以外にも、正当なものがたくさんあるのです。
また、カスタムのビデオプレーヤーライブラリを使用することもできます。それらのほとんどは、あなたの好みに合わせてコンテキストメニューをカスタマイズするビデオプレーヤーを実装しています。そのため、ブラウザのデフォルトのコンテキスト メニューが表示されることはありません。また、「名前を付けて保存」のようなメニュー項目があったとしても、それを無効にすることができます。しかし、これもJSのワークアラウンドです。弱点は、前のオプションと同様です。
もう一つの方法は、動画を HTTPライブストリーミング . これは本質的に、ビデオをチャンクに分割し、それを次々と提供することです。ほとんどのストリーミングサイトは、この方法でビデオを配信しています。そのため、何とかして「名前を付けて保存」しても、動画全体ではなく、チャンクを保存するだけです。すべてのチャンクを集めて、専用のソフトウェアを使ってステッチするのは、もう少し手間がかかると思います。
もう一つのテクニックは
ペイント
<video>
オン
<canvas>
. この手法では、少しのJavaScriptで、ページ上に表示されるのは
<canvas>
要素からフレームをレンダリングし、非表示の
<video>
. そして、それは
<canvas>
の場合、コンテキストメニューは
<img>
のメニューではなく
<video>
's. この場合、「名前を付けてビデオを保存」ではなく、「名前を付けて画像を保存」が表示されます。
を使用することもできます。 CSRFトークン を利用することができます。ページ上でサーバーにトークンを送信させるのです。そして、そのトークンを使ってビデオを取得します。サーバーは、ビデオを提供する前にそれが有効なトークンであるかどうかを確認します。 HTTP 401 . アイデアは、あなたが直接ビデオのURLにアクセスするのではなく、ページから来た場合にのみ取得することができますトークンを持っていることによって、これまでにビデオを取得することができるということです。
結局のところ、私ならYouTubeやVimeoといったサードパーティの動画サイトに動画をアップロードしますね。彼らは良いビデオ管理ツールを持っており、デバイスに最適化された再生を行い、あなたの側の努力なしにビデオのリッピングを防止する努力をしています。
関連
-
[解決済み】Angular JS Uncaught Error。[インジェクター:モジュラー]。
-
[解決済み】Jestが予期しないトークンに遭遇した
-
[解決済み] リンクのように動作するHTMLボタンを作成する方法
-
[解決済み] Node.jsを使うタイミングをどう判断するか?
-
[解決済み] AngularJSでデータバインディングはどのように機能するのですか?
-
[解決済み] オブジェクトの配列から、プロパティの値を配列として取り出す。
-
[解決済み] サーバーを介さずに、ユーザーがダウンロードできるファイルをメモリ上に作成するにはどうすればよいですか?
-
[解決済み] Trelloはどのようにユーザーのクリップボードにアクセスするのですか?
-
[解決済み] Node.JSを使用して、JSONファイルを(サーバー)メモリに読み込むにはどうすればよいですか?
-
[解決済み] ウェブページにカスタム右クリックメニューを追加するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 解決済み】clearInterval()が動作しない [重複] [重複]
-
[解決済み】SyntaxError: ChromeのJavascriptコンソールでUnexpected Identifierが発生する。
-
[解決済み】WebpackとBabelで「このファイルタイプを扱うには適切なローダーが必要な場合があります。
-
[解決済み】Reactのeslintエラーはpropsの検証で見つからない
-
[解決済み】 Uncaught Error: Invariant Violation: 解決済み】 Uncaught Error: Invariant Violation: Element type is invalid: expected a string (for built-in components) or a class/function but got: object.
-
[解決済み】Vueのテンプレートまたはレンダー関数が定義されていない 私はどちらも使っていないのですが?
-
[解決済み】PhantomJS 2.1.1を使用してReactJSアプリケーションをレンダリングできない理由とは?
-
[解決済み】TypeError:res.jsonは関数ではありません。
-
[解決済み】HTMLの最初の行に予期しないトークン<がある。
-
[解決済み】Chrome 55で、HTML 5動画のダウンロードボタンが表示されない【重複】。