Oczywiście trzeba pobrać nagłówki.
Nie wszystkie strony/aplikacje/serwery tolerują żądanie HEAD, a takie jest wysyłane przy ustawieniu CURLOPT_NOBODY.
Można wykorzystać jednak fsockopen, znalazłem przykładową funkcję:
function HTTP_Get_Header( $url ) {
$get_timeout = 40;
if( !isset($s_Complete["scheme"] ) ) {
$s_Complete["host"] = $s_Complete["path"];
$s_Complete["path"] = '';
}
$s_Host = $s_Complete["host"];
if( @$s_Complete["path"] == "" )
$s_Complete["path"] = "/?";
$s_URI = $s_Complete["path"];
if( @$s_Complete["query"] != "" )
$s_URI .= '?'.$s_Complete['query'];
if( @$s_Complete["port"] != "" )
$s_Port = $s_Complete["port"];
else
$s_Port = 80;
$request = "GET $s_URI HTTP/1.0\r\n";
$request .= "Accept: */*\r\n";
$request .= "Cache-Control: no-cache\r\n";
$request .= "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.2) Gecko/2008090514 Firefox/3.0.2\r\n";
$request .= "Host: $s_Host\r\n";
$request .= "Connection: Close\r\n";
$request .= "\r\n";
$fp = @fsockopen( $s_Host, $s_Port, $errno, $errstr, 30
); {
$query_timeout = 30;
$line = "";
$header = "";
while( !($line == "\r\n") && !feof($fp) && !$status['timed_out'] ) {
$line = fgets($fp, 4096
); $header .= $line;
$diff = time() - $loop_time; if( $diff > $get_timeout )
break;
break;
}
return $header;
}
return false;
}
Przykład wywołania:
echo HTTP_Get_Header
('http://rs1l3.rapidshare.com/files/407970280/RapidShareManager2WindowsSetup.exe');
Z wyciągnięciem potrzebnych danych myślę że już sobie poradzisz