サイトのオリジナルビデオを直接ダウンロードさせない



サイト上にアップしたオリジナルのビデオを
閲覧者にダウンロードされないようにする方法です。

※html内にスクリプトを記述するため
改行が無駄に入っています。
どこの改行がしてはいけないのか理解できない方は
残念ながらこのページに記述したものは
利用できないと思いますので諦めてください。

1.まずはwmvのプレイヤーを作ります。

プレイヤーのページ(aspx)のスクリプトは
以下のたった10行です。

<script runat="server">
Dim VideoId As string
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
If Not IsPostBack Then
VideoId = Request.Querystring("VID")
VideoId0.text = VideoId
VideoId1.text = VideoId
End if
End Sub
</script>

以下のジャバスクリプトはasxの場所を露出させないため
プレーヤー内に記述しておきます。

<script type="text/JavaScript">
<!--
function click() {
if (event.button==2) {
alert("月並みですが右クリックは出来ませんので~");
}
}
document.onmousedown=click
// -->
</script>

以下はプレイヤーのページ(html)内に記述

<!--MP-->
<OBJECT ID="MediaPlayer" WIDTH=960 HEIGHT=720
↑ここの記述(サイズ)は自由に設定
CLASSID="CLSID:22d6f312-b0f6-11d0-94ab-0080c74c7e95"
CODEBASE="http://activex.microsoft.com/activex/
controls/mplayer/en/nsmp2inf.cab\#Version=6,4,5,715"
standby="Loading Microsoft Windows Media Player components...
" TYPE="application/x-oleobject">
<PARAM NAME="FileName" VALUE="./data/asx/
<asp:Literal Runat=server ID=VideoId0></asp:Literal>.asx">
<PARAM NAME="Showcontrols" VALUE="true">
<PARAM NAME="AutoStart" VALUE="true">
<PARAM NAME="ShowStatusBar" VALUE="false">
<PARAM NAME="ShowDisplay" VALUE="false">
<EMBED TYPE="application/x-mplayer2"
SRC="./data/asx/<asp:Literal Runat=server ID=VideoId1>
</asp:Literal>.asx"
pluginspage=http://www.microsoft.com/isapi/redir.dll?prd=
windows&sbp=mediaplayer&ar=Media&sba=Plugin&
Name="MediaPlayer" WIDTH="960" HEIGHT="720" Showcontrols=1
AutoStart=1 ShowStatusBar=0 ShowDisplay=0>
</EMBED>
</OBJECT>
<!--MP-->

※「Version=」の所はもっと新しいバージョンがあるかもしれませんが、
管理人の所ではこれより新しいバージョンを調べていないので、
各自調べてみてください。

以上で製作したプレイヤーを適当な名前を付けて
任意の場所へ保存します。

2.次にビデオのリンクをプレイヤーへ送信するページです。
htmlページでもaspxページでも好きに作ってください。
ちなみにhtmlですと誰でも開けてしまいますが、
aspxのページならweb.configでプロテクトをかけて
ログインユーザのみ開けるように作れます。

ジャバスクリプトをページ内任意の位置へ設置します

<script type="text/javascript">
<!--

function openmovie(m) {
var vid = m;
window.open("[1で保存した名前]?VID=" + m, "再生",
"toolbar=no,menubar=no,scrollbars=no,resizable=yes,
width=980,height=780");
}

// -->
</script>

以下はビデオへのリンク文字列です
ページ内の任意の場所へ配置します。

<a href="javascript:openmovie('適当なID')">リンク用タイトル</a>

上のリンクでジャバスクリプトへビデオのIDを送ります。
IDを受け取ったジャバスクリプトはID付きで
プレイヤーをポップアップウインドウで立ち上げます。

このときポップアップウインドウは
toolbar=no,menubar=noなのでビデオのIDは
ユーザからは何に対して指定されているのか解りません。

このとき実は送られているIDはasxのIDです。
プレイヤー内の記述

VALUE="./data/asx/
<asp:Literal Runat=server ID=VideoId0></asp:Literal>.asx">

をご覧いただければ解るように、IDで指定しているのは
asxなのでプレーヤーへ送っているIDの意味が何であるか
仮に知られてしまってもビデオの実体はどこか解りません。

3.IDで指定されたasxの中にビデオファイルの
実体のある場所を記述します。

asxの記述例:

<ASX version="3">
<Entry>
<Ref HREF="[ここのディレクトリ名を充分に複雑にする]/
[ビデオファイルの名前]" />
</Entry>
</ASX>

以上の設定で大概の場合ビデオの実体を
ダウンロードされてしまうことは防げます。
さらに2のページをaspxでユーザのみログインとしておけば、
検索ロボットにもインデックスされないのでビデオの実体が
検索で表示されてしまうこともありません。

以上を応用すれば例えばユー○ューブや○ャオと
ほとんど同じようなサービスを提供できます。

対応バージョン:1.1,2.0

記事id:57 / 7390PV

関連記事