Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   [Perl] Небольшой доркер (https://forum.antichat.xyz/showthread.php?t=76424)

biophreak 08.07.2008 13:35

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

#!/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:" - поиск строки в заголовке, и так далее, про язык запросов на самом гугле можно прочиать, ссылку не помню, к сожалению :)


Время: 13:54