web-dev-qa-db-ja.com

ウェブサイトから画像や動画ファイルをダウンロードしないようにするにはどうすればよいですか?

ウェブサイトから画像や動画ファイルをダウンロードしないようにするにはどうすればよいですか?出来ますか?これを行う最良の方法は何でしょうか?

33
Haim Evgi

いいえ、できません。

あなたがそれを見ることができれば、あなたはそれを得ることができます。

79
Josh Leitzel

あなたのサイトに投稿しないでください。

それ以外の場合は不可能です。

15
Chris Ballance

クライアントで表示するには、画像をダウンロードする必要があります。多くのシナリオでは、ビデオも同様のケースです。プロキシスクリプトをセットアップしてファイルを提供することはできますが、それでもユーザーが自分のコピーを取得できないという問題は解決しません。このトピックの詳細については、質問 フラッシュビデオのダウンロードを防止/困難にする方法 を参照してください。

10
Sampson

もっと哲学的なコメントを追加したいと思います。インターネット、特にWorld Wide Webの全体的な目的は、データを共有することです。他の人に画像/動画/ドキュメントをダウンロードさせたくない場合は、ウェブに掲載しないでください。本当に簡単です。既存の設計に独自のルールを課すことができると考える人が多すぎます。 Webにコンテンツを投稿し、その配信を制御したい人は、ケーキを食べて食べたいと考えています。

7
A. L. Flanagan

要するに、いいえ。誰かがブラウザで画像またはビデオを表示できる場合、定義上、それをダウンロードしています。これがWebの仕組みです-クライアントサーバーベースです。ブラウザ(クライアント)で表示できるものはすべて、リモートWebサイト(サーバー)からコンピューターに転送されています。

7
Dan Diplo

標準のHTMLでは、とにかく知りません。

あなたは本当に言っていませんでしたが、私はあなたが人々に問題を抱えていると推測していますあなたのコンテンツへの深いリンク。それが事実であり、サーバー側のコードにオープンである場合、私はこれがうまくいくと信じています:

  1. 数値IDを受け入れ、サーバーファイルパスにマップし、そのファイルを開き、バイナリを応答ストリームに直接書き込むページを作成します。
  2. ページリクエストで、一連のランダムIDを生成し、それらを実際のメディアURLにマッピングし、そのマッピングオブジェクトサーバー側を限られた寿命で(セッション中に)保存します。
  3. 適切なIDをクエリ文字列引数として持つ新しいメディアページを指すメディアリンクを使用して、ページをレンダリングします。
  4. マッピングオブジェクトをクリアし、すべてのポストバックですべての新しいリンクを生成します。

この :

  1. ユーザーがページ内からダウンロードするのを止めません
  2. 間違いなく標準のHTMLほど軽量ではありません
  3. 独自の問題があります。

しかし、それはユーザーがディープリンクするのを防ぐのに役立つかもしれない実行可能なプロセスの一般的な概要です。

6
John MacIntyre

多くの人が言っているように、誰かがコンテンツをダウンロードするのを止めることはできません。できません。

しかし、あなたはそれを難し​​くすることができます。

透明なdivで画像をオーバーレイできます。これにより、人々がそれらを右クリックできなくなります(または、divの背景を画像に設定しても同じ効果が得られます)。

クロスリンクが心配な場合(つまり、他の人が画像にリンクしている場合)、HTTPリファラーを確認し、自分のものではないドメインからのリクエストを「他の何か」にリダイレクトできます。

5
David Wolever

PHPを使用している場合、最良の方法は.htaccess、検討中のファイル、画像、動画を個別のフォルダ/ディレクトリに配置し、新しい.htaccess以下のファイルをこのディレクトリに保存:

RewriteEngine On
RewriteCond %{REQUEST_URI} \.(mp4|mp3|avi)$ [NC]
RewriteCond %{HTTP_REFERER} !^http://sample.com/.*$ [NC]
RewriteRule ^.* - [F,L]

最初の行%{REQUEST_URI}は、Webブラウザまたはcurlを介したファイルの取得を防ぎます。 2行目%{HTTP_REFERER}は、HTMLタグを使用したimahe/videoへのアクセスを防ぎます<img>または<video>例外を除くすべてのWebサイトから!代わりにhttp://sample.com/これは通常、Webサイト自体でなければなりません。

また、私の質問と受け入れられた答えを見ることができます here ブラウザー側のより多くのトリックのために。

4
Hasan A Yousef

ブラウザはコンテンツ(テキスト、画像、ビデオ)を表示するためにコンテンツを転送する必要があるため、Webサイトが表示されるとき、データは既にクライアントのコンピューター上にあります。これまでの回答では、経験のないユーザーがコンテンツを取得するのを困難にする方法についてはほとんどアドバイスを提供していません。ここにいくつかの指示があります:

  • 全般
    • 透明な_<DIV>_または透明な画像でこの特定のコンテンツをオーバーレイします(この質問に対するいくつかの回答で説明されています)
    • Webサイトをフレームセットで開くと、保存するとフレームの内容が失われる場合があります。
    • メニューバーを非表示にするには、window.open()経由でWebサイトを開きます。
    • JavaScriptを介した右クリックを無効にします(使いやすさに関するすべての副作用のため推奨されません)
    • JavaScriptを介して別のファイル(特定のリファラーをチェックするか、ROT13である可能性がある)からページのHTMLコードをロードするため、ソースコードにアクセスするのが難しくなります。
    • すべてのコンテンツがプリンターの_display:none_であることをブラウザーに伝えます(_@media print { body, div, p { display: none } }_のようなもの)
    • クライアントがスクリーンショットを作成する前にJavaScriptを使用してコンテンツを非表示にします( ユーザーが「Print Scrn」を使用しないようにする を参照)
    • クリップボードを無効にするか上書きしてみてください( この投稿 を参照)
  • 画像
    • 画像に_<img>_タグを使用しないで、画像を_<DIV>_の背景として設定します
    • 画像をSVGまたはFlashムービーにラップして、使用可能な形式でのアクセスを非常に困難にします。
    • 画像のキャッシュを無効にする(_<meta>_タグを使用するか、サーバー配信で適切なヘッダーを設定する)ため、ブラウザキャッシュに保存されません(クライアントのコンピューターで即座にアクセス可能)。
    • 画像を複数の部分に分割し、画像全体を再構築するために追加の作業が必要になる
    • onmousedownイベントを画像に追加します。たとえば、著作権警告を表示します。
    • サーバースクリプト(PHPなど)を介して画像を配信し、リファラーを確認します。
  • ビデオ
    • ビデオをストリーミングして、URLを介した単純なダウンロードを防ぎます。
    • ビデオをFlashムービーにラップします。
    • DRMをサポートする厄介な形式を使用します。
  • テキスト
    • テキストを選択不可にする( HTMLテキストを選択不可にする方法 を参照)
    • オーバーレイに加えて、テキストをJavaScriptにラップする(たとえば、ROT13の後、または2番目のファイルから動的にロードされる)ため、テキストはソースコードで直接利用できません。
    • テキストを画像(これにより表示品質が低下する可能性があります)、SVGまたはFlashに変換します

繰り返しますが、経験のあるユーザーがコンテンツを取得するのを止めることはありません(たとえば、スクリーンショップを作成し、オプションでOCRを実行します)。ブラウザの開発者ツールを使用するか、JavaScriptを使用せずにWebサイトを使用するのと同じくらい簡単な場合もあります。しかし、それは経験の浅いユーザーに苦労を与えるので、彼らはそこからつかみやすいいくつかのソースを探すかもし​​れません。

また、上記の手法は、ページのコンテンツを読み取るときに検索エンジンに影響することに注意してください(ブロックすることに興味がある場合は、_robots.txt_で始めてください)。

上記のリストを補完する他のアイデアをありがとう!

4
BurninLeo

また、PhotoshopまたはLightroom 3で画像に透かしを追加しても問題ありません。透かしが明確で、画像の目立つ場所にあることを確認してください。そうすれば、それがダウンロードされていれば、少なくとも広告は手に入ります!

3
Jordan

これは、将来の誰かが疑問に思っている場合に私がそれを行う方法です。

これをルートサーバーの.htaccessファイルに配置します。

RewriteEngine on 
RewriteCond %{HTTP_REFERER} !^http://(www\.)?domain.com/ [NC] 
RewriteCond %{HTTP_REFERER} !^http://(www\.)?domain.com.*$ [NC]
RewriteRule \.(mp4|avi)$ - [F]

これにより、たとえばdomain.com/videos/myVid.mp4にアクセスして、そこから保存することができなくなります。

2
agon024

可能性を減らすことはできますが、排除することはできません...

2
Badfish

画像またはビデオをフラッシュ形式で保存します。よく働く。

1
Ferrari

フォルダーまたはファイルに読み取りアクセス権がないようにマークすることができます(メインWebサーバーのいずれかがこれをサポートしています)。これにより、外部へのアクセスレベルなしでサーバーに保存できます。他の人が後でダウンロードするための画像を生成するサービスがある場合、またはFTPアクセスにWebアカウントを使用しているが、ファイルを誰にも見られたくない場合は、これを行うことができます。 (つまり、.bakファイルをサーバーにアップロードして、他の誰かが再びFTPダウンできるようにします)。

しかし、他の人が言ったように、違法な使用を阻止するツールはありますが、人々が画像やビデオを見ることができるが、それらをローカルに保存できない著作権領域に入ることは完全に不可能です。

1

いいえ、ちがいます。あなたは右クリックなどをブロックするかもしれませんが、誰かがそれをダウンロードしたい場合、彼はそうします、私を信頼してください;)

1
fphilipe

写真やビデオを含むページを表示するとすぐに、アイテムはブラウザの一時フォルダーにダウンロードされます。したがって、ダウンロードしたくない場合は投稿しないでください。

1
Jeff Siver

これは古い投稿ですが、ビデオの場合は、MPEG-DASHを使用してファイルを難読化することを検討してください。さらに、別個のストリーミングサーバーを必要とせずに、ユーザーに優れたストリーミングエクスペリエンスを提供します。この投稿の詳細: Webページでビデオ/オーディオのダウンロードを無効にする方法

1
TimHayes

画像を背景画像に設定し、透明な前景画像を作成できます。

0
user3387591

画像/ビデオの盗難を止めることはできませんが、通常のユーザーにとっては難しくすることはできますが、私たちのようなプログラマーにとっては難しくすることはできません(Webプログラミングをほとんど知らない泥棒を意味します)。

あなたが試すことができるいくつかのトリックがあります:

1.)YouTubeや http://www.funnenjoy.com のような他の多くのサイトとしてFlashを使用します。

2.)Divのオーバーラップまたは背景写真の設定(ただし、感覚がほとんどないユーザーは、検査要素またはその他の開発者オプションを開くことで、すべてのリソースを簡単に節約できます)。

3.)右クリックとCTRL + Sなどの特定のキーやJavaScriptで可能なその他のキーを無効にできますが、主な欠点は、ユーザーがJavaScriptを無効にするとすべてのトリックが失敗することです。

4.)オンラインディレクトリなしに画像を保存し(Webサーバーへのフルアクセスがある場合)、PHPのようにサーバー側言語でそのファイルを読み取り、画像/ビデオが必要なときに毎回画像IDを変更しますアクセスするたびにIDを自動的に変更できるスクリプトを作成することもあります。

5.)Apacheで.htaccessを使用して、他のサイトによる画像のリンクを防ぎます。このサイトを使用して、.htacessを自動的に生成できます http://www.htaccesstools.com/hotlink-protection/

0
Ravinder Payal

透明なgif 1px x 1pxを<body>タグのすぐ内側に挿入します。

<body><img src="route-to-images/blim.gif" class="blimover">

次に、これでスタイルを設定します。

.blimover {
  width: 100% !important;
  height: 100% !important;
  z-index: 1000 !important;
  position: absolute !important;
  top: 0 !important;
  left: 0 !important;
}

これにより、ページからクリック機能が削除されますが、ユーザーがコンテンツを盗むのを確実に防ぐことができます!

同じ名前を<div><section><article>などに適用し、それに応じて名前を付けるだけで、コピーや画像のリッピングを防ぐことができます。

しかし、何もスクリーングラブを止めることはできません... ...

0
redplanet

それは、通常のユーザーがコンテンツをダウンロードしようとする最も便利な方法であるため、ウェブページを右クリックしないようにすることが最善の方法だと思います。コンテンツがインターネット上にあると、すでにパブリックドメインにあることを意味するため、コンピューターオタクやハッカーの人々がダウンロードするのを止めることができます...

0
Vipul Singh

ユーザーが表示できる画像はすべてコンピューターに保存できること、およびそれに対してできることは何もないことを認めました。ユーザーが見ることになっていない他の画像へのアクセスをブロックしたい場合、私は実際にそのようにしています:

  • 画像タグ内の「src」へのすべてのリンクは、実際にはサーバー上のコントローラーに送信されるリクエストです。
  • サーバーはその特定のユーザーのアクセス権を確認し、ユーザーがアクセスすることになっている場合は画像を返します。
  • すべての画像は、ブラウザから直接アクセスできないディレクトリに保存されます。

利点:

  • ユーザーは、アクセスを意図していないものにはアクセスできません。

欠点:

  • これらのリクエストは遅いです。特に、同じページにたくさんの画像があります。私は実際にそれを加速する良い方法を見つけていません。
0
Antony P.

許可されたユーザーのみがコンテンツを取得したい場合、クライアントとサーバーの両方が暗号化を使用する必要があります。

ビデオとオーディオの場合、コンテンツ保護と暗号化を備えたAzure Media Servicesが適切なソリューションです。ブラウザにAzureメディアプレーヤーを埋め込み、Azureからビデオをストリーミングします。

ドキュメントとメールについては、特別なクライアントを使用するAzure Rights Managementをご覧ください。残念ながら、1回限りの使い捨てコードを除き、通常のWebブラウザーでは現在機能していません。

ただし、これがどれだけ安全かはわかりません。他の人が指摘したように、セキュリティの観点から、ダウンロードされたバイトが「攻撃者の」RAMに格納されると、それらは消えてしまいます。この場合、100%安全なソリューションはありません(間違っている場合は修正してください)。ほとんどのセキュリティと同様に、目標はそれを難し​​くすることであるため、99%は気にしません。

0
nmit026