php 禁止外链,php伪造referer突破网盘禁止外链

一般的国内网盘为控制流量,都会禁止网盘内的文件外链。

点网盘里文件的链接一般都会转到专门的下载页面,必须从这个页面才能下载文件。

比如我放纳米盘里的文件http://img.namipan.com/downfile/da333ee178bdad6531d1ec1540cf86277c116b6300887600/02.paid%20in%20full.mp3

这个地址不能直接下载也不能在网页播放器里播放,点击下载转到了一个下载页面。

要想能够直接下载这个文件或播放这个文件,那就要伪造referfer,欺骗服务器,referfer是来自纳米盘的链接。

用php内置的函数stream_context_create。

复制代码 代码示例:

function referfile($url, $refer=”) {

$opt=array('http'=>array('header'=>”referer: $refer”));

$context=stream_context_create( $opt);

return file_get_contents($url,false, $context);

}

但这段代码有个缺点,file_get_contents实际上是把对方服务器的文件读取到了自己的服务器上然后再发送给浏览器,不但加大自己服务器的压力,而且下载反应速度还很慢,这个并不是很好的解决方法。

查看下php手册,既要减轻自己服务器的压力,又能达到迷惑对方服务器。修改header里的referfer信息就可以了。

修改正后的代码:

复制代码 代码示例:

$url=”img.namipan.com/downfile/da333ee178bdad6531d1ec1540cf86277c116b6300887600/02.paid%20in%20full.mp3″;//这里的url要过滤掉http://

$urlarr=explode(”/”,$url);

$domain=$urlarr[0];//分解出域名

$getfile=str_replace($urlarr[0],”,$url);

$content = @fsockopen(”$domain”, 80, $errno, $errstr, 12);//先连接上对方的服务器

if (!$content){//无法链接就提示错误信息

die(”对不起,无法连接上 $domain 。”);

}

fputs($content, “get $getfile http/1.0\r\n”);

fputs($content, “host: $domain\r\n”);

fputs($content, “referer: $domain\r\n”);//伪造referfer

fputs($content, “user-agent: mozilla/4.0 (compatible; msie 6.0; windows nt 5.1)\r\n\r\n”);

while (!feof($content)) {

$tp.=fgets($content, 128);将头部信息读取出来,里面将包含:location:http://xxx/xxx.mp3,我们要的就是这个地址。

}

$arr=explode(”\n”,$tp);

$arr1=explode(”location: “,$tp);

$arr2=explode(”\n”,$arr1[1]);//分解出location:后面的地址

header('content-type:application/force-download');

header(”location:”.$arr2[0]);

fclose($content);

原来地址:http://img.namipan.com/downfile/3a7c64518d46d986283eab73175a8b119305a76480b89200/equilibrium-turis_fratyr-02-wingthors_hammer.mp3

转换后:

http://mms.music.krmcn.com/mms.music/namipan/img~~/3a7c64518d46d986283eab73175a8b119305a76480b89200/equilibrium-turis_fratyr-02-wingthors_hammer.mp3

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值