たとえば、ファイル http://img.namipan.com/downfile/da333ee178bdad6531d1ec1540cf86277c116b6300887600/02.Paid%20In%20Full.mp3 を置きます。このアドレスは直接ダウンロードしたり、Web プレーヤーで再生したりすることはできません。クリックしてダウンロードして転送します。 . ダウンロードページに到着しました。このファイルを直接ダウンロードまたは再生できるようにするには、リファファーを偽造してサーバーを欺く必要があります。リファファーはナノディスクからのリンクです。
最初に使用する方法は、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);
しかし、このコードには実際には他のサーバーからファイルを読み取ってから、ブラウザに送信すると、自分のサーバーの負荷が高まるだけでなく、ダウンロードの応答が非常に遅くなります。これは良い解決策ではありません
自分のサーバーの負荷を軽減するために、後でマニュアルをもう一度読みました。ただし、自分のサーバーへの負荷も軽減します。ヘッダーの Referfer 情報を変更するだけです。 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){//Unable リンクによりエラー メッセージが表示されます
die("Sorry, can connect to $domain.")
}
fputs($content, “GET $getfile HTTP/1.0rn”);
fputs($content, “ホスト: $domainrn” ”);
fputs($content, “リファラー: $domainrn”);//偽のリファファー
fputs($content, “User-Agent”) : Mozilla/4.0 (互換性; MSIE 6.0; Windows NT 5.1)rnrn”);
while (!feof($content)) {
$tp.=fgets($content, 128);内容: 場所: http://xxx/xxx.mp3、これがアドレスです。
}
$arr=explode("n",$tp);
$arr1=explode("場所: ",$tp);
$arr2=explode("n",$arr1[1]);// Location の後ろのアドレスを分解します:
header('Content-Type:application/force-download');
fclose($content);
OK、目的に達しました。
この元のアドレス: http://img.namipan.com/downfile/3a7c64518d46d986283eab73175a8b119305a76480b89200/Equilibrium-Turis_Fratir-02-Wingthors_Hammer.mp3
変換後: http://mms.music.krmcn.com/mms 。 music/namipan/img~~/3a7c64518d46d986283eab73175a8b119305a76480b89200/Equilibrium-Turis_Fratir-02-Wingthors_Hammer.mp3
http://www.bkjia.com/PHPjc/319077.html
www.bkjia.com
true