полуавтоматическая аддурилка

Тема в разделе "PHP", создана пользователем Mongolor, 14 ноя 2009.

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

    Mongolor

    Регистр.:
    5 дек 2007
    Сообщения:
    157
    Симпатии:
    29
    помогите с кодом, немогу понять что-где-когда.
    Исходник от http://hitroblog.com/dorvei/redbutton-yandex-addurl.html
    PHP:
    <?php
        $link
    ='http://shdbfhdfhsdbf.com';
        
    $data geturl('http://webmaster.yandex.ru/addurl.xml');
        
    $key cut_str($data'type="hidden" value="','"');
        
    $captcha geturl('http://captcha.yandex.net/image?key='.$key);
        
    file_put_contents('captcha.jpg'$captcha);
    if(
    $_POST['captcha_value'])
        {
        
    $postdata = array(
            
    'url' => $link,
            
    'key' => $key,
            
    'rep' => $_POST['captcha_value']
        );
        
    $cap geturl("http://webmaster.yandex.ru/addurl.xml",$postdata); 
        if (
    strpos($cap'успешно добавлен')){
            echo 
    "<div style='clear: left;' class=spam>Зафигачили!</div>";
        }elseif (
    strpos($cap'уже проиндексирован')){
            echo 
    "<div style='clear: left;' class=spam>Уже в индексе</div>";
        }elseif (
    strpos($cap'является зеркалом')){
            echo 
    "<div style='clear: left;' class=spam>Сайт - зеркало</div>";
        }elseif (
    strpos($cap'неверно указали цифровой код')){
            echo 
    "<div style='clear: left;' class=spam>Шеф, траблы с капчей!</div>";
        }elseif (
    strpos($cap'robots.txt')){
            echo 
    "<div style='clear: left;' class=spam>Траблы с роботс.тхт</div>";
        }elseif (
    strpos($cap'отличный от 200')){
            echo 
    "<div style='clear: left;' class=spam>Сервер Яндекса лежит, попробуйте позже</div>";
        }elseif (
    strpos($cap'запрещен к индексированию')){
            echo 
    "<div style='clear: left;' class=spam>Ой, а сайт-то в бане!</div>";
        }else{
            echo 
    "<div style='clear: left;' class=spam>Произошла какая-то херня, в результате которой скрипт завершает работу</div>";
            echo 
    $cap;
            exit;
        }
        }
           else
           {
           }
        function 
    cut_str($str$left$right)
        {
            
    $str substr(stristr($str$left), strlen($left));
            
    $leftLen strlen(stristr($str$right));
            
    $leftLen $leftLen ? -($leftLen) : strlen($str);
            
    $str substr($str0$leftLen);
            return 
    $str;
        }
        function 
    geturl($url,$postdata=0)
        {
            
    $poststr="";
            if (
    $postdata)
            while (list(
    $name,$value)=each($postdata)){
                if (
    strlen($poststr)>0)
                    
    $poststr.="&";
                
    $poststr.=$name."=".urlencode($value);
            }
            
    $ch curl_init();
            
    curl_setopt($chCURLOPT_URL$url);        
            if (
    $postdata){
                
    curl_setopt($chCURLOPT_POST1);
                
    curl_setopt($chCURLOPT_POSTFIELDS$poststr);
            }
            
    curl_setopt($chCURLOPT_USERAGENT"Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.4) Gecko/2008102920 AdCentriaIM/1.7 Firefox/3.0.4");
            
    curl_setopt($chCURLOPT_RETURNTRANSFER1);
            
    $res curl_exec($ch);
            
    curl_close($ch);
            return 
    $res;
        }
    ?>
        <img src="captcha.jpg">
            <form action="index.php" method="POST">
                <input value="" name="captcha_value" size="15">
                <input type="submit" value="Добавить">
            </form>
     
    stealthdebuger нравится это.
  2. stealthdebuger

    stealthdebuger Механик

    Administrator
    Регистр.:
    25 авг 2008
    Сообщения:
    624
    Симпатии:
    1.379
    Что именно вы хотите понять? Код довольно простой, поэтому без ваших комментариев сложно понять в чем у вас возникли затруднения.
     
  3. LEXAlForpostl

    LEXAlForpostl

    Регистр.:
    21 май 2008
    Сообщения:
    708
    Симпатии:
    225
    попробовал зааддурилить с денвера, у меня постоянно пишет
    Сервер Яндекса лежит, попробуйте позже
    Уже часа 2.
     
  4. Mongolor

    Mongolor

    Регистр.:
    5 дек 2007
    Сообщения:
    157
    Симпатии:
    29
    Вообщем вроде заработало, но с косяками.
    Урл вида livejournal.com и www.liv ejournal.com обрабатывает корректно, а на домен blog_name.livejournal.com вообще ноль эмоций, яндекс даже не комментирует никакой ошибкой добавление такого домена. Однако без скрипта все это дело работает.
    Подскажите где я не прав?
    Собственно почти рабочий скрипт
    PHP:
    <?php
    set_time_limit
    (0);
    //url страницы с формой
    $url_addurl 'http://webmaster.yandex.ru/addurl.xml';
    //файлик с URLами
    $urls file('url.txt');
    //Посчитали количество урлов
    $count_urls count($urls)-1;
    if (
    count($urls) == 0) { echo "Урлов больше нету"; }
    else { 
    echo 
    "Урлов еще: ".$count_urls."<br>"
    echo 
    "Ссылка: ".$urls[0]."<br>";
    $link $urls[0];             //получили адрес
        
    if ($_POST['rep'] && $_POST['url'] && $_POST['key'] && $_POST['do']) {
        
    $link $_POST['url'];
        
    $key $_POST['key'];
        
    $rep $_POST['rep'];
        
    $do $_POST['do'];
            
    $postdata = array(
            
    'url' => $link,
            
    'rep' => $rep,
            
    'key' => $key,
            
    'do' => $do
        
    );
        
    $cap geturl($url_addurl,$postdata); //спамим в яндекс
            //пишем лог
        
    if (strpos($cap'успешно добавлен')){
            
    $log 'ok';
        }elseif (
    strpos($cap'уже проиндексирован')){
            
    $log 'в индексе';
        }elseif (
    strpos($cap'некорректный URL')){
            
    $log 'некорректный url';
        }elseif (
    strpos($cap'является зеркалом')){
            
    $log 'зеркало';
        }elseif (
    strpos($cap'неверно указали цифровой код')){
            
    $log 'Captcha error';
        }elseif (
    strpos($cap'robots.txt.')){
            
    $log 'запрещен в файле robots.txt';
        }elseif (
    strpos($cap'Сервер недоступен')){
            
    $log '404';
        }elseif (
    strpos($cap'запрещен к индексированию')){
            
    $log 'ban';        
        }else{        
            
    $log 'some XZ error';
            echo 
    $log;
            echo 
    $cap;
            exit;
        }
        for(
    $i=0;$i<sizeof($urls);$i++)
        if(
    $i==0) unset($urls[$i]); 
        
    $fp=fopen("url.txt","w"); 
        
    fputs($fp,implode("",$urls)); 
        
    fclose($fp);
        
    $flog=fopen("log.txt","a+"); 
        
    fputs($flog$link."    ".$log."\n"); 
        
    fclose($flog);
            
    //echo $log;
            
    $index_location "Location: index.php?no_cache=".rand(000000000001999999999999);
            
    Header($index_location);
            exit;
        }
        else {
        
    $data geturl($url_addurl);
        
    $key cut_str($data'name="key" type="hidden" value="','"'); //получили идентификатор сеанса
        
    $captcha geturl('http://captcha.yandex.net/image?key='.$key); //слили капчу
        
    file_put_contents('captcha.jpg'$captcha);
        echo 
    '
            <form action="index.php" method="POST">
                <input value="'
    .$link.'" name="url" size="60"><br>
                <input value="'
    .$key.'" name="key" size="60"><br><br>
                <img src="captcha.jpg"><br>
                <input value="" name="rep" size="15"><br>
                <input value="add" name="do" type="hidden" size="15">
                <input type="submit" value="Добавить">
            </form>
            '
    ;
        exit;
        }
    }
        
    //возвращает то, что между $left и $right в $str
        
    function cut_str($str$left$right)
        {
            
    $str substr(stristr($str$left), strlen($left));
            
    $leftLen strlen(stristr($str$right));
            
    $leftLen $leftLen ? -($leftLen) : strlen($str);
            
    $str substr($str0$leftLen);
            return 
    $str;
        }
        function 
    geturl($url,$postdata=0)
        {
            
    $poststr="";    
            if (
    $postdata)    
            while (list(
    $name,$value)=each($postdata)){
                if (
    strlen($poststr)>0
                    
    $poststr.="&";
                
    $poststr.=$name."=".urlencode($value);
            }
            
    // инициализация сеанса
            
    $ch curl_init();        
            
    curl_setopt($chCURLOPT_URL$url);        
            if (
    $postdata){
                
    curl_setopt($chCURLOPT_POST1);
                
    curl_setopt($chCURLOPT_POSTFIELDS$poststr);            
            }        
            
    curl_setopt($chCURLOPT_USERAGENT'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3');
            
    curl_setopt($chCURLOPT_RETURNTRANSFER1);
            
    $res curl_exec($ch);
            
    curl_close($ch);        
            return 
    $res;
        }
    ?>
     
  5. Mongolor

    Mongolor

    Регистр.:
    5 дек 2007
    Сообщения:
    157
    Симпатии:
    29
    вопрос все еще актуален, проблема с некотороми доменами и все поддомены дают непонятную ошибку.
     
Статус темы:
Закрыта.