Curl и Referer

Discussion in 'PHP' started by ++Norton++, 15 Mar 2010.

  1. ++Norton++

    ++Norton++ Elder - Старейшина

    Joined:
    20 Nov 2006
    Messages:
    167
    Likes Received:
    39
    Reputations:
    0
    Вот есть такой скрипт:
    Code:
    <?
    $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 это:
    Code:
    <html><head></head>
    <script>alert(document.referrer);</script>
    <body></body></html>
    
    Но при срабатывании скрипта показывается правильный реферер, а не тот, который передавал (в данном случае refer. ru).
    Что не так? С курлом работаю совсем недавно, так что мог где-то напортачить.
    Заранее спасибо!
     
  2. b3

    b3 Banned

    Joined:
    5 Dec 2004
    Messages:
    2,174
    Likes Received:
    1,157
    Reputations:
    202
    Что тут ?
    Если вылажуеш код так уже весь хотябы.
     
  3. попугай

    попугай Elder - Старейшина

    Joined:
    15 Jan 2008
    Messages:
    1,520
    Likes Received:
    401
    Reputations:
    196
    потому что яваскриптовый document.referrer немного отличается от переменной окружения apache (HTTP_REFERER). Ява-скрипт сам его из браузера достает. Как то так.

    В твоем случае - это страница, где запущен твой php-скрипт
     
    1 person likes this.
  4. ++Norton++

    ++Norton++ Elder - Старейшина

    Joined:
    20 Nov 2006
    Messages:
    167
    Likes Received:
    39
    Reputations:
    0
    Переменные $header и $agent передаются пустые. Я сначала хотел в них записать заголовок и агент, но как-то до этого еще не дошло.
    Т.е. получается что для JavaScript другой (подставной) реферер передать не получится?
     
  5. WNZRS

    WNZRS Member

    Joined:
    3 Sep 2009
    Messages:
    294
    Likes Received:
    52
    Reputations:
    1
    Curl не поддерживает js (если русским языком), пиши свой обработчик js.
    Если ты хочешь какой-то счётчик накрутить или что-то подобное, то просто передай ему нужный реферрер вместо document.referrer
     
    1 person likes this.