Use PHP to forge referer to break through the code of network disk prohibiting external connections_PHP tutorial

WBOY
Release: 2016-07-21 15:51:49
Original
1023 people have browsed it

For example, I put the file http://img.namipan.com/downfile/da333ee178bdad6531d1ec1540cf86277c116b6300887600/02.Paid%20In%20Full.mp3

This address cannot be downloaded directly or played in the web player. , click Download to go to a download page. If you want to be able to directly download or play this file, you need to forge the referfer and deceive the server. The referfer is a link from the nanodisk.

The first method used is to use PHP’s built-in function stream_context_create.

The code is as follows:

function referrfile($url, $refer=”) {
$opt=array('http'=>array('header'=>" Referer: $refer”));
$context=stream_context_create( $opt);
return file_get_contents($url,false, $context);
}

But this code has A shortcoming is that file_get_contents actually reads the files from the other party's server to its own server and then sends them to the browser. This not only increases the pressure on your own server, but also the download response speed is very slow. This is not a good solution. .

Then I read the manual again. I want to reduce the pressure on my own server and also confuse the other server.

The revised code is as follows. :
$url=”img.namipan.com/downfile/da333ee178bdad6531d1ec1540cf86277c116b6300887600/02.Paid%20In%20Full.mp3″;//The url here should be filtered out http://
$urlarr=explode(” /”,$url);
$domain=$urlarr[0];//Decompose the domain name
$getfile=str_replace($urlarr[0],”,$url);
$content = @fsockopen(”$domain”, 80, $errno, $errstr, 12);//Connect to the other party’s server first
if (!$content){//If the connection cannot be made, an error message will be prompted
die( "Sorry, unable to connect to $domain .");
}
fputs($content, "GET $getfile HTTP/1.0rn");
fputs($content, "Host: $domainrn") ;
fputs($content, “Referer: $domainrn”);//Fake referfer
fputs($content, “User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)rnrn”) ;

while (!feof($content)) {
$tp.=fgets($content, 128); Read the header information, which will contain: Location: http:// xxx/xxx.mp3, this is the address we want.
}
$arr=explode("n",$tp);
$arr1=explode("Location: ",$tp);
$arr2=explode("n",$ arr1[1]);//Decompose the address behind Location:
header('Content-Type:application/force-download');
header("location:".$arr2[0]);
fclose($content);

OK, the purpose is achieved.

This original address: http://img.namipan.com/downfile/3a7c64518d46d986283eab73175a8b119305a76480b89200/Equilibrium-Turis_Fratir-02-Wingthors_Hammer.mp3

After conversion:

http ://mms.music.krmcn.com/mms.music/namipan/img~~/3a7c64518d46d986283eab73175a8b119305a76480b89200/Equilibrium-Turis_Fratir-02-Wingthors_Hammer.mp3

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/319077.htmlTechArticleFor example, the file I put in the nanodisk is http://img.namipan.com/downfile/da333ee178bdad6531d1ec1540cf86277c116b6300887600/02. Paid%20In%20Full.mp3 This address cannot be downloaded directly or online...
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template