Как отловить редирект?

Статус
В этой теме нельзя размещать новые ответы.
Смотря чем отлавиливать, к примеру скриптик на php написать, сделать запрос через curl, с параметром, чтобы по редиректам не ходил и вытащить требуемый урл из заголовка ответа сервера.
 
Да вот именно курлом, из заголовка , только как? :ah:
 
делаешь запрос и смотришь хиадер.
HTTP/1.1 302 Found
Server: nginx/0.6.29
Date: Fri, 21 Aug 2009 08:01:52 GMT
Content-Type: text/html; charset=Windows-1251
Connection: close
X-Powered-By: PHP/4.4.4-8+etch6
Set-Cookie: _TEST_=1; path=/; domain=.mail.ru
Location: Для просмотра ссылки Войди или Зарегистрируйся
Content-Length: 1

Тебя интересует только Location

не забудь в курле прописать curl_setopt($curl, CURLOPT_FOLLOWLOCATION, false)); ;)
 
делаешь запрос и смотришь хиадер.
Тебя интересует только Location
не забудь в курле прописать curl_setopt($curl, CURLOPT_FOLLOWLOCATION, false)); ;)

Заголовок получил , а как из него выдрать нужную строчку ?

PHP:
$unique_s = 'Location: '; 
$unique_e = ' ';


preg_match('/'.preg_quote($unique_s,'/').'(.*)'.preg_quote($unique_e, '/').'/Us', $ret2, $m100);

echo "ссылка = $m100[1]<br>"; //ссылка

так не получается :(
 
PHP:
preg_match('%Location: (.*?)%i', $ret2, $match);
echo($match[1]);
 
PHP:
<?php

$ch = curl_init(); 

$ret = curl_setopt($ch, CURLOPT_URL,            "http://soft.mail.ru/Download.php?ver=3272");
$ret = curl_setopt($ch, CURLOPT_HEADER,         1);
$ret = curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false);

$ret2=curl_exec ($ch);

preg_match('%Location: (.*?)%i', $ret2, $match);

echo($match[1]); 

?>



не хочет выводить отдельно урл ( Что не так?
 
PHP:
curl_setopt($ch, CURLINFO_HEADER_OUT, true);
curl_exec($ch);
var_dump(curl_getinfo($ch,CURLINFO_HEADER_OUT));
 
PHP:
<?php 

$ch = curl_init("http://soft.mail.ru/Download.php?ver=3272");  
curl_setopt($ch, CURLOPT_HEADER,         1); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$ret2 = curl_exec ($ch); 
preg_match('%Location: (.+)%i', $ret2, $match);
echo($match[1]);
?>
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху