14

thefuture.fm に似たサイトを構築しています。DJ は MP3 ファイルをアップロードして、ファイルのみをストリーミングするか、ストリーミングしてダウンロードできるかを設定できます。

サイトへの訪問者は、音楽を聴くためにログインする必要はありません。ユーザーの設定に応じて、これらの MP3 曲をストリーミング/ダウンロードできるはずです。

jPlayer を使用して曲を再生しています。Web全体を検索しましたが、解決策が見つかりません。jPlayer には、MP3 ファイルのダウンロードを防止する機能はありますか? または、これを防ぐ方法はありますか?

4

5 に答える 5

14

ダウンロードを防ぐことは実際には不可能です。あなたは誰かにとってそれを難し​​くすることができます、しかし彼はそれでも歌を聞くためにすべてのデータをダウンロードする必要があります。したがって、暗号化を使用して自分で作成したFlash Playerにデータを送信する場合でも、プレーヤーはデータを復号化してオーディオを再生する必要があります。また、フラッシュを逆コンパイルできるため、アルゴリズムを見つけるのは難しくありません。彼はまた、音楽を再生するときにもう一度録音することもできました(最初のDVD復号化ツールと同様に、スクリーンショットを1秒あたり30回撮影して、数百万ドルのセキュリティ測定値に合格しました)

したがって、目標はそれを難し​​くすることであり、不可能ではありません。

個人的には、Cookieと組み合わせて一時的に利用可能なリンクを探すので、jplayerを引き続き使用でき、車輪の再発明を行う必要はありません。また、URLを読みにくくするために、難読化を使用します。

誰かがメインURL(プレーヤーを表示する場所)を要求すると、一意のキーが生成され、Cookieに保存されます。一意のキーは、セッションに保存されているIPアドレスと要求時間をリンクする必要があります。

次に、playfile.php?file=music.mp3などの音楽ファイルへのリンクを作成します。PHPがファイルリクエストを処理することを確認してください。このリンクを難読化すると、見つけるのが少し難しくなります。

playfile.phpで、Cookie内の一意のコードを確認し、それがセッションのIPアドレスと一致し、要求時間がEG 15秒未満であるかどうかを確認します(これ以上、低速のインターネット接続では音楽は再生されません)。そうである場合は、ファイルをストリーミングします。そうでない場合は、ブロックします。

今、誰かが音楽をダウンロードするためのプログラム/スクリプトを書くなら、彼はそうすることができます。しかし、誰かがそれを行うための知識と時間を持っていれば、彼がそれをダウンロードするのを妨げるものは何もありません。

これにより、通常のユーザーがダウンロードできなくなります。

于 2013-01-07T15:02:04.887 に答える
5

一般に、確認するリファラー文字列があるため、ホットリンクを防止するのは少し簡単です。これが存在する場合、コンテンツを提供しないことがわかります。コード例を次に示します

一方、ダウンロードを防止するのは非常に困難です。最適な方法は、Flash アプリケーションでデータをリアルタイムで復号化することです。単純な暗号化スキームを使用する場合、ほとんどのクライアント ハードウェアは十分に高速です。ウェブ上でこれについて多くを見つけることができなかったので、Flash/Flex 開発を自分で行う必要があるのではないかと思います: MP3 データをチャンクでダウンロードし、ライブラリから復号化ルーチンを適用し、それらをある種の MP3 に送信します。デコードバッファ。パスワードがハードコードされているのではないかと思います。

補遺: Flash の新しいバージョンでは、バッファから動的に生成されたサウンドを再生できることがわかりました (こちら を参照)。そのため、Flash/Flex の開発に取り掛かる気がある場合は、解決策が見えてきます。低レベルの MP3 ルーチンにアクセスするものは見つかりませんでしたが、サーバーから送信されたファイルが MP3 である必要はないことを忘れないでください。アプリが必要とするものに変換してください。

于 2013-01-01T13:39:23.627 に答える
4

ブラウザからアクセスできない場所にファイルを配置し、PHP を使用して一連のチャンクとしてストリーミングしますHTTP/1.1 206 Partial Content。次に、このような方法を使用してコンテキスト メニューを編集し、「名前を付けて保存」を追加/削除します。

セッション変数を使用して、直接リンクを排除します。

于 2013-01-01T14:25:35.373 に答える
4

あなたが探しているものは、JavaScript ソリューションでは実現できません。JavaScript で何かを再生するには、それをダウンロードする必要があります。ダウンロードするには、JavaScript に URL が必要です。

この問題に取り組む最も一般的な方法は、Adobe Flash を使用して、その中にプレーヤーを作成することです。実際のデータの場所をユーザーに明示的に公開することなく、プレーヤーのストリーム コンテンツ (この場合は mp3) を作成できます。

于 2012-12-21T09:14:04.033 に答える