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

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

Mongolor

Мастер
Регистрация
5 Дек 2007
Сообщения
156
Реакции
30
помогите с кодом, немогу понять что-где-когда.
Исходник от
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($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.4) Gecko/2008102920 AdCentriaIM/1.7 Firefox/3.0.4");
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
		$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>
 
Что именно вы хотите понять? Код довольно простой, поэтому без ваших комментариев сложно понять в чем у вас возникли затруднения.
 
Вообщем вроде заработало, но с косяками.
Урл вида livejournal.com и Для просмотра ссылки Войди или Зарегистрируйся 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(000000000001, 999999999999);
		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($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;
	}
?>
 
вопрос все еще актуален, проблема с некотороми доменами и все поддомены дают непонятную ошибку.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху