使用SDK文件配置方案

    使用微盾提供的SDK文件几乎可以整合任何网站,下面介绍 一台、两台、或者两台以上服务器该如何正确配置防盗链专家。
    为了保证网站上能正常下载、播放受保护的资源,必须为每个请求添加 VSID 证书信息(关于VSID的细节)

    如何生成 VSID 参数
   
1,将“微盾防盗链专家认证客户端”安装在网页服务器上,即可为 IIS 下所有网站自动发放 Cookie 形式的 VSID 证书。
    2,使用微盾提供的 SDK 函数来生成 VSID 证书。微盾目前提供 ASP(VbScript), ASP(JavaScript), PHP 语言的 SDK 头文件。

    如何导出 VSID 参数生成 SDK 文件
    打开“微盾防盗链专家”配置工具 » 设置 » XXX站 » 常规 » 设置VSID公共钥匙,如下图:
   
    根据自己网站的语言,选择 SDK 文件的语言。
    然后,在弹出的窗口中输入网站的域名,程序会自动计算出该域名的根域名。再选择相应网站的目录保存 SDK 头文件,即可。


    传递 VSID 证书信息的方法
    1,通过 URL 参数方式传递
       可以将 VSID 证书信息添加在任何一个请求 URL 后面,例如:
       http://music.vidun.com/pinball.wmv?vsid=7307ada1863a2dd82b40fe76983df5a9
    2,通过 Cookie 方式传递 
       RTSP 协议允许传递 Cookie 信息,VSID 证书的存储名是 virtualwall=vsid,例如:
       Cookie: virtualwall=vsid=7307ada1863a2dd82b40fe76983df5a9;


    网站整合方案
    1,一台服务器一个网站,同根域名内,通过 Cookie 传递 VSID 信息方式的调用
       VSID 计算方式必须是以下两种的其中一种:
  0,默认方式
1,变化方式(相同访问IP地址产生每次不同的VSID)

       该方式要求网站使用域名,资源的调用也必须使用域名,并且两个域名必须是同一个顶级域名的子域名。
       例如:
           网站域名:www.abc.com
           资源域名:music.abc.com
       详细配置方法:
       根据网站的语言不同选择合适的 SDK 头文件,保存到网站跟目录下(或者你喜欢的任何位置)。
       假设你的 SDK 头文件保存在网站根目录,以 ASP 语言头文件 vsidasp.asp 为例:
  网页地址是:
http://www.abc.com/pinball.html

原资源地址是:
http://music.abc.com/pinball.wmv

修改后的地址是:
http://www.abc.com/vsidasp.asp?file=http://http.abc.com/pinball.wmv

 

    2,两台服务器之间,同根域名内,通过 Cookie 传递 VSID 信息方式的调用
       VSID 计算方式必须是以下两种的其中一种:
  0,默认方式
1,变化方式(相同访问IP地址产生每次不同的VSID)

       如果您有两台服务器,网页站和资源站分开。建议您用这种方式调用,能保证更加稳定的调用。但代码修改量稍微多点。
       多台服务器配置也是一样。只要所有资源服务器的 VSID 信息配置一样即可。
       该方式要求网站使用域名,资源的调用也必须使用域名,并且两个域名必须是同一个顶级域名的子域名。
       例如:
           网站域名:www.abc.com
           资源域名:music.abc.com
       第一步:
           在资源服务器 music.abc.com 上,通过“微盾防盗链专家”配置工具导出相应的 SDK 头文件,并存放在该服务器上 IIS 站点 music.abc.com 下。
       第二步:          
           修改网站 www.abc.com 的代码,将下面的代码添加到资源访问入口页面,或者每个下载、播放页面即可(请将域名修改为相应正确的域名):
  <script language="JavaScript" src="http://music.abc.com/vsidasp.asp"></script>  

           如果资源服务器上安装的是 3.2.0.1059 及以后的版本,无需导出 SDK 文件,直接用 _sys_vw.vhtml 虚拟文件也可以:
  <script language="JavaScript" src="http://music.abc.com/_sys_vw.vhtml"></script>  



    3,通过 URL 参数传递 VSID 信息方式的调用
       VSID 计算方式必须是以下三种的其中一种:
  0,默认方式式
1,变化方式(相同访问IP地址产生每次不同的VSID)
2,变化方式(不同的资源文件名产生不同的VSID)

       该方式对域名没有太多的要求。但需要稍微修改网站代码,在每个请求后面添加 "?vsid=" 参数。
       下面的修改是针对网页站,三种语言的修改方法如下:

       ASP(VbScript)

  ' 包含 SDK 头文件
<!--#include file="vsidasp.asp"-->

' 修改前
<a href="http://music.abc.com/pinball.wmv">pinball.wmv</a>


' 标准方式

<a href="http://music.abc.com/pinball.wmv?vsid=<%=getvsid()%>">pinball.wmv</a>
' 解析后的结果是
<a href="http://music.abc.com/pinball.wmv?vsid=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx">pinball.wmv</a>


' [1]文件名附加方式
<a href="http://music.abc.com<%=getvsidex("/pinball.wmv")%>">pinball.wmv</a>
' 解析后的结果是
<a href="http://music.abc.com/pinball.wmv?vsid=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx">pinball.wmv</a>


' [2]文件名附加方式
<a href="http://music.abc.com<%=getvsidex_inuri("/pinball.wmv")%>">pinball.wmv</a>
' 解析后的结果是
<a href="http://music.abc.com/vsid-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/pinball.wmv">pinball.wmv</a>
 

       Asp(JavaScript)
  <!-- 包含 SDK 头文件 -->
<!--#include file="vsidjs.asp"-->

<!-- 修改前 -->
<a href="http://music.abc.com/pinball.wmv">pinball.wmv</a>

<!-- 标准方式 -->
<a href="http://music.abc.com/pinball.wmv?vsid=<%=getvsid()%>">pinball.wmv</a>
' 解析后的结果是
<a href="http://music.abc.com/pinball.wmv?vsid=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx">pinball.wmv</a>


<!-- [1]文件名附加方式 -->
<a href="http://music.abc.com<%=getvsidex("/pinball.wmv")%>">pinball.wmv</a>
' 解析后的结果是
<a href="http://music.abc.com/pinball.wmv?vsid=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx">pinball.wmv</a>


<!-- [2]文件名附加方式 -->
<a href="http://music.abc.com<%=getvsidex_inuri("/pinball.wmv")%>">pinball.wmv</a>
' 解析后的结果是
<a href="http://music.abc.com/vsid-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/pinball.wmv">pinball.wmv</a>
 

       PHP
  <?php

// 包含 SDK 头文件
require_once( 'vsidphp.php' );

?>

<!-- 修改前 -->
<a href="http://music.abc.com/pinball.wmv">pinball.wmv</a>

<!-- 标准方式 -->
<a href="http://music.abc.com/pinball.wmv?vsid=<?php echo getvsid(); ?>">pinball.wmv</a>
' 解析后的结果是
<a href="http://music.abc.com/pinball.wmv?vsid=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx">pinball.wmv</a>


<!-- [1]文件名附加方式 -->
<a href="http://music.abc.com<?php echo getvsidex("/pinball.wmv"); ?>">pinball.wmv</a>
' 解析后的结果是
<a href="http://music.abc.com/pinball.wmv?vsid=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx">pinball.wmv</a>


<!-- [2]文件名附加方式 -->
<a href="http://music.abc.com<?php echo getvsidex_inuri("/pinball.wmv"); ?>">pinball.wmv</a>
' 解析后的结果是
<a href="http://music.abc.com/vsid-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/pinball.wmv">pinball.wmv</a>
 

 

    4,两台服务器之间,同根域名内,通过 URL 参数传递 VSID 信息方式的调用
       VSID 计算方式必须是以下两种的其中一种:
  0,默认方式
1,变化方式(相同访问IP地址产生每次不同的VSID)

       如果您有两台服务器,网页站和资源站分开。建议您用这种方式调用,能保证更加稳定的调用。但代码修改量稍微多点。
       该方式要求网站使用域名,资源的调用也必须使用域名,并且两个域名必须是同一个顶级域名的子域名。
       例如:
           网站域名:www.abc.com
           资源域名:music.abc.com
       第一步:
           在资源服务器 music.abc.com 上,通过“微盾防盗链专家”配置工具导出相应的 SDK 头文件,并存放在该服务器上 IIS 站点 music.abc.com 下。
       第二步:
           在 www.abc.com 服务器上,需要修改网页代码,修改方法如下:


           下载代码修改方法(1):
  <script language="JavaScript" src="http://music.abc.com/vsidasp.asp?js=yes"></script>
<!--
//  如果资源服务器上安装的是 3.2.0.1059 及以后的版本,无需导出 SDK 文件,直接用 _sys_vw.vhtml 虚拟文件也可以
<script language="JavaScript" src="http://music.abc.com
/_sys_vw.vhtml?js=yes"></script>
-->


<script language="JavaScript">
try
{
   
//  下载文件地址
    var g_sUrl    = 'http://music.abc.com/pinball.wmv';

    //  变量 VW_VSIDhttp://music.abc.com/vsidasp.asp 中的一个自动生成的 JavaScript 变量
    g_sUrl += ( '?vsid=' + VW_VSID );

    //  输入下载地址
    document.write( '<a href="' + g_sUrl + '">pinball.wmv</a>' );
}
catch(error)
{
   
document.write( error.description );
}
</script>
 
 


           下载代码修改方法(2):
  <!-- 下载地址 -->
<a href="http://music.abc.com/pinball.wmv" id="id_downlink">pinball.wmv</a>


<script language="JavaScript" src=
"http://music.abc.com/vsidasp.asp?js=yes"></script>
<!--
//  如果资源服务器上安装的是 3.2.0.1059 及以后的版本,无需导出 SDK 文件,直接用 _sys_vw.vhtml 虚拟文件也可以
<script language="JavaScript" src="http://music.abc.com/_sys_vw.vhtml?js=yes"></script>
-->


<script language=="JavaScript">
try

{
   
var oDownLink =
document.getElementById( "id_downlink" );

    if ( oDownLink )
   
{
        if ( -1 == oDownLink.href.indexOf(
"?vsid=" ) )
       
{
            oDownLink.href += ( "?vsid=" +
VW_VSID );
       
}
   
}
}
catch(error)
{
   
document.write( error.description );
}
</script>
 
 


           播放器代码修改方法:
  <script language="JavaScript" src="http://music.abc.com/vsidasp.asp?js=yes">
<!--
//  如果资源服务器上安装的是 3.2.0.1059 及以后的版本,无需导出 SDK 文件,直接用 _sys_vw.vhtml 虚拟文件也可以
<script language="JavaScript" src="http://music.abc.com/_sys_vw.vhtml?js=yes"></script>
-->

<script language=="JavaScript">
try
{
   
//  媒体文件地址
    var g_sUrl    =
'http://music.abc.com/pinball.wmv';
    var g_sPlayer =
'';

   
//  变量 VW_VSIDhttp://music.abc.com/vsidasp.asp 中的一个自动生成的 JavaScript 变量
    g_sUrl += ( '?vsid=' +
VW_VSID );

   
//  播放器代码,这里可以根据需要修改成自己的播放器代码
    g_sPlayer = ''
    + '<object id="mediaplayer" classid="CLSID:22d6f312-b0f6-11d0-94ab-0080c74c7e95" codebase="http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=6,0,5,0803" standby="Loading Windows Media Player components..." type="application/x-oleobject" style="border:1px solid #666666;">'
    + '<param name="AutoSize" value="false">'
    + '<param name="AutoStart" value="1">'
    + '<param name="ShowControls" value="true">'
    + '<param name="ShowDisplay" value="false">'
    + '<param name="ShowGotoBar" value="false">'
    + '<param name="ShowTracker" value="true">'
    + '<param name="ShowStatusBar" value="true">'
    + '<param name="AnimationAtStart" value="false">'
    + '<param name="TransparentAtStart" value="false">'
    + '<param name="EnableContextMenu" value="false">'
    + '<param name="ClickToPlay" value="true">'
    + '<param name="VideoBorderWidth" value="0">'
    + '<param name="TransparentAtStart" value="0">'
    + '<param name="VideoBorderColor" value="0">'
    + '<param name="VideoBorder3D" value="0">'
    + '<param name="Volume" value="0">'
    + '<param name="FileName" value="' + g_sUrl + '">'
    + '</object>';
    document.write( g_sPlayer );
}
catch(error)
{
   
document.write( error.description );
}
</script>
 
 



    5,多台服务器之间, 同根域名内,通过 URL 参数传递 VSID 信息方式的调用
       VSID 计算方式必须是以下两种的其中一种:
  0,默认方式
1,变化方式(相同访问IP地址产生每次不同的VSID)

       如果您有多台服务器,网页站和资源站分开。建议您用这种方式调用,能保证更加稳定的调用。但代码修改量稍微多点。。
       该方式要求网站使用域名,资源的调用也必须使用域名,并且两个域名必须是同一个顶级域名的子域名。
       例如:
           网站域名:www.abc.com
           资源域名:music1.abc.com、music2.abc.comm
       第一步:
           在资源服务器 music1.abc.com 上上,通过“微盾防盗链专家”配置工具导出相应的 SDK 头文件,并存放在该服务器上 IIS 站点 music1.abc.com 下。
           用同样的方法在资源服务器 music2.abc.com 上,导出相应的 SDK 头文件,并存放在该服务器上 IIS 站点 music2.abc.com 下。
       第二步:
           在 www.
abc.com 服务器上,需要修改播放器的代码,修改方法如下:
  <script language="JavaScript" src="http://music1.abc.com/vsidasp.asp?js=yes&vname=_M_MUSIC1"></script>
<script
language="JavaScript" src="http://music2.abc.com/vsidasp.asp?js=yes&vname=_M_MUSIC2"></script>
<!--
//  如果资源服务器上安装的是 3.2.0.1059 及以后的版本,无需导出 SDK 文件,直接用 _sys_vw.vhtml 虚拟文件也可以
<script language="JavaScript" src="http://music1.abc.com/_sys_vw.vhtml?js=yes&vname=_M_MUSIC1"></script>
<script language="JavaScript" src="http://music2.abc.com/_sys_vw.vhtml?js=yes&vname=_M_MUSIC2"></script>
-->


<script language="JavaScript">
try

{
   
//  媒体文件地址
    var g_sUrl    =
'http://music1.abc.com/pinball.wmv';
    var g_sPlayer =
'';

    if ( -1 != g_sUrl.indexOf(
'music1.abc.com' ) )
    {
   
    //  变量 VW_VSID_MUSIC1 是 http://music1.abc.com/idasp.asp 中的一个自动生成的 JavaScript 变量
        g_sUrl += ( '?vsid=' + VW_VSID_MUSIC1 )
;
    }
    else
    {
       
//  变量 VW_VSID_MUSIC2 是 http://music2.abc.com/idasp.asp 中的一个自动生成的 JavaScript 变量
   
    g_sUrl += ( '?vsid=' + VW_VSID_MUSIC2 );
    }

    //  播放器代码,这里可以根据需要修改成自己的播放器代码
    g_sPlayer = ''
    + '<object id="mediaplayer" classid="CLSID:22d6f312-b0f6-11d0-94ab-0080c74c7e95" codebase="http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=6,0,5,0803" standby="Loading Windows Media Player components..." type="application/x-oleobject" style="border:1px solid #666666;">'
    + '<param name="AutoSize" value="false">'
    + '<param name="AutoStart" value="1">'
    + '<param name="ShowControls" value="true">'
    + '<param name="ShowDisplay" value="false">'
    + '<param name="ShowGotoBar" value="false">'
    + '<param name="ShowTracker" value="true">'
    + '<param name="ShowStatusBar" value="true">'
    + '<param name="AnimationAtStart" value="false">'
    + '<param name="TransparentAtStart" value="false">'
    + '<param name="EnableContextMenu" value="false">'
    + '<param name="ClickToPlay" value="true">'
    + '<param name="VideoBorderWidth" value="0">'
   
+ '<param name="TransparentAtStart" value="0">'
    + '<param name="VideoBorderColor" value="0">'
    + '<param name="VideoBorder3D" value="0">'
    + '<param name="Volume" value="0">'
    + '<param name="FileName" value="' + g_sUrl + '">'
    + '</object>';
    document.write( g_sPlayer );
}
catch(error)
{
   
document.write( error.description );
}
</script>
 
 


 

    6, 不同域名之间(且网页站和资源站分开),通过 URL 参数传递 VSID 信息方式的调用(仅适用于 3.2.2 及更新版本)
       VSID 计算方式必须是以下两种的其中一种:
  0,默认方式
1,变化方式(相同访问IP地址产生每次不同的VSID)

       网页站和资源站分开。并且域名各不相同,建议您用这种方式调用,能保证更加稳定的调用。但代码修改量稍微多点。
       该方式对域名没有同根的要求,网页站和资源站可以是两个完全不同的域名。
       例如:
           网站域名:www.abc.com
           资源域名:www.res.com
       第一步:
           获取 checksum 值,方法一:
               在资源服务器 www.res.com 上,通过“微盾防盗链专家”配置工具导出相应的 SDK 头文件,并将该文件拷贝到 www.abc.com 网站目录。
               通过 SDK 文件提供的函数 getchecksum( sServerName ) 来获取 checksum 值,方法如下:
  ' 包含 SDK 头文件
<!--#include file="vsidasp.asp"-->
<script language="JavaScript" src="http://www.res.com/_sys_vw.vhtml?js=yes&checksum=<%=getchecksum("")%>"></script>
 
 
           获取 checksum 值,方法二:
               如果播放、下载的页面是 HTML 页面,没法通过包含 SDK 头文件使用 getchecksum 函数动态获取 checksum 值的话,可以通过“微盾防盗链专家”配置工具来生成脚本链接,请打开“微盾防盗链专家”配置工具 » 设置 » “XXX站” » “设置 VSID 公共钥匙” » 点击“_sys_vw.vhtml”按钮,会弹出一个脚本生成向导窗口 来生成带有正确的 checksum 值的脚本链接。

       第二步:
           在 www.abc.com 服务器上,需要修改网页代码,修改方法如下:

           下载代码修改方法(1):
  <script language="JavaScript" src="http://www.res.com/_sys_vw.vhtml?js=yes&checksum=4a74d462075d6dc08b81dbddc587cbf0">

<script language="JavaScript">
try
{
   
//  下载文件地址
    var g_sUrl    = 'http://music.abc.com/pinball.wmv';

    //  变量 VW_VSIDhttp://music.abc.com/vsidasp.asp 中的一个自动生成的 JavaScript 变量
    g_sUrl += ( '?vsid=' + VW_VSID );

    //  输入下载地址
    document.write( '<a href="' + g_sUrl + '">pinball.wmv</a>' );
}
catch(error)
{
   
document.write( error.description );
}
</script>
 
 


           下载代码修改方法(2):
  <!-- 下载地址 -->
<a href="http://music.abc.com/pinball.wmv" id="id_downlink">pinball.wmv</a>


<script
language="JavaScript" src="http://www.res.com/_sys_vw.vhtml?js=yes&checksum=4a74d462075d6dc08b81dbddc587cbf0">

<script language=="JavaScript">
try
{
   
var oDownLink =
document.getElementById( "id_downlink" );

    if ( oDownLink )
    {
        if ( -1 == oDownLink.href.indexOf(
"?vsid=" ) )
        {
            oDownLink.href += ( "?vsid=" +
VW_VSID );
        }
    }
}
catch(error)
{
   
document.write( error.description );
}
</script>
 
 


           播放器代码修改方法:
  <script language="JavaScript" src="http://www.res.com/_sys_vw.vhtml?js=yes&checksum=4a74d462075d6dc08b81dbddc587cbf0">

<script language=="JavaScript">
try
{
   
//  媒体文件地址
    var g_sUrl    =
'http://music.abc.com/pinball.wmv';
    var g_sPlayer =
'';

    //  变量 VW_VSIDhttp://music.abc.com/vsidasp.asp 中的一个自动生成的 JavaScript 变量
    g_sUrl += ( '?vsid=' +
VW_VSID );

    //  播放器代码,这里可以根据需要修改成自己的播放器代码
    g_sPlayer = ''
    + '<object id="mediaplayer" classid="CLSID:22d6f312-b0f6-11d0-94ab-0080c74c7e95" codebase="http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=6,0,5,0803" standby="Loading Windows Media Player components..." type="application/x-oleobject" style="border:1px solid #666666;">'
    + '<param name="AutoSize" value="false">'
   
+ '<param name="AutoStart" value="1">'
   
+ '<param name="ShowControls" value="true">'
   
+ '<param name="ShowDisplay" value="false">'
   
+ '<param name="ShowGotoBar" value="false">'
   
+ '<param name="ShowTracker" value="true">'
   
+ '<param name="ShowStatusBar" value="true">'
   
+ '<param name="AnimationAtStart" value="false">'
   
+ '<param name="TransparentAtStart" value="false">'
   
+ '<param name="EnableContextMenu" value="false">'
   
+ '<param name="ClickToPlay" value="true">'
   
+ '<param name="VideoBorderWidth" value="0">'
   
+ '<param name="TransparentAtStart" value="0">'
   
+ '<param name="VideoBorderColor" value="0">'
   
+ '<param name="VideoBorder3D" value="0">'
   
+ '<param name="Volume" value="0">'
   
+ '<param name="FileName" value="' + g_sUrl + '">'
   
+ '</object>';
   
document.write( g_sPlayer );
}
catch(error)
{
   
document.write( error.description );
}
</script>
 
 



       该方法同样适用于一个网页服务器和一个资源服务器的情况。