#!/usr/bin/perl # Alexa rank checker by Ph03n1X # Copyright (c) 2010 All right Reserved use strict; use warnings; use Switch; use POSIX; require LWP::UserAgent; use HTTP::Message; my $MAX_CHILD = 50; my $LOGFILE = "alexa.log"; my $count=0; my @domains; sub CheckAlexaRank { my ($toCheck) = @_; my $ua = LWP::UserAgent->new; $ua->timeout(60); $ua->agent("MSIE/7.0 Windows"); my $AlexaCheck = "http://data.alexa.com/data/?cli=10&dat=ns&url=$toCheck"; my $AlexaResponse = $ua->get($AlexaCheck); if (!($AlexaResponse->is_success)) { print $AlexaResponse->status_line . " Failure\n"; }else { my @response = $AlexaResponse->as_string; my $result="@response"; $result =~ m//; print $toCheck . " alexa rank is " . $2 . "\n"; open(LOG,">>$LOGFILE"); print LOG $toCheck . " alexa rank is " . $2 . "\n"; close(LOG); } #End If Else } #End Routine MAIN: { if(!$ARGV[0]){ print "Usage : perl " . $0 . " \n"; exit(0); } #End If open(O_FILE, "$ARGV[0]") or die("Can not open the file!"); chop(@domains=); foreach my $domain (@domains){ switch(fork()){ case (0) { CheckAlexaRank($domain);_exit(0); } case (-1) { print "Can not fork!\n";_exit(-1); } else { if($count>$MAX_CHILD-2){ wait();$count--; } #End If } #End Else } #End Switch $count++; } #End Foreach close(O_FILE); } #End Main