PDA

Просмотр полной версии : Curl и Referer


++Norton++
15.03.2010, 11:21
Вот есть такой скрипт:

<?
$c = curl_init();

@curl_setopt($c, CURLOPT_URL, "http://test.ru/page.html");
@curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
@curl_setopt ( $c , CURLOPT_REFERER , "http://refer.ru" );
@curl_setopt ( $c , CURLOPT_VERBOSE , 1 );
@curl_setopt ( $c , CURLOPT_HEADER , 1 );
@curl_setopt ( $c , CURLOPT_USERAGENT , $agent );
@curl_setopt ( $c , CURLOPT_HTTPHEADER , $header );
@curl_setopt ( $c , CURLOPT_FOLLOWLOCATION , 1 );
@curl_setopt ( $c , CURLOPT_SSL_VERIFYPEER, 0 );
@curl_setopt ( $c , CURLOPT_SSL_VERIFYHOST, 0 );
@curl_setopt ( $c , CURLOPT_COOKIEJAR , $cookie_file );
@curl_setopt ( $c , CURLOPT_COOKIEFILE , $cookie_file );

$res = @curl_exec($h);
curl_close($с);

echo $res;
?>

На странице page.html это:

<html><head></head>
<script>alert(document.referrer);</script>
<body></body></html>

Но при срабатывании скрипта показывается правильный реферер, а не тот, который передавал (в данном случае refer. ru).
Что не так? С курлом работаю совсем недавно, так что мог где-то напортачить.
Заранее спасибо!

b3
15.03.2010, 13:04
Что тут ?
@curl_setopt ( $c , CURLOPT_HTTPHEADER , $header );
Если вылажуеш код так уже весь хотябы.

попугай
15.03.2010, 14:32
потому что яваскриптовый document.referrer немного отличается от переменной окружения apache (HTTP_REFERER). Ява-скрипт сам его из браузера достает. Как то так.

В твоем случае - это страница, где запущен твой php-скрипт

++Norton++
15.03.2010, 21:37
Переменные $header и $agent передаются пустые. Я сначала хотел в них записать заголовок и агент, но как-то до этого еще не дошло.
Т.е. получается что для JavaScript другой (подставной) реферер передать не получится?

WNZRS
15.03.2010, 22:05
Curl не поддерживает js (если русским языком), пиши свой обработчик js.
Если ты хочешь какой-то счётчик накрутить или что-то подобное, то просто передай ему нужный реферрер вместо document.referrer

rushter
15.03.2010, 22:20
Удали все подавления ошибок, они только с толку будут сбивать.