banner

Автоматический addurl в yandex

Обновлено 15.11.2009
Написал скрипт автоматического addurl в yandex.
good.txt - файл с удачным addurl
bad.txt - файл с не удачным addurl
urls.txt - файл с урл
proxy.txt - файл с прокси,если потребуется работа через прокси
Удобно ставить на крон,можно указать задержку между добавлением ссылок.
Скачать

< ?php
 
/**
 * @author RushteR
 * @copyright 2009
 */
set_time_limit(0);
include ("func.php");
$good = fopen("good.txt", "at"); // good file
$bad = fopen("bad.txt", "at"); // bad file
//$proxy = file("proxy.txt"); // uncomment if you need a proxy
$urls = file("urls.txt");    // url file
$ackey = ""; // ac-service.info key
$patch = 'C://wamp/www/yaddr\\'; // 	full path to the folder (if windows)
$sleep = 0; 			// 	delay time
function savecap($url, $name = "savecap", $type = "jpg", $cook = "")
{
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    if (isset($proxy))
        curl_setopt($ch, CURLOPT_PROXY, $proxy[rand(0, count($proxy) - 1)]);
    curl_setopt($ch, CURLOPT_TIMEOUT, 10);
    curl_setopt($ch, CURLOPT_COOKIE, $cook);
    curl_setopt($ch, CURLOPT_USERAGENT,
        'Mozilla/4.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.7)');
    $result = curl_exec($ch);
    $fp = fopen($name . "." . $type, 'w');
    fwrite($fp, $result);
    fclose($fp);
}
$ch = curl_init();
foreach ($urls as $url) {
    curl_setopt($ch, CURLOPT_URL, 'http://webmaster.yandex.ru/addurl.xml');
    curl_setopt($ch, CURLOPT_POST, false);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    if (isset($proxy))
        curl_setopt($ch, CURLOPT_PROXY, $proxy[rand(0, count($proxy) - 1)]);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($ch, CURLOPT_AUTOREFERER, true);
    curl_setopt($ch, CURLOPT_TIMEOUT, 10);
    curl_setopt($ch, CURLOPT_HEADER, true);
    curl_setopt($ch, CURLOPT_USERAGENT,
        'Mozilla/4.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.7)');
    $resp = curl_exec($ch);
    preg_match('#name="key" type="hidden" value="(.*?)">#', $resp, $out);
    preg_match_all('#^Set-Cookie: ([^;]*)#mi', $resp, $cookies);
    $cook = implode('; ', $cookies[1]);
    savecap("http://captcha.yandex.net/image?key=$out[1]", "savecap", "jpg", $cook);
  $code = recognize($patch . "savecap.jpg", $ackey, 0);
    curl_setopt($ch, CURLOPT_URL, "http://webmaster.yandex.ru/addurl.xml");
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    if (isset($proxy))
        curl_setopt($ch, CURLOPT_PROXY, $proxy[rand(0, count($proxy) - 1)]);
    curl_setopt($ch, CURLOPT_TIMEOUT, 10);
    curl_setopt($ch, CURLOPT_HEADER, true);
    curl_setopt($ch, CURLOPT_COOKIE, $cook);
    curl_setopt($ch, CURLOPT_USERAGENT,
        'Mozilla/4.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.7)');
    curl_setopt($ch, CURLOPT_POSTFIELDS, "url=$url&key=$out[1]&rep=$code&do=add");
   $responce = curl_exec($ch);
    if (strstr($responce, "302")) {
        echo $url . "   OK<br />";
        fwrite($good, "$url - Ok\n");
        flush();
        ob_flush();
    } else {
        echo $url . "   BAD<br />";
        fwrite($bad, "$url - BAD\n");
        flush();
        ob_flush();
    }
    unset($urls[0]);
    file_put_contents("urls.txt", $urls);
    sleep($sleep);
}
 
?>


func.php

 
< ?php
function recognize($filename, $apikey, $is_verbose = true, $rtimeout = 5, $mtimeout =
    120, $is_phrase = 0, $is_regsense = 0, $is_numeric = 0, $min_len = 0, $max_len =
    0)
{
    if (!file_exists($filename)) {
        if ($is_verbose)
            echo "file $filename not found\n";
        return false;
    }
    $postdata = array('method' => 'post', 'key' => $apikey, 'file' => '@' . $filename,
        //полный путь к файлу
        'phrase' => $is_phrase, 'regsense' => $is_regsense, 'numeric' => $is_numeric,
        'min_len' => $min_len, 'max_len' => $max_len, );
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, 'http://ac-service.info/in.php');
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_TIMEOUT, 60);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata);
    $result = curl_exec($ch);
    if (curl_errno($ch)) {
        if ($is_verbose)
            echo "CURL returned error: " . curl_error($ch) . "\n";
        return false;
    }
    curl_close($ch);
    if (strpos($result, "ERROR") !== false) {
        if ($is_verbose)
            echo "server returned error: $result\n";
        return false;
    } else {
        $ex = explode("|", $result);
        $captcha_id = $ex[1];
        if ($is_verbose)
            echo "captcha sent, got captcha ID $captcha_id\n";
        $waittime = 0;
        if ($is_verbose)
            echo "waiting for $rtimeout seconds\n";
        sleep($rtimeout);
        while (true) {
            $result = file_get_contents('http://ac-service.info/res.php?key=' . $apikey .
                '&action=get&id=' . $captcha_id);
            if (strpos($result, 'ERROR') !== false) {
                if ($is_verbose)
                    echo "server returned error: $result\n";
                return false;
            }
            if ($result == "CAPCHA_NOT_READY") {
                if ($is_verbose)
                    echo "captcha is not ready yet\n";
                $waittime += $rtimeout;
                if ($waittime > $mtimeout) {
                    if ($is_verbose)
                        echo "timelimit ($mtimeout) hit\n";
                    break;
                }
                if ($is_verbose)
                    echo "waiting for $rtimeout seconds\n";
                sleep($rtimeout);
            } else {
                $ex = explode('|', $result);
                if (trim($ex[0]) == 'OK')
                    return trim($ex[1]);
            }
        }
 
        return false;
    }
}
?>
  • http://ozon-peak.ru xalturkin

    Fatal error: Call to undefined function curl_init() in Z:\home\localhost\www\ya\index.php on line 32

    вот такое выводит на денвере!

  • http://klipner.ru rushter

    нужен модуль curl

  • Kaja

    Походу больше не пашет…
    плак плак
    или это я криворучко?

  • http://klipner.ru rushter

    Попробуйте заменить
    $code = recognize($patch . «savecap.jpg», $ackey, 0);
    на
    $code = recognize($patch . «savecap.jpg», $ackey, 1);
    И скажите что пишет.

  • Kaja

    file C://www/acs\«savecapjpg» not found http://******** BAD

  • Kaja

    Я не на денвере запускаю…

  • Kaja

    Чего то меня этот путь до файла вводит в ступор…

  • http://klipner.ru rushter

    На конце должно быть два слэша(\\)
    Если путь указан через \,если через / то не надо.

  • qq

    в админке ан***апчи пишет ошибки ERROR_ZERO_CAPTCHA_FILESIZE. много

  • qq

    пару дней назад такого не было

  • qq

    хозяин блога ответь

  • http://klipner.ru rushter

    Сделайте тоже самое что я писал в 4 сообщении и скажите вы ничего не меняли в скрипте что он перестал работать ?
    ах,да вот ещё http://klipner.ru/2009/anti-captcha-v-ocherednoj-raz-smenila-domen/

  • qq

    не менял. домен сменен. он работает, то такие ошибки штук по 30 на 1000 страниц выдаёт.

  • http://klipner.ru rushter

    То есть ошибку выдаёт не всегда,а только иногда ?

  • qq

    да

  • http://klipner.ru rushter

    Пока не могу понять в чём проблема,может вы прокси используйте ?Скорей всего капча не успевает отправятся и срабатывает timeout.

  • qq

    не использую прокси. как сделать чтобы капча успевала отправиться ?

  • http://klipner.ru rushter

    curl_setopt($ch, CURLOPT_TIMEOUT, 10); везде заменить на более большее число(в сек).Сомневаюсь что проблема в этом.

  • qq

    теперь вообще на добавление урла уходит 1 секунда (раньше около 15) и в результате оказывается что ничего не добавлено. в стате антикапчи нет упоминаний что процесс шёл (раньше сразу показывались разгаданные и разгадываемые капчи).

  • qq

    никакие таймауты не менял. всё по умолчанию.

  • http://klipner.ru rushter

    Как ни странно,но у меня всё работает и я не могу сказать в чём у вас проблема.Проверьте всё ли у вас в порядке и не меняли ли вы чего-нибудь.

  • qq

    всё норм. ничего не менял. другая аддурилка робит. но мне ваша больше нравится из-за простоты.

  • http://klipner.ru rushter

    Попробуйте эту версию,только не забудьте поменять настройки.
    http://klipner.ru/wp-content/uploads/2009/10/yaddr.rar

  • qq

    я пробую добавлять в несколько потоков несколькими копиями аддурилки лежащими в разных папках. когда в 2 потока, то всё норм. когда больше, то в антикапче показывается много одинаковых капч и быстробот постоянно заходит только на первые 2 сайта, а на последующий уже нет.
    это проблема антикапчи или в скрипте что-то не стыкуется.

    очень надо решить эту проблему.

    было бы хорошо, если бы аддурилка стала многопоточной.

  • qq

    работаю с той версией что была. ту что вы выложили 5 октября, не юзаю.

  • qq

    и ещё в сколько потоков ни делай аддурилка пишет что всё ОК . видимо, ошибается

  • qq

    АААА !!! я просто ступил ))) всё норм теперь.

    удали, пожалуйста, все мои посты за 7 октября ! обязательно !

  • hiemoRoumejes

    Я люблю когда пишут умные вещи, и постоянно читаю ваш блог (klipner.ru), но тут я с вами не согласен

  • 123

    не добавляет после изменений в аддурилке. пофиксить можешь или другое решение искать ?

  • 123

    капчи не приходят на антикапчу

  • http://klipner.ru rushter

    Сегодня сделаю новую версию.

  • 123

    спасибо ! жду !

  • mongolor

    А можете сделать полуавтоматическую аддурилку?

  • Анна

    Да, сделайте плиз. полуавтоматическую адурилку, т.к очень нужна!!!

  • http://buzzman.ru Никита Buzzman

    Я так понимаю скрипт уже не актуален и не работает, да?

  • http://klipner.ru rushter

    Не могу сказать, проверьте сами.