PDA

Просмотр полной версии : [Perl] Небольшой доркер


biophreak
08.07.2008, 13:35
Для собственных нужд был написан небольшой гугл-доркер, ибо руками гугл парсить не очень удобно :))
Все существующие под нужды не подходили, может еще кому пригодится :)
Никаких тред, проксей там нету, ибо для одного раза нужно было ))

#!/usr/bin/perl -s
use LWP::UserAgent;
use strict;
use warnings;
use diagnostics;
my @uas = (
"Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.4",
"Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.4) Gecko/20070309 Firefox/2.0.0.5",
"Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.2) Gecko/20070309 Firefox/2.0.0.3"
);
$| = 1;
my($logfile,$ua,$page,$url,$response,$con,$results ,$dorksfile,@dorks);

$ua = LWP::UserAgent->new;
$ua->timeout(30);

sub usage{
exit print qq(Usage:
$0 <dorks file> <logs file> [number of results](optional, defaul=100)
$0 dorks.txt results.log\n\n);
}

$dorksfile = shift || usage();
$logfile = shift || usage();
$results = shift || 100;

open my $DF, '<', $dorksfile or die "Cant open dorks file $dorksfile: $!\n";
open my $LOG,'>>', $logfile or die "Cant open: $!\n";
foreach(<$DF>)
{
$_ =~ s/\s+$//go;
$_ =~ s/\s+|\t+/+/go;
$_ =~ s/\n|\r//go;
print "[Searching dork: $_]\n";
$ua->agent($uas[rand $#uas]);
dorkie($_);
}
close $DF;

sub dorkie
{
my $dork = shift;
$response = $ua->get("http://www.google.com.au/search?hl=en&num=".$results."&q=".$dork."&start=0") or die "Cant get Google's contents: $!\n";
print $LOG "[Dork: $dork]\n";
if($response->is_success)
{
$con = $response->content;
while ($con =~ m/<h2 class=(.*?)><a href=\"(.*?)\" class=(.*?)>/goi)
{
my $url = $2;
$url = "http://".$1 if($url =~ m/http:\/\/(.*)\"(.*)/goi);
print $LOG "$url\n";

}
} else
{
if($response->status_line =~ m/403/)
{
print $LOG "[-] Forbidden\n";
return 0;
} else
{
print $LOG "[-] Cannot connect\n";
return 0;
}
}
print $LOG "[End of dork: $dork]\n\n"
}
close($LOG)


UPD: Добавил рандомизатор юзерагентов, при желании список пополнить можно. Хотя против гугла - это как против танка тапок, но все же :))

Chaak
08.07.2008, 13:41
А для чего он нужен?

biophreak
08.07.2008, 13:47
Знаешь что такое Google Dorks?
Так вот, в файл пишешь эти самые дорки(каждый - на новой строке), например "Powered by Invision Power Board", доркер обращается к гуглу с этим самым запросом и сохраняет в файл результаты поиска(урлы тоесть), которые содержат строку "Powered by Invision Power Board".
Так же можно юзать встроенный "язык запросов" гугла, типа "site:" - поиск по сайту, "intitle:" - поиск строки в заголовке, и так далее, про язык запросов на самом гугле можно прочиать, ссылку не помню, к сожалению :)