Парсер выдачи гугла по доркам

Discussion in 'Песочница' started by MikaS90, 7 Sep 2011.

  1. MikaS90

    MikaS90 New Member

    Joined:
    19 Dec 2007
    Messages:
    0
    Likes Received:
    1
    Reputations:
    0
    Подскажите по сабжу, что не пробовал рано или поздно вылетает капча. Может с антикапчей есть софт, может софт обходит капчу. Поделитесь кто чем пользуется
     
  2. winstrool

    winstrool ~~*MasterBlind*~~

    Joined:
    6 Mar 2007
    Messages:
    1,413
    Likes Received:
    910
    Reputations:
    863
    используй прокси
     
    _________________________
  3. MikaS90

    MikaS90 New Member

    Joined:
    19 Dec 2007
    Messages:
    0
    Likes Received:
    1
    Reputations:
    0
    спасибо, но я ищу именно софт, прокси и так использую
     
  4. xek

    xek New Member

    Joined:
    10 Jul 2011
    Messages:
    28
    Likes Received:
    1
    Reputations:
    0
    Google URL Grabber

    Граббинг по дорку:
    php grabber.php index.php?id=

    Продолжить граббинг со страницы 5:
    php grabber.php index.php?id= 5

    Граббинг по стране US со страницы 10:
    php grabber.php index.php?id= .uk 10

    Собранные ссылки будут в links.txt

    Если надо могу выложить класс по работе с socks, прикрутить его к грабберу будет просто.
    Code:
    <?php
    class googleURLGrabber
    {
    	public $argv = array();
    	public $google_dork = '';
    	public $links_filename = 'links.txt';
    	public $google = 'www.google.com';
    	public $grabbed_links = array ();
    	public $timeout = 15;
    	public $page = 0;
    	
    	public function showInfo()
    	{
    		echo '***************************' . "\r\n";
    		echo '*                         *' . "\r\n"; 
    		echo '* Google URL Grabber v0.2 *' . "\r\n";
    		echo '*                         *' . "\r\n";
    		echo '********* [coded by _xtc] *' . "\r\n\r\n";
    	}
    	
    	public function getParameters()
    	{
    		$this->showInfo();
    		if (count($this->argv) < 2) {
    			echo 'Options: ' . $this->argv[0] . ' ?id=' . " .com 15\r\n";
    			die;
    		}
    		
    		$site = '';
    		if (count($this->argv) == 3) {
    			if (is_numeric($this->argv[2])) {
    				$this->page = $this->argv[2];
    			} else {
    				$site = 'site:' . $this->argv[2];
    			}
    		} elseif (count($this->argv) == 4) {
    			$site = 'site:' . $this->argv[2];
    			$this->page = $this->argv[3];
    		}
    		$this->google_dork = 'allinurl:' . $this->argv[1] . ' filetype:php ' . $site;
    	}
    	
    	public function getLinks()
    	{
    		if (file_exists($this->links_filename)) {
    			$handle = fopen($this->links_filename, 'r');
    			$content = fread($handle, filesize($this->links_filename));
    			fclose($handle);
    			
    			if (preg_match_all('/(.*?)\r\n/s', $content, $match)) {
    				foreach ($match[1] as $link) {
    					$this->grabbed_links[] = $link;
    				}
    			}
    			echo 'Grabbed links: ' . count($this->grabbed_links) . "\r\n\r\n";
    		}
    	}
    
    	public function writeToFile($str = '', $option) 
    	{
    		$handle = fopen($this->links_filename, $option);
    		fwrite($handle, $str);
    		fclose($handle);
    	}
    	
    	public function getContent($query) 
    	{
    		$content = '';
    		
    		$fp = fsockopen($this->google, 80, $errno, $errstr, 30);
    			
    		if ($fp != false) {
    			$header  = "GET " . $query . " HTTP/1.0\r\n";
    			$header .= "User-Agent: Opera/9.80 (Windows NT 5.1; U; ru) Presto/2.9.168 Version/11.50\r\n";
    			$header .= "Host: " . $this->google . "\r\n";
    			$header .= "Connection: Close\r\n\r\n";
    	
    			fwrite($fp, $header);
    			$start = microtime(true);
    			
    			while (!feof($fp) && (microtime(true) - $start) < $this->timeout) {
    				$content .= fgets($fp);
    			}
    			fclose($fp);
    			
    			return $content;
    		}
    		return false;
    	}
    	
    	public function grabbing()
    	{
    		$nextPageExist = true;
    		$next_page_regexp = '/<span style="display:block;margin-left:53px;text-decoration:underline">/s';
    		$url_regexp = '/<h3 class="r"><a href="(.*?)"/s';
    
    		//$query = '/search?sclient=psy&hl=en&source=hp&q=' . urlencode($this->google_dork) . '&btnG=Search&num=100&start=';
    		$query = '/search?hl=en&as_q=' . urlencode($this->google_dork) . '&as_qdr=all&num=100&start=';
    		$page = $this->page;
    		$grabbed_links = $this->grabbed_links;
    		
    		while ($nextPageExist) {
    			$_query = $query . $page . '00';
    			$content = $this->getContent($_query);
    			$page++;
    			
    			if (empty($content)) {
    				echo "\r\n" . 'Stopped by socket error!' . "\r\n";
    				echo 'On page: ' . --$page . "\r\n";
    			}
    			
    			if (preg_match_all($url_regexp, $content, $match)) {
    				foreach ($match[1] as $_url) {
    					$linkExist = false;
    					$url = html_entity_decode(urldecode($_url)) . "\r\n";
    					if (!strstr($url, '=')) continue;
    
    					preg_match('/(?P<domain>.*?\..*?)\//s', $url, $match);
    					foreach ($grabbed_links as $links) {
    						if (strstr($links, $match['domain']) !== false) {
    							$linkExist = true;
    							break;
    						}
    					}
    					if (!$linkExist) {
    						$grabbed_links[] = $url;
    					} else { continue; }
    					
    					echo $url;
    					$this->writeTofile($url, 'a');
    				}
    			}
    
    			if (preg_match('/' . $this->google . '\/sorry\//s', $content)) {
    				echo "\r\n" . 'Stopped by AntiBot System!' . "\r\n";
    				echo 'On page: ' . --$page . "\r\n";
    				break;
    			}
    			
    
    			if (!preg_match($next_page_regexp, $content)) $nextPageExist = false;
    		}
    	}
    	
    	public function __construct($argv)
    	{
    		$this->argv = $argv;
    		
    		$this->getParameters();
    		$this->getLinks();
    		$this->grabbing();
    	}
    }
    
    $googleURLGrabber = new googleURLGrabber($argv);
     
  5. julpierto

    julpierto New Member

    Joined:
    17 Oct 2010
    Messages:
    21
    Likes Received:
    0
    Reputations:
    0
    Stopped by AntiBot System!
    Выкладывай sock - без него никак --'
     
    #5 julpierto, 10 Sep 2011
    Last edited: 13 Sep 2011
  6. kitman12

    kitman12 New Member

    Joined:
    7 Dec 2010
    Messages:
    4
    Likes Received:
    0
    Reputations:
    0
    не пашет
     
  7. eclipse92

    eclipse92 Banned

    Joined:
    17 Jan 2011
    Messages:
    0
    Likes Received:
    2
    Reputations:
    -11
    токо прокси!
     
  8. =Zeus=

    =Zeus= Member

    Joined:
    10 Aug 2009
    Messages:
    213
    Likes Received:
    54
    Reputations:
    5
    Парсер гугла. Переделывал когда-то для себя чей-то пример. Для чего-то простого думаю сойдет.

    PHP:
    <?php
    echo "========== Google Parser ==========<br>";

    set_time_limit(0);

    if( isset( 
    $_GET[dork] ) )
        
    $key urlencode$_GET[dork] ); // Запрос
    else
        die( 
    'Usage: .php?dork=YOUR_DORK_HERE' );


    $total 20// страниц
    printf"Total pages to process: %d <br><br>"$total );

    for( 
    $i 0$i <= $total*10$i+=10 // по 10 ссылок на странице
    {
        
    $google file_get_contents"http://www.google.com/search?q=$key&start=$i);
        
    preg_match_all'#<h3 class="r"><a href="(.*?)".*?</a></h3>#'$google$links );

        foreach( 
    $links[1] as $link )
        {
            
    $currentPage[] = $link;
        }

        
    $links implode"\n"$currentPage );
        
    $fp fopen'links.txt''ab' ); //links.txt файл со сылками
        
    fwrite$fp$links );
        
    fclose$fp );

        unset( 
    $links ); 
        unset( 
    $currentPage );

        
    printf"Total links: %d <br>"$i+10 );

        
    $rnd rand713); // Задержка 7-13 секунд
        
    printf"Waiting for %d seconds...\n"$rnd );

        
    flush();
        
    ob_flush();

        
    sleep$rnd ); 
    }

    ?>
     
  9. Slaid

    Slaid New Member

    Joined:
    6 Aug 2011
    Messages:
    4
    Likes Received:
    1
    Reputations:
    0
    есть рабочий jQuery парсер гугла, у меня был заточен под парсинг всех доменов в зоне DK если интересно дам, в бан не уходит! правдо 1 поток (php) :p
     
  10. maxim2142

    maxim2142 Member

    Joined:
    31 May 2010
    Messages:
    16
    Likes Received:
    10
    Reputations:
    3
    Давай)Как раз поковыряюся в коде)
     
  11. MaxCheet

    MaxCheet New Member

    Joined:
    21 Oct 2011
    Messages:
    7
    Likes Received:
    0
    Reputations:
    0
    мне тоже скиньте плиз
     
  12. Breetonia

    Breetonia New Member

    Joined:
    11 Dec 2011
    Messages:
    38
    Likes Received:
    1
    Reputations:
    0
    Был бы парсер,парсящий бесконечнои выдавал бы окно каптчи,останавливая парсинг,а то лажня какая-то - или вообще не работает,или работает,но жутко криво.
     
  13. BuG_4F

    BuG_4F Member

    Joined:
    20 May 2008
    Messages:
    88
    Likes Received:
    67
    Reputations:
    5
    Ап ! Есть сейчас какие нибудь готовые решения парсера по доркам ?