我正在尝试从没有显示真实文件名的网址获取真实文件网址。
我的网址就像这样http://video.premium.com/file/ee7bfec921cfbe16e6f08e282992b99670a00ca3/3
如果我可以获得真正的文件网址,我可以通过网络播放器直接在线直播,但它需要播放.mp4或其他文件格式,只有网址http://video.premium.com/file/ee7bfec921cfbe16e6f08e282992b99670a00ca3/3
无效。
但是当我使用VLC媒体播放器打开URL时,它可以工作。不能与在线Flash或其他玩家一起使用..
这甚至可能吗?无论如何要做到这一点?
答案 0 :(得分:0)
使用 curl ,使用此方法:它会在重定向之后直到找到端点。在包含的代码中,我使用goo.gl将url缩短为rando图像。您将看到输出是原始链接(它将输出任意数量的重定向及其URL),并最终重定向到实际文件。我想这就是你要找的东西。我最初没有写这篇文章,但是在不久前的某个地方找到它,并在需要时再次重复使用它。它似乎很适合很多地方。很高兴传递它。我认为它可能有助于实现您的目标。
<?php
function follow_redirect($url){
$redirect_url = null;
if(function_exists("curl_init")){
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
}
else{
$url_parts = parse_url($url);
$sock = fsockopen($url_parts['host'], (isset($url_parts['port']) ? (int)$url_parts['port'] : 80));
$request = "HEAD " . $url_parts['path'] . (isset($url_parts['query']) ? '?'.$url_parts['query'] : '') . " HTTP/1.1\r\n";
$request .= 'Host: ' . $url_parts['host'] . "\r\n";
$request .= "Connection: Close\r\n\r\n";
fwrite($sock, $request);
$response = fread($sock, 2048);
fclose($sock);
}
$header = "Location: ";
$pos = strpos($response, $header);
if($pos === false){
return false;
}
else{
$pos += strlen($header);
$redirect_url = substr($response, $pos, strpos($response, "\r\n", $pos)-$pos);
return $redirect_url;
}
}
$url = 'http://goo.gl/66VJB';
echo '<ol>';
while(($newurl = follow_redirect($url)) !== false){
echo '<li>', $url, '</li>';
$url = $newurl;
}
echo '</ol>';
echo '<a href="', $url, '">', $url, '</a>';
?>
输出: