什么是 Token 防盗链
Token 防盗链结合智能标记和公钥加密技术,是业界最安全的防盗链之一。用户可设置签名过期时间来控制文件的访问时限。Token 防盗链的目的是使得每个请求的 URL 都具有一定的“时效性”,因此 URL 本身需要携带过期时间相关的信息,同时确保这个过期时间不能被恶意修改。
Token 防盗链采用 md5 算法,将密文(通常是一个普通字符串)、过期时间、文件路径(过期时间和文件路径通常是有对应关系的,因此也参与 md5 的计算)等信息所计算的 md5 值也加入到 URL中,在验证请求时,除了验证过期时间,同时还会验证该 md5 值是否匹配,对于不匹配的 md5,说明 URL 被篡改,即使请求未过期也需要禁止服务。
播放例子:play.php?vid=1612964711208558592
play.php部分
<?php
$key='kkpig.cn';
$time = date("Y/m/d/H/i"); //如果api改了时间这里也要改
$token = md5($key.$time);
?>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title></title>
<meta name="description" content="" />
<meta name="keywords" content="" />
<style type="text/css">
#a1
{
background-color:#000000;
width:100%;
position:absolute;
top:0px;
bottom:0px;
left:0px;
}
</style>
</head>
<body bgcolor="#000000"><!--bgcolor="#000000"-->
<center>
<div id="a1"></div>
<script type="text/javascript" src="ckplayer/ckplayer.js" charset="utf-8"></script>
<script type="text/javascript">
var flashvars={
f:'api.php?vid=<?php echo $_GET['vid']."&token=".$token;?>',
c:0,
p:1
};
var params={bgcolor:'#FFF',allowFullScreen:true,allowScriptAccess:'always',wmode:'transparent'};
var video=['api.php?vid=<?php echo $_GET['vid']."&token=".$token;?>->video/mp4'];
CKobject.embed('ckplayer/ckplayer.swf','a1','ckplayer_a1','100%','100%',false,flashvars,video,params);
</script></center>
</body>
</html>
api.php部分
<?php
$key='kkpig.cn';
$time = date("Y/m/d/H/i"); //过期时间
$token = md5($key.$time);
$token2 = $_GET['token'];
$vid = $_GET['vid'];
$api = "https://lens.zhihu.com/api/v4/videos/".$vid."";
$html = file_get_contents($api);
$json = json_decode($html);
$url = $json->playlist->LD->play_url;
if( $token == $token2 )
{ header("Location: {$url}"); } //如果token等于token2 给出完整地址
else{ echo "token错误"; } //不一样给出错误提示
?>
评论 (0)