Эта тема на forum.dklab.ru


WingedFox: Патч для awstats, декодирующий рефереры яндекса.
Яндекс, как самый умный, при постраничном выводе результатов перекодирует строку запроса в неудобоваримый вид.
Из-за этого AWSTATS правильно определяет строку запроса только для 1й страницы результатов.

Патч сие дело исправляет.
Специально для яндекса производится перекодировка из KOI-8 в CP-1251.

if ($param =~ s/^$SearchEnginesKnownUrl{$tmprefererserver}//) {
# We found good parameter
# Now param is keyphrase: "cache:mmm:www/zzz+aaa+bbb/ccc+ddd%20eee'fff,ggg"
$param =~ s/^(cache|related):[^\+]+//; # Should be useless since this is for hit on 'not pages'
&ChangeWordSeparatorsIntoSpace($param); # Change [ aaa+bbb/ccc+ddd%20eee'fff,ggg ] into [ aaa bbb/ccc ddd eee fff ggg]
$param =~ s/^ +//; $param =~ s/ +$//; $param =~ tr/ /\+/s;
if ((length $param) > 0) { $_keyphrases{$param}++; }
last;
} else {
$param =~ s/\w+=//;
$param =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/seg;
foreach my $p1 (split(/&/, $param)) {
if ($p1 =~ s/^$SearchEnginesKnownUrl{$tmprefererserver}//) {
if ($tmprefererserver =~ /yandex/i) {
use Encode;
$p1 =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/seg;
$p1 = encode("cp1251",decode("koi8-r",$p1));
$p1 =~ s/([^0-9A-Za-z_ ])/'%'.unpack('H2',$1)/ge;
}
# We found good parameter
# Now param is keyphrase: "cache:mmm:www/zzz+aaa+bbb/ccc+ddd%20eee'fff,ggg"
$p1 =~ s/^(cache|related):[^\+]+//; # Should be useless since this is for hit on 'not pages'
&ChangeWordSeparatorsIntoSpace($p1); # Change [ aaa+bbb/ccc+ddd%20eee'fff,ggg ] into [ aaa bbb/ccc ddd eee fff ggg]
$p1 =~ s/^ +//; $p1 =~ s/ +$//; $p1 =~ tr/ /\+/s;
if ((length $p1) > 0) { $_keyphrases{$p1}++; }
last;
}
}
}


Установка заключается в замене стандартного блока обработки рефереров в районе 7170й строки для awstats 6.6.
Начало блока отмечено комментарием # Extract params of referer query string
CMS:
у кого-нибудь есть информация для чего Ya конвертит в koi8-r?
WingedFox:
CMS
Даже у них самих её нет. Есть просто факт 8*)
Могу предположить, что у них база с древних времён идёт в KOI-8.
WingedFox:
Поправил патч.
Раньше Яндекс подставлял закодированный параметр text в конец запроса, а теперь он идёт в начале.
Я не обратил внимание что ключевые слова ищутся от начала строки, а теперь там 'qs=text='.

В общем, перед декодированием параметра теперь отрезается его имя.
knutov:
Есть ли такой патч для версии 6.7 ?
Именно этот, судя по исходному коду 6.7 не подойдет.
WingedFox:
Когда у меня появится 6.7, сделаю =)

Эта тема на forum.dklab.ru