好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

php下通过伪造http头破解防盗链的代码 - php高级应

php下通过伪造http头破解防盗链的代码

方法一,实例代码如下:

$txt = $_get [ 'url' ];   echo  referfile( $txt , 'http://HdhCmsTestphpfensi测试数据/' );    function  referfile( $url , $refer = '' ) {   $opt = array ( 'http' => array ( 'header' => "referer:$refer" ));   $context =stream_context_create( $opt );   header( "location:" . $url );   return   file_get_contents ( $url ,false, $context );   }      <?php   $host  =  "pakey.net" ;  //你要访问的域名    $target  =  "/test.asp教程" ;  //你要访问的页面地址    $referer  =  "http//uuwar测试数据/" ; //伪造来路页面   $fp  =  fsockopen ( $host , 80,  $errno ,  $errstr , 30);   if (! $fp ){   echo   "$errstr($errno)<br /> " ;   } else {   $out  = "   get  $target  http/1.1   host:  $host    referer:  $referer    connection: close ";    fwrite( $fp ,  $out );   while (! feof ( $fp )){   echo   fgets ( $fp , 1024);   }   fclose( $fp );   }   ?> 

其它方法,实例代码如下:

<?php  $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.0rn" );   fputs ( $content ,  "host: $domainrn" );   fputs ( $content ,  "referer: $domainrn" ); //伪造部分    fputs ( $content ,  "user-agent: mozilla/4.0 (compatible; msie 6.0; windows nt 5.1)rnrn" );   while  (! feof ( $content )) {   $tp .= fgets ( $content , 128);   if  ( strstr ( $tp , "200 ok" )){  //这里要说明一下。header的第一行一般是请求文件的状态。具体请参照http 1.1状态代码及其含义 hi.baidu测试数据/110911/blog/item/21f20d2475af812ed50742c5.html这里是正常的文件请求状态,只需直接转向就可以。其他状态的继续执行程序    header( "location:$url" );  //开源代码phpfensi测试数据   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 ();   ?>

查看更多关于php下通过伪造http头破解防盗链的代码 - php高级应的详细内容...

  阅读:60次