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

Статус
В этой теме нельзя размещать новые ответы.

Jed7777

Постоялец
Регистрация
17 Июл 2008
Сообщения
136
Реакции
120
Написал скрипт, но он не работает.
Дело в том что он загружает в антикапчу одно и то же изображение, скорее всего что то в цикле.
Может кто подскажет как тут до ума довести?
Для начала раоты не забудьте втавить значение в $apikey.
Код:
 
Интересный проект аль пока глянуть не могу а там через прокси есть возможность работать?
 
пока скрипт не рабочий, можете воспольоватся готовыми продуктами
Декстопный вариант от пухового
Или, автора не известен
PHP:
<?php
set_time_limit(0);
//ключь anti-captcha
$anti_captcha_key = '********';
//файлик с URLами
$urls = file('url.txt');
$i=1;


foreach ($urls as $link){ //получили адрес
$nm = 0;
do {
    $data = geturl('http://webmaster.yandex.ru/addurl.xml');
    $key = cut_str($data, 'name="key" type="hidden" value="','"'); //получили идентификатор сеанса
	$captcha = geturl('http://captcha.yandex.net/image?key='.$key); //слили капчу


	$postdata = array(
		'method'    => 'base64',
		'key'       => $anti_captcha_key,
		'body'      => base64_encode($captcha),
		'ext' 		=> 'jpg',
		'phrase'	=> 0,
		'regsense'	=> 0,
		'numeric'	=> 0,
		'min_len'	=> 0,
		'max_len'	=> 0
	);
	$rev = geturl("http://antigate.com/in.php",$postdata); //отдали капчу антикапче

	if (substr($rev,0,2)=='OK'){
		$anti_captcha_id = substr($rev,3);
	}else{
		echo "Upload ERROR";
		exit;
	}


	$postdata = array(
	    'key'       => $anti_captcha_key,
	    'action'    => 'get',
	    'id' 	=> $anti_captcha_id
	);

    $cap = "CAPCHA_NOT_READY";
    while ($cap=="CAPCHA_NOT_READY") {
        sleep(20); //подождем 20сек. пока ее разгадают
        $cap = geturl("http://antigate.com/res.php",$postdata); //ответ от антикапчи
    }


	if (substr($cap,0,2)=='OK'){
		$captcha_value = substr($cap,3);
	}else{
		echo $cap;
		exit;
	}

	$postdata = array(
		'url' => $link,
		'key' => $key,
		'rep' => $captcha_value
	);

    $cap = geturl("http://webmaster.yandex.ru/addurl.xml",$postdata); //спамим в яндекс

    if (strpos($cap, 'является зеркалом') AND $nm==0){
        if (strstr($link, 'http://')) {
            $link=str_replace('http://', 'http://www.', $link );
            echo "<b>$link</b><br>";
            $nm=1;
        } elseif (strstr($link, 'http://')) {
            $link=str_replace('http://www.', 'http://', $link )  ;
            echo "<b>$link</b><br>";
            $nm=1;
        };
    } else {
    if ($nm == 1) $nm=0;
    }
} while ($nm==0);
    
	echo $i.": ".$link.' - ';
	if (strpos($cap, 'успешно добавлен')){
		echo 'ok<br>';
	}elseif (strpos($cap, 'уже проиндексирован')){
		echo 'в индексе<br>';
	}elseif (strpos($cap, 'является зеркалом')){
		echo 'зеркало<br>';
	}elseif (strpos($cap, 'неверно указали цифровой код')){
		echo 'Captcha error<br>';
		$postdata = array(
		        'key'       => $anti_captcha_key,
		        'action'    => 'reportbad',
		        'id' 		=> $anti_captcha_id
	        );
 	$cap = geturl("http://antigate.com/res.php",$postdata);
	}elseif (strpos($cap, 'robots.txt')){
		echo 'запрещен в файле robots.txt<br>';
	}elseif (strpos($cap, 'отличный от 200')){
		echo '404<br>';
	}elseif (strpos($cap, 'запрещен к индексированию')){
		echo 'ban<br>';
    }elseif (strpos($cap, 'находится вне доменов стран СНГ')){
        echo 'Вне доменов стран СНГ<br>';
    }elseif (strpos($cap, 'Превышено время ожидания')){
        echo 'Тайм-аут<br>';
    }else{
		echo 'error<br>';
		echo $cap;
		exit;
	}
$i++;
@ob_flush(); flush(); // вывод на клиент
}

    //возвращает то, что между $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($str, 0, $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($ch, CURLOPT_URL, $url);

		if ($postdata){
			curl_setopt($ch, CURLOPT_POST, 1);
			curl_setopt($ch, CURLOPT_POSTFIELDS, $poststr);
		}
		curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3');
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
		$res = curl_exec($ch);
		curl_close($ch);
		return $res;
	}

?>
 
Нет мне интересно именно свой написать, понять в чем там ошибка. Аналоги не интересуют.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху