大家好,又见面了,我是你们的朋友全栈君。
盗链是指服务提供商自己不提供服务的内容,通过技术手段绕过其它有利益的最终用户界面(如广告),直接在自己的网站上向最终用户提供其它服务提供商的服务内容,骗取最终用户的浏览和点击率。受益者不提供资源或提供很少的资源,而真正的服务提供商却得不到任何的收益。
针对图片的防盗链方法: 在 httpd.ini 文件的任意处增加下列代码(IIS 的 httpd.ini 和 Apache 的 .htaccess 文件原理是一样的!)
RewriteCond Host: (.+)
#排除以下网站
RewriteCond Referer: (?!http://(?:173it\.cn|(.*)\.173it\.cn|72km\.cn|(.*)\.php100\.com|baidu\.com|(.*)\.baidu\.com|google\.com|(.*).\google.com)).*
#其他网站的图片、软件下载请求都转向到 block.png 中
RewriteRule (.*\.(?:jpg|jpeg|gif|png|bmp|rar|zip|exe)) /block.png [I,O,N]
针对下载的防盗链方法: download.php 文件相当于一个“守城兵”,负责保护数据、传递数据。它会判断 $_SERVER[‘HTTP_REFERER’] 与本站域名是否有匹配,如果否,则说明该下载请求来自他站,此时拒绝下载,显示“请不要盗链本站资源”。如果是本站的下载请求,则调用下载类—-读取文件并输出下载。($_SERVER[‘HTTP_REFERER’] 这个服务器变量的意思是:获取当前链接的上一个连接的来源地址,即链接到当前页面的前一页面的 URL 地址)
主要有两个文件:download.php 、Download.class.php 下载
现在开始看代码:
假设我提供下载的地址是:http://www.173it.cn/download.php?fn=文件名.rar
当此链接被点击后,download.php 开始工作——过滤非本站的下载请求,如请求通过,则返回数据给用户。
download.php
<?php
include_once ‘Download.class.php’;
$referer = $_SERVER[‘HTTP_REFERER’];
$host = ‘php95.com’;
if(!strpos($referer,$host)){
echo ‘请不要盗链本站资源!’;
}else{
// 压缩文件自由放置,在这里加上路径就可以了。比如 $fn = ‘\a\b\c\\’.$_GET[fn];
$fn = $_GET[fn];
$dl=new Download();
$dl->_dl_($fn);
}
?>
Download.class.php
/**
* 下载类
* 示例: $dl = new Download(); $dl->_dl_(‘a.rar’);
**/
class Download{
var $cache_size=1024;
function Download(){}
//文件的相对路径
function _dl_($path)
{
$full_path=getcwd().$path;
//echo $full_path;
if(!file_exists($full_path)){
echo “File Not Find.”;
exit;
}else{
$handle=fopen($full_path,”rb”);
Header(“Content-type:”.$this->getmimetype($full_path));
Header(“Accept-Ranges:bytes”);
Header(“Accept-Length:”.filesize($full_path));
$infos=pathinfo($full_path);
Header(“Content-Disposition:attachment;filename=”.$infos[“basename”]);
while(!feof($handle)){
echo fread($handle,$this->cache_size);
}
fclose($handle);
exit;
}
}
function getmimetype($path){
$mimeArray=array();
$mimeArray[“zip”]=”application/zip”;
$mimeArray[“wav”]=”audio/x-wav”;
$mimeArray[“xml”]=”application/xml”;
$mimeArray[“txt”]=”text/plain”;
$mimeArray[“tar”]=”application/x-tar”;
$mimeArray[“swf”]=”application/x-shockwave-flash”;
$mimeArray[“rm”]=”application/vnd.rn-realmedia”;
$mimeArray[“pdf”]=”application/pdf”;
$mimeArray[“mp3″]=”audio/x-mpeg”;
$mimeArray[“mid”]=”audio/x-midi”;
$mimeArray[“js”]=”text/javascript”;
$mimeArray[“jad”]=”text/vnd.sun.j2me.app-descriptor”;
$mimeArray[“gz”]=”application/x-gzip”;
$mimeArray[“gtar”]=”application/x-gtar”;
$mimeArray[“exe”]=”application/octet-stream”;
$mimeArray[“doc”]=”application/msword”;
$mimeArray[“rar”]=”application/octet-stream”;
$infos=pathinfo($path);
return $mimeArray[$infos[“extension”]];
}
}//end class Download
?>
对外提供下载地址的格式是:http://本站域名/download.php?fn=文件名.rar
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/163473.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...