Скрыть ip сервера скрипта!

Тема в разделе "PHP", создана пользователем Хомячок, 28 сен 2010.

Статус темы:
Закрыта.
Модераторы: latteo
  1. Хомячок

    Хомячок

    Регистр.:
    10 апр 2008
    Сообщения:
    184
    Симпатии:
    103
    Написал скрипт для клика по ссылке, а в статистике отображается ip сервера, на котором скрипт, а не пользователя, перешедшего по ссылке. Как сделать, чтоб в статистике был ip пользователя, перешедшего по ссылке (запустившего скрипт). Вот код скрипта:

    PHP:
    <?php

    $proxy 
    $_SERVER['REMOTE_ADDR'];

    //интервал задержки перед кликом в сек
    $time mt_rand(10,20);

    mt_srand(time()+(double)microtime()*$time);

    //выбор id ссылки для клика
    $link_id mt_rand(0,2);

        
    //ссылка на флеш баннер, сгененрированная с рефералом
        
    $link "http://r1.wmlink.ru/?id=77854";
        
    $reffer "http://softhot.ru/humor/33963-studija-95-kvartal.-novyjj-god-2010-2009tvrip.html";
        
    // инициализация сеанса
    $ch curl_init();

    // установка URL и других необходимых параметров
        
    curl_setopt($chCURLOPT_REFERER$reffer);
        
    curl_setopt($chCURLOPT_URL$link);
        
    curl_setopt($chCURLOPT_RETURNTRANSFER1);
        
    curl_setopt($chCURLOPT_HTTPHEADER,array('X-Forwarded-For: $proxy'));
        
    curl_setopt($chCURLOPT_FOLLOWLOCATION1); 
        
    curl_setopt($chCURLOPT_SSL_VERIFYPEER0); 
        
    curl_setopt($chCURLOPT_COOKIEJAR,'/tmp/cookies.txt'); 
        
    curl_setopt($chCURLOPT_COOKIEFILE,'/tmp/cookies.txt'); 
        
    curl_setopt($chCURLOPT_USERAGENT$_SERVER['HTTP_USER_AGENT']);
        
    curl_setopt($ch,CURLOPT_VERBOSE,1);
        
        
    // загрузка страницы и выдача её браузеру
        
    $site curl_exec($ch);
        
    //выделение рекламных ссылок
        
    preg_match_all("'a href=\"(.*?)\"'si",$site,$matches);
        
    $adv_links array_slice($matches[1],1);
        
    //выделение rnd
        
    preg_match_all("'rnd=(.*?)\''si",$site,$matches);
        
    $rnd $matches[1];
        
        for (
    $i=0;$i<count($adv_links);$i++)
        {
            
    $adv_links[$i].="?rnd=".$rnd[0];
        }

    sleep($time);

    //переход по найденной ссылке по истечению интервала
        
    $get_link $adv_links[$link_id];
        
    $get_reffer $reffer;
        
    // инициализация сеанса
    $ch curl_init();

    // установка URL и других необходимых параметров
        
    curl_setopt($chCURLOPT_REFERER$get_reffer);
        
    curl_setopt($chCURLOPT_URL$get_link);
        
    curl_setopt($chCURLOPT_RETURNTRANSFER0);
        
    curl_setopt($chCURLOPT_HTTPHEADER,array('X-Forwarded-For: $proxy'));
        
    curl_setopt($chCURLOPT_FOLLOWLOCATION1); 
        
    curl_setopt($chCURLOPT_SSL_VERIFYPEER0); 
        
    curl_setopt($chCURLOPT_COOKIEJAR,'/tmp/cookies.txt'); 
        
    curl_setopt($chCURLOPT_COOKIEFILE,'/tmp/cookies.txt'); 
        
    curl_setopt($chCURLOPT_USERAGENT$_SERVER['HTTP_USER_AGENT']);
        
    curl_setopt($ch,CURLOPT_VERBOSE,1);
        
        
    // загрузка страницы и выдача её браузеру
        
    curl_exec($ch);

    ?>
     
    krast90 нравится это.
  2. ZCFD

    ZCFD

    Регистр.:
    16 янв 2008
    Сообщения:
    989
    Симпатии:
    437
    никак
    решай задачу средствами js

    или прокси в скрипт
     
  3. Хомячок

    Хомячок

    Регистр.:
    10 апр 2008
    Сообщения:
    184
    Симпатии:
    103
    Я на javascript делал типа после истечения времени document.location = url, но в статистике опять же сервер был! а как еще можно?
     
    krast90 нравится это.
  4. ZCFD

    ZCFD

    Регистр.:
    16 янв 2008
    Сообщения:
    989
    Симпатии:
    437
    Код:
     document.location = url, но в статистике опять же сервер был!
    полный код в студию

    с какого ip был запрос к баннеру такой ip и отобъестся в статистике

    если ты сделал запрос из своего скрипта, и потомо хз куда средиректил пользователя - отобъется адрес твоего сервера

    Как вариант - если запрос строго GET - парсишь своим скриптом $get_link и на странице которую отдаешь пользователю создаешь картинку с размером 1x1 и адресом который у тебя в $get_link

    Юзер картинку не увидит, а если картинки у него включены -- его браузер отправит запрос на сервак с баннером

    как при рефспаме

    Добавлено через 42 секунды
    при этом реферером будет та страница куда вставишь код картинки
     
  5. Хомячок

    Хомячок

    Регистр.:
    10 апр 2008
    Сообщения:
    184
    Симпатии:
    103
    Вот полный код с javacript
    PHP:
    <?php

    //проверка, есть ли реферал
    //if ($_SERVER['HTTP_REFERER'])
    //{
    //    $ref = escape($_SERVER['HTTP_REFERER']);
    //    $reffer = $_SERVER['HTTP_REFERER'];

    //require "dBug.php";

    $action $_GET['action'];
    $proxy $_SERVER['REMOTE_ADDR'];

    if (!
    $action)
    {
    //интервал задержки перед кликом в сек
    $time mt_rand(12,20);

    mt_srand(time()+(double)microtime()*$time);

    //выбор id ссылки для клика
    $link_id mt_rand(0,2);

    //интервал задержки перед кликом в милисек.
    $timer $time*1000;


        
    //ссылка на флеш баннер, сгененрированная с рефералом
        
    $link "http://r1.wmlink.ru/?id=77854";
        
    $reffer "http://softhot.ru/humor/33963-studija-95-kvartal.-novyjj-god-2010-2009tvrip.html";
        
    // инициализация сеанса
    $ch curl_init();

    // установка URL и других необходимых параметров
        
    curl_setopt($chCURLOPT_REFERER$reffer);
        
    curl_setopt($chCURLOPT_URL$link);
        
    curl_setopt($chCURLOPT_RETURNTRANSFER1);
        
    curl_setopt($chCURLOPT_HTTPHEADER,array('X-Forwarded-For: $proxy'));
        
    curl_setopt($chCURLOPT_FOLLOWLOCATION1); 
        
    curl_setopt($chCURLOPT_SSL_VERIFYPEER0); 
        
    curl_setopt($chCURLOPT_COOKIEJAR,'/tmp/cookies.txt'); 
        
    curl_setopt($chCURLOPT_COOKIEFILE,'/tmp/cookies.txt'); 
        
    curl_setopt($chCURLOPT_USERAGENT$_SERVER['HTTP_USER_AGENT']);
        
    curl_setopt($ch,CURLOPT_VERBOSE,1);
        
        
    // загрузка страницы и выдача её браузеру
        
    $site curl_exec($ch);
        
    //выделение рекламных ссылок
        
    preg_match_all("'a href=\"(.*?)\"'si",$site,$matches);
        
    $adv_links array_slice($matches[1],1);
        
    //выделение rnd
        
    preg_match_all("'rnd=(.*?)\''si",$site,$matches);
        
    $rnd $matches[1];
        
        for (
    $i=0;$i<count($adv_links);$i++)
        {
            
    $adv_links[$i].="?rnd=".$rnd[0];
        }
        
    //    new dBug($adv_links[$link_id]);
        
        //new dBug($adv_links);
        
    echo "Ждите $time сек. ...<br>";

    echo <<<HTML
    <script type="text/javascript" language="javascript">

        function runOnce()
        {
            document.location.href= "wmlink.php?action=go&ref=
    $reffer&link=$adv_links[$link_id]";
        }

        // интервал времени задаётся в милисекундах, 
        // т.е. значение 3000 соответствует 3 секундам 
        var timerOnce = window.setTimeout("runOnce();", 
    {$timer});

    </script>
    HTML;
    }

    //переход по найденной ссылке по истечению интервала
    if ($action == "go")
    {
        
    $get_link $_GET['link'];
        
    $get_reffer $_GET['ref'];
        
    // инициализация сеанса
    $ch curl_init();

    // установка URL и других необходимых параметров
        
    curl_setopt($chCURLOPT_REFERER$get_reffer);
        
    curl_setopt($chCURLOPT_URL$get_link);
        
    curl_setopt($chCURLOPT_RETURNTRANSFER0);
        
    curl_setopt($chCURLOPT_HTTPHEADER,array('X-Forwarded-For: $proxy'));
        
    curl_setopt($chCURLOPT_FOLLOWLOCATION1); 
        
    curl_setopt($chCURLOPT_SSL_VERIFYPEER0); 
        
    curl_setopt($chCURLOPT_COOKIEJAR,'/tmp/cookies.txt'); 
        
    curl_setopt($chCURLOPT_COOKIEFILE,'/tmp/cookies.txt'); 
        
    curl_setopt($chCURLOPT_USERAGENT$_SERVER['HTTP_USER_AGENT']);
        
    curl_setopt($ch,CURLOPT_VERBOSE,1);
        
        
    // загрузка страницы и выдача её браузеру
        
    curl_exec($ch);
        
    }

    ?>
    P.S. Замутил сейчас через прокси. В статистике:

    Походу не я первый, кто так делает! :D
     
    krast90 нравится это.
  6. ZCFD

    ZCFD

    Регистр.:
    16 янв 2008
    Сообщения:
    989
    Симпатии:
    437
    ну и каки боком тут будет ip посетителя?

    если X-Forwarded-For не помогает - ищи прокси, или попробуй сделать как я написал выше с картинкой

    сейчас у тебя запрос идет от сервера, если прокатит с картинкой - запрос будет идти от браузера пользователя
     
  7. Хомячок

    Хомячок

    Регистр.:
    10 апр 2008
    Сообщения:
    184
    Симпатии:
    103
    Т.е. поидее можно в iframe на моем сайте можно подгружать скрипт, который будет выдавать картинку 1х1 px, чтобы передать нужный реферер. Только задержку перед кликом придется на javascript все равно придумывать. Самый простой вариант конечно через прокси, только их придется проверять видно на работоспособность перед запуском в самом скрипте.
     
    krast90 нравится это.
  8. ZCFD

    ZCFD

    Регистр.:
    16 янв 2008
    Сообщения:
    989
    Симпатии:
    437
    зачем iframe?

    PHP:
    <?php 

    //проверка, есть ли реферал 
    //if ($_SERVER['HTTP_REFERER']) 
    //{ 
    //    $ref = escape($_SERVER['HTTP_REFERER']); 
    //    $reffer = $_SERVER['HTTP_REFERER']; 

    //require "dBug.php"; 

    $action $_GET['action']; 
    $proxy $_SERVER['REMOTE_ADDR']; 

    if (!
    $action

    //интервал задержки перед кликом в сек 
    $time mt_rand(12,20); 

    mt_srand(time()+(double)microtime()*$time); 

    //выбор id ссылки для клика 
    $link_id mt_rand(0,2); 

    //интервал задержки перед кликом в милисек. 
    $timer $time*1000


        
    //ссылка на флеш баннер, сгененрированная с рефералом 
        
    $link "http://r1.wmlink.ru/?id=77854"
        
    $reffer "http://softhot.ru/humor/33963-studija-95-kvartal.-novyjj-god-2010-2009tvrip.html"
         
    // инициализация сеанса 
    $ch curl_init(); 

    // установка URL и других необходимых параметров 
        
    curl_setopt($chCURLOPT_REFERER$reffer); 
        
    curl_setopt($chCURLOPT_URL$link); 
        
    curl_setopt($chCURLOPT_RETURNTRANSFER1); 
        
    curl_setopt($chCURLOPT_HTTPHEADER,array('X-Forwarded-For: $proxy')); 
        
    curl_setopt($chCURLOPT_FOLLOWLOCATION1);  
        
    curl_setopt($chCURLOPT_SSL_VERIFYPEER0);  
        
    curl_setopt($chCURLOPT_COOKIEJAR,'/tmp/cookies.txt');  
        
    curl_setopt($chCURLOPT_COOKIEFILE,'/tmp/cookies.txt');  
        
    curl_setopt($chCURLOPT_USERAGENT$_SERVER['HTTP_USER_AGENT']); 
        
    curl_setopt($ch,CURLOPT_VERBOSE,1); 
         
        
    // загрузка страницы и выдача её браузеру 
        
    $site curl_exec($ch); 
         
    //выделение рекламных ссылок 
        
    preg_match_all("'a href=\"(.*?)\"'si",$site,$matches); 
        
    $adv_links array_slice($matches[1],1); 
         
    //выделение rnd 
        
    preg_match_all("'rnd=(.*?)\''si",$site,$matches); 
        
    $rnd $matches[1]; 
         
        for (
    $i=0;$i<count($adv_links);$i++) 
        { 
            
    $adv_links[$i].="?rnd=".$rnd[0]; 
        } 
         
    // я так понимаю в $adv_links массив ссылок куда может вести баннер?
         
    echo "<img src='".$adv_links[rand(0,count($adv_links)-1)]."' width='1px' height='1px' />";
    ну или рисуй эти самые теги img из js c задержкой

    - onload() - запустил таймер - вписал тег картинки - таймер - тег и т.п.

    если тебе нужна задержка
     
  9. Хомячок

    Хомячок

    Регистр.:
    10 апр 2008
    Сообщения:
    184
    Симпатии:
    103
    Просто при такой закрузке ссылки в изображении referer будет ссылка со скриптом, а referer там проверяется.
     
    krast90 нравится это.
  10. ZCFD

    ZCFD

    Регистр.:
    16 янв 2008
    Сообщения:
    989
    Симпатии:
    437
    естественно

    я же об этом писал -- встрой этот скрипт в твою страницу

    чистая накрутка не выйдет, но CTR накрутишь

    как вариант - лешь трафик с доров каки-нибудь, тут по деньгам смотреть надо
     
Статус темы:
Закрыта.