이 글은 주로 PHP를 사용하여 네트워크 디스크를 뚫고 외부 연결을 금지하는 방법을 소개합니다. 이제는 필요한 친구들이 참조할 수 있습니다. 트래픽을 제어합니다. 네트워크 디스크의 파일에 대한 외부 링크는 금지됩니다. 네트워크 디스크에 있는 파일에 대한 링크를 클릭하면 일반적으로 특별한 다운로드 페이지로 이동하며, 이 페이지에서 파일을 다운로드해야 합니다.
예를 들어 나노디스크에 넣은 파일은 http://img.namipan.com/downfile/da333ee178bdad6531d1ec1540cf86277c116b6300887600/02.Paid%20In%20Full.mp3
이 주소는 직접 다운로드하거나 웹 플레이어에서 재생할 수 없습니다, 클릭하면 다운로드 페이지로 이동합니다. 이 파일을 직접 다운로드하거나 재생하려면 리퍼퍼를 위조하고 서버를 속여야 합니다. 리퍼퍼는 나노디스크의 링크입니다.
첫 번째로 사용할 방법은 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); }
나중에 설명서를 다시 읽어보니 내 서버에 대한 부담을 줄일 뿐만 아니라 상대방 서버에도 혼란을 주기 위해서였습니다. 헤더의 추천인 정보를 수정하세요.
수정된 코드는 다음과 같습니다.
<?php $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_Fratir-02-Wingthors_Hammer.mp3
변환 후:
http://mms .music.krmcn.com/mms. /namipan/img~~/3a7c64518d46d986283eab73175a8b119305a76480b89200/Equilibrium-Turis_Fratir-02-Wingthors_Hammer.mp3가장 독창적인 것 깨진 네트워크 디스크 제한 체인의 PHP 코드(원하는 경우) 배우고 연구하세요. 코드를 직접 사용하고 개선해야 할 경우 이 코드는 참고용으로만 사용하세요.
새 파일 file.php를 만듭니다. 다음 매개변수는 위조해야 하는 참조자의 대상 주소입니다. 예: 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 네트워크 디스크 외부 링크 테스트 2 (제가 하지 않았습니다): http://gg.org.ru/ 115.php/Extraction Code/xxx
위 내용은 이 글의 전체 내용입니다. 모든 분들의 공부에 도움이 되었으면 좋겠습니다. 더 많은 관련 내용은 PHP 중국어 홈페이지를 주목해주세요!
관련 권장사항:
phpphp에 대한 str_replace 대체 취약점 분석을 통해 CMS에서 표시 기사 클래스 구현
위 내용은 PHP를 사용하여 리퍼러를 위조하여 네트워크 디스크를 뚫고 외부 연결을 금지하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!