- Автор темы
- #1
Предлагая вашему вниманию не большой скрипт на перле, который позволит замерить trustrank для конкретного хостинга по алгоритму впервые опубликованным АлексомФ (Для просмотра ссылки Войди или Зарегистрируйся), конечно с некоторыми усовершенствованиями.
В начале файла 2 главные переменные:
my $query_count = 100; - кол-во titloв для данного хоста, по которым ищем позиции
my $query_deep = 100; - сколько результатов просматривать.
Если у вам жалко трафа ставьте оба параметра на 10, но самые точные результаты на 100.
Результат работы выглядит примерно так
domin: blogs.mail.ru
position: 10 – средняя позиция домена по произведённым запросам
of result count: 4717 – среднее кол-во страниц в индексе по произведённым запросам
based on iterations: 39/99 = 39% - было проведено 99 (обычно 100) запросов, в 39 обнаружился blogs.mail.ru. (параметры «position» и «position» усреднялись только по 39 значениям)
Судить о бонусности надо на основании этих трёх параметров и они никоим образом не могут быть сведены в одну цифру. Физический смысл параметров :
1) Position – позиция в серпе – чем меньше тем лучше
2) of result count – обратная оценка погрешности первого параметра, чем она больше тем точнее Position
3) based on iterations – обратная оценка второго параметра, чем она больше тем точнее (2) и соответственно (1)
Скрипт по возможности пытается удалить из заголовков название проверяемого домена.
Скрипту на вход (параметром) можно подавать имя хоста либо имя файла в котором перечислены хосты. Результаты выводятся на экран, так что можно перенаправлять в любой файл.
Скрипт не работает с соксами и не предназначен для промышленных масштабов. Если вы чекаете несколько хостов то между кадым задержка в 6 минут что б гугл не забанил.
Зы.: кто уже имеет подобный скрипт не флудите в теме, это для тех кто не имеет.
Добавлено через 37 секунд
В начале файла 2 главные переменные:
my $query_count = 100; - кол-во titloв для данного хоста, по которым ищем позиции
my $query_deep = 100; - сколько результатов просматривать.
Если у вам жалко трафа ставьте оба параметра на 10, но самые точные результаты на 100.
Результат работы выглядит примерно так
domin: blogs.mail.ru
position: 10 – средняя позиция домена по произведённым запросам
of result count: 4717 – среднее кол-во страниц в индексе по произведённым запросам
based on iterations: 39/99 = 39% - было проведено 99 (обычно 100) запросов, в 39 обнаружился blogs.mail.ru. (параметры «position» и «position» усреднялись только по 39 значениям)
Судить о бонусности надо на основании этих трёх параметров и они никоим образом не могут быть сведены в одну цифру. Физический смысл параметров :
1) Position – позиция в серпе – чем меньше тем лучше
2) of result count – обратная оценка погрешности первого параметра, чем она больше тем точнее Position
3) based on iterations – обратная оценка второго параметра, чем она больше тем точнее (2) и соответственно (1)
Скрипт по возможности пытается удалить из заголовков название проверяемого домена.
Скрипту на вход (параметром) можно подавать имя хоста либо имя файла в котором перечислены хосты. Результаты выводятся на экран, так что можно перенаправлять в любой файл.
Скрипт не работает с соксами и не предназначен для промышленных масштабов. Если вы чекаете несколько хостов то между кадым задержка в 6 минут что б гугл не забанил.
Зы.: кто уже имеет подобный скрипт не флудите в теме, это для тех кто не имеет.
Добавлено через 37 секунд
Код:
#!/usr/bin/perl -w
use LWP::UserAgent;
use LWP::ConnCache;
use strict;
use Encode;
use HTML::Entities;
my $query_count = 100; # from 10 to 100
my $query_deep = 100; # from 10 to 100
$| = 1;
my $file = $ARGV[0];
my @arr_dom;
if (open FH, $file){
@arr_dom = <FH>;
close FH;
} else {
push @arr_dom,$file;
}
foreach (@arr_dom) {
s/\s*$//s;
s/^\s*(\.)?//s;
my $domain = $_;
next if ($domain eq '');
my ($domain2) = $domain =~ /(\w+.\w+)$/si;
my ($domain1) = $domain =~ /(\w+).\w+$/si;
eval {
my $b_fp = LWP::UserAgent->new(
agent => 'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.15'
);
my $b_response = $b_fp->get("http://www.google.com/search?q=site:$domain&num=$query_count");
my @keywords = $b_response->content =~ /class=l.*?\)">(.+?)<\/a><\/h3>/sg;
my $suc_cnt = 0;
my $pos = 0;
my $res_cnt = 0;
my $ves = 0;
foreach my $kwd (@keywords) {
sleep 1;
$kwd =~ s/<b>...<\/b>//sg;
$kwd =~ s/<\/b>//sg;
$kwd =~ s/<b>//sg;
$kwd =~ s/$domain2//sg;
$kwd =~ s/$domain1//sg;
decode_entities($kwd);
my $response;
eval {
my $fp = LWP::UserAgent->new(
agent => 'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.15',
conn_cache => LWP::ConnCache->new()
);
$response = $fp->get("http://www.google.com/search?hl=ru&num=$query_deep&q=$kwd");
};
if ($@) {
print "error: $@\n";
}
my @links = $response->content =~ /href="http:\/\/(?:www\.)?(?:\w*?\.)?((?:\w+\.)*?\w+\.\w+)\/\S* class=l/sg;
my ($cnt) = $response->content =~ /<b>1<\/b> - <b>\d+<\/b>.*?<b>(\d+.*?)<\/b>.*?\(<b/sg;
if (!defined($cnt)){
$ves++;
next;
}
my @cnts = $cnt =~ /(\d+)/sg;
$cnt = join ('',@cnts);
my $is_top = 0;
for (my $i=0; $i<scalar(@links); $i++) {
if ($domain eq $links[$i]) {
Encode::from_to($kwd, 'utf-8','windows-1251');
$suc_cnt++;
$pos += $i;
$res_cnt += $cnt;
$is_top = 1;
last;
}
}
if (!$is_top) {
Encode::from_to($kwd, 'utf-8','windows-1251');
}
}
print "\ndomin: $domain \n";
if ($suc_cnt) {
print "position: ".int($pos/$suc_cnt)."\n";
print "of result count: ".int($res_cnt/$suc_cnt)."\n";
print "based on iterations: ".($suc_cnt)."/".(scalar(@keywords)-$ves)." = ".int((100*$suc_cnt)/(scalar(@keywords)-$ves))."%\n";
} else {
print "no position found. domain is banned!!\n";
}
};
if ($@) {
print $@;
}
if (scalar(@arr_dom) > 1) {
sleep 300;
}
}