zoukankan      html  css  js  c++  java
  • PHP伪造referer突破网盘禁止外链(附115源码)

    新建一个文件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 ");
    fputs($content, "Host: $domain ");
    fputs($content, "Referer: $domain ");//伪造部分
    fputs($content, "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) ");

    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(" ",$tp);
    $arr1=explode("Location: ",$tp);//分解出Location后面的真时地址
    $arr2=explode(" ",$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) ")
    );//伪造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

  • 相关阅读:
    Keepass无法导入密钥文件
    数据库交互方式之一
    Grey encoder and decoder
    SystemVerilog 序列运算符与属性运算符
    避免int 与 pointer的隐式类型转换
    xxx.lib(xxx.obj)fatal error LNK1103: debugging information corrupt; recompile module 的解决方案
    c++ static 关键字用法
    影响中国软件开发的人(摘录)
    链接
    有助于事业发展和幸福感提升的四个约定
  • 原文地址:https://www.cnblogs.com/ZDPPU/p/7149229.html
Copyright © 2011-2022 走看看