部分資源站通過檢查 Referer 判斷請求來源。偽造 Referer: 目標域名 並轉發請求,可繞過簡單防盜鏈。
<?php
// 用法:file.php/https://example.com/media.mp3
$rawUrl = str_replace('/file.php/', '', $_SERVER['REQUEST_URI']);
$url = str_replace(' ', '%20', $url);
$url = str_replace('https://', '', $url);
$parts = explode('/', $url, 2);
$host = $parts[0];
$request = '/' . ($parts[1] ?? '');
$fp = @fsockopen($host, 80, $errno, $errstr, 10);
if (!$fp) exit("無法連接 $host");
$out = "GET $request HTTP/1.0\r\n";
$out .= "Host: $host\r\n";
$out .= "Referer: https://$host/\r\n"; // 偽造
$out .= "User-Agent: Mozilla/5.0\r\n\r\n";
fwrite($fp, $out);
$response = '';
while (!feof($fp)) $response .= fgets($fp, 4096);
fclose($fp);
// 解析響應
if (strpos($response, '200 OK') !== false) {
// 直接重定向原 URL(若對方無二次驗證)
header("Location: https://$url");
exit;
}
// 處理 302 重定向(常見防盜鏈:驗證 Referer 後 302 到真實地址)
if (preg_match('/Location:\s*(\S+)/i', $response, $m)) {
header('Content-Type: application/force-download');
header("Location: {$m[1]}");
exit;
}
echo "獲取失敗";
X-Forwarded-For、Client-IP 一致性。