码迷,mamicode.com
首页 > Web开发 > 详细

PHP伪造referer突破网盘禁止外链(附115源码)

时间:2017-07-11 11:12:41      阅读:291      评论:0      收藏:0      [点我收藏+]

标签:无法连接   说明   转换   ade   uri   ace   window   com   nload   

新建一个文件file.php。后面的参数就是需要伪造referfer的目标地址吧。如:file.php/http://www.xxx.xxx/xxx.mp3

复制内容到剪贴板
代码:
<?
$url=str_replace(‘/file.php/‘,‘‘,$_SERVER["REQUEST_URI"]);//得出需要转换的网址。这里我就偷懒,不做安全检测了,需要的自己加上去
$downfile=str_replace(" ","%20",$url);//替换空格之类,可以根据实际情况进行替换
$downfile=str_replace("http://","",$downfile);//去掉http://
$urlarr=explode("/",$downfile);//以"/"分解出域名
$domain=$urlarr[0];//域名
$getfile=str_replace($urlarr[0],‘‘,$downfile);//得出header中的GET部分
$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");//伪造部分
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);
    if (strstr($tp,"200 OK")){ //这里要说明一下。header的第一行一般是请求文件的状态。具体请参照HTTP 1.1状态代码及其含义hi.baidu.com/110911/blog/item/21f20d2475af812ed50742c5.html这里 是正常的文件请求状态,只需直接转向就可以。其他状态的继续执行程序

      header("Location:$url");
     die();
    }
}

//302 转向,大部分的防盗链系统都是先判断referfer,对了的话再转向真实的地址。下面就是获取真实的地址。
$arr=explode("\n",$tp);
$arr1=explode("Location: ",$tp);//分解出Location后面的真时地址
$arr2=explode("\n",$arr1[1]);
header(‘Content-Type:application/force-download‘);//强制下载
header("location:".$arr2[0]);//转向目标地址
die();
?>

  115网盘外链php版

复制内容到剪贴板
代码:
<?php
$uri = $_SERVER["REQUEST_URI"];
preg_match("/115.php\/(.+)\//",$uri,$code);//自己修改
$code = $code[1];
$opts = array(
‘http‘=>array(‘method‘=>"GET",‘header‘=>"User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.3)\r\n")
);//伪造User-Agent
$context = stream_context_create($opts);
$url = "https://uapi.115.com/?ct=upload_api&ac=get_pick_code_info&pickcode=".$code."&version=1164";//获得原始下载地址
$data = file_get_contents($url,false,$context);
$data = str_replace("\\","",$data);
preg_match_all("/\"Url\":\"(.*?)\"/", $data, $data);
$myurl = $data[1][2];//获得备份下载
if($myurl){
header(‘Content-Type:application/force-download‘);//强制下载
header("Location:".$myurl);
die();
}
else echo "提取码不存在或已过期";
?>

  115网盘图片外链测试(不是我做的):

  原版地址:http://u.115.com/file/f3d81ef173

PHP伪造referer突破网盘禁止外链(附115源码)

标签:无法连接   说明   转换   ade   uri   ace   window   com   nload   

原文地址:http://www.cnblogs.com/ZDPPU/p/7149229.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!