Скрипт для поиска ГС

Автор: begunok     Категория: Кодинг

Долго думал, выкладывать этот скрипт или нет. У скрипта как бы двоякое может быть назначение. Все же решил выложить в урезанном виде. При определении ГС я исхожу из того, что большинство таких сателлитов построены на одних и тех же движках. И одним из них является Satellite-x. Как найти сайты на этом движке, я говорить не буду(у каждого должны быть свои методы). Говорить я буду о том, как отличить более-менее качественный сателлит от откровенного ГС.

По умолчанию у рассматриваемой CMS нет защиты от спама комментариев. И если вебмастер хоть как то озабочен своим сайтом, он в первую очередь защитит комментарии от спама. Тем более их можно в различных вариациях защищать прямо из админки CMS.

Таким образом, задача проверки сводится к тому, сможет ли мой скрипт оставить комментарий на этом сайте. Если сможет, значит на 90% это откровенный ГС и его смело можно отправлять в ГБЛ, поскольку покупать ссылки на таком сайте – самоубийство.

Разведка боем:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
<?php
$segodnya=date('d');;    //Сегодняшнее число
$msurls=file('satx/in.txt'); //Массив из урлов как его собирать, каждый решает сам
$msnames=file("satx/nametest.txt"); //Массив имен в нете полно таких списков
$mstexts=file("satx/texttest.txt");  //массив ответов. Придумываем флуд-фразы
$provername=$msnames[array_rand($msnames)]; //Выбираем случайное имя
$proverurl='yandex.ru';        //Куда будет вести ссылка с проверяемой страницы
$provertext=$mstexts[array_rand($mstexts)]; //Выбираем случайный флуд-текст
 
 foreach ($msurls as $url) {    //Перебор массива с урлами
    $url=trim($url); //Удаляем мусор
    //Подключаемся:
	$ch = curl_init($url);
	curl_setopt($ch, CURLOPT_URL,$url);
	curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
	curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)");
	curl_setopt($ch, CURLOPT_TIMEOUT, 30);
	curl_setopt($ch, CURLOPT_COOKIEFILE, "cookie.txt"); //Куки раз
	curl_setopt($ch, CURLOPT_COOKIEJAR,  "cookie.txt"); //Куки два
	$html = curl_exec($ch);
 
    $pattern="|name=\"f_art\"[[:space:]]*value=\"(.*)\">|";  //регулярка раз
	$pattern2="|name=\"action\"[[:space:]]*value=\"(.*)\">|"; //регулярка два
	preg_match_all($pattern, $html, $out_urls);  //Ищем на странице $pattern
	preg_match_all($pattern2, $html, $out_urls2); //и $pattern2
	$dom=explode("/", $url); //Нам понадобится имя домена
 
      $postdata = array(       //массив POST запросов
        'method'	=> 'post',
        'f_name'    => $provername,
        'f_url'     => $proverurl,
        'f_text'	=> $provertext,
        'f_spam'	=> $segodnya,
        'action'    => $out_urls2[1][0],
        'f_art'		=> $out_urls[1][0],
    );
 
	curl_setopt($ch, CURLOPT_POST,1); //Будем отправлять POST запрос
	curl_setopt($ch, CURLOPT_POSTFIELDS,$postdata);  //Отправляем POST запрос
 
    $html = curl_exec($ch);
	curl_close($ch);
    //А теперь проверяем что у нас получилось
   $pattern3="#<a href=\"http://".$proverurl."\">".$provername."</a>[[:space:]]*комментирует:#"; //регулярка раз
   $pattern4="#<a href=\"http://".$proverurl."\"[[:space:]]*rel=\"nofollow\">".$provername."</a>[[:space:]]*комментирует:#"; //регулярка два
 
  //Если есть хоть одно совпадение:
  if(preg_match_all($pattern3, $html, $out_urls3) || preg_match_all($pattern4, $html, $out_urls4)) {
 
   $fh = fopen('satx/bad.txt', 'a+'); //Файл с успешной отправкой
   fwrite($fh, $dom[2]."\n");      //Пишем имя домена в файл
   fclose($fh);                    //Закрываем файл
   echo $dom[2]." - <i>Bad</i><br>";   //Сообщаем об успешной отправке POST запроса
   flush();
  }  else  //Если совпадений не найдено(на сайте есть антиспам или закрыты коментарии):
  {
   $fh = fopen('satx/good.txt', 'a+'); //Файл с неудачной отправкой
   fwrite($fh, $dom[2]."\n");         //Пишем имя домена в файл
   fclose($fh);                       //Закрываем файл
   echo $dom[2]." - <b>ОК</b><br>";  //Сообщаем о неудачной отправке POST запроса
   flush();
  }//end if
 
} // end foreach        
echo "<br>ВСЕ!";  //Сообщаем о завершении работы скрипта.  
?>

Надеюсь на благоразумное использование скрипта.

Оставить комментарий