当前位置: 首页 > 图文教程 > 网络编程 > PHP > 用PHP伪造referer突破网盘禁止外连的代码

PHP
php项目打包方法
Apache+php+mysql在windows下的安装与配置(图文)
PHP Token(令牌)设计
可以在线执行PHP代码包装修正版
PHP执行速率优化技巧小结
php 无限极分类
Discuz! Passport 通行证整合
几个php应用技巧
WINDOWS下php5.2.4+mysql6.0+apache2.2.4+ZendOptimizer-3.3.0配置
来自经典的打造简单的PHP&MYSQL留言板
PHP实现Socket服务器的代码
php设计模式介绍之编程惯用法
php mysql数据库操作分页类
php学习 函数 课件
php学习 字符串课件
php学习 数组课件
php学习 面向对象 课件
PHP学习正则表达式 课件
PHP学习文件处理与文件上传 课件
PHP学习mysql课件 高级篇

用PHP伪造referer突破网盘禁止外连的代码


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-13   浏览: 291 ::
收藏到网摘: n/a

一般的国内网盘为控制流量,都会禁止网盘内的文件外链。点网盘里文件的链接一般都会转到专门的下载页面,必须从这个页面才能下载文件。 比如我放纳米盘里的文件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实际上是把对方服务器的文件读取到了自己的服务器上然后再发送给浏览器,不但加大自己服务器的压力,而且下载反应速度还很慢,这个并不是很好的解决方法。
后来又看了遍手册,既要减轻自己服务器的压力,又能达到迷惑对方服务器。修改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);
OK,目的达到了。
这个原来的地址: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