Выбрать главу

$ webaccess /web/logs/intuitive/access_log

Results of analyzing log file access_log

··Start date:··01/May/2016 at 07:04:49

····End date:··04/May/2016 at 01:39:04

········Hits:··7,839 (total accesses)

··Pageviews:·· 2,308 (hits minus graphics)

Transferred:·· 25,928,872,755 bytes

The 10 most popular pages were:

266

118 /CsharpVulnJson.ova

··92 /favicon.ico

··86 /robots.txt

··57 /software

··53 /css/style.css

··29 /2015/07/01/advanced-afl-usage.html

··24 /opendiagnostics/index.php/OpenDiagnostics_Live_CD

··20 /CsharpVulnSoap.ova

··15 /content/opendiagnostics-live-cd

The 10 most common referrer URLs were:

108 "https://www.vulnhub.com/entry/csharp-vulnjson,134/#"

··33 "http://volatileminds.net/2015/07/01/advanced-afl-usage.html"

··32 "http://volatileminds.net/"

··15 "http://www.volatileminds.net/"

··14 "http://volatileminds.net/2015/06/29/basic-afl-usage.html"

··13 "https://www.google.com/"

··10 "http://livecdlist.com/opendiagnostics-live-cd/"

··10 "http://keywords-monitoring.com/try.php?u=http://volatileminds.net"

·· 8 "http://www.volatileminds.net/index.php/OpenDiagnostics_Live_CD"

·· 8 "http://www.volatileminds.net/blog/"

Усовершенствование сценария

Одна из проблем, возникающих при анализе файлов журналов веб-сервера Apache, обусловлена тем, что часто на одну и ту же страницу ссылаются два разных URL; например, /custer/ и /custer/index.html. Блок определения десяти наиболее популярных страниц должен учитывать это. Преобразование, выполняемое командой sed, уже гарантирует, что /custer и /custer/ не будут интерпретироваться как разные URL, но определить имя файла по умолчанию для данного каталога может оказаться сложной задачей (особенно если это имя определяется специальными настройками в конфигурации веб-сервера).

Информацию о десятке самых активных ссылающихся доменов можно сделать еще более полезной, если оставить в ссылающихся адресах URL только базовое имя домена (например, slashdot.org). Сценарий № 74 идет в этом направлении чуть дальше и анализирует дополнительную информацию, доступную в поле ссылающегося домена. В следующий раз, когда весь десяток самых активных ссылающихся доменов будет заполнен ссылками на slashdot.org, вы не сможете оправдаться незнанием!

№ 74. Трафик поисковых систем

Сценарий № 73 предлагает широкий обзор запросов некоторых поисковых систем к вашему сайту, но дальнейший анализ может показать не только какие из этих систем способствуют увеличению потока посетителей, но также какие ключевые слова они вводили в строке поиска. Полученная информация поможет определить, насколько точно ваш сайт индексируется поисковыми системами. Более того, опираясь на полученные данные, вы сможете повысить ранг и релевантность вашего сайта в поисковых системах. Однако, как упоминалось выше, эта дополнительная информация постепенно признается недопустимой разработчиками Apache и веб-браузеров. В листинге 10.3 приводится сценарий командной оболочки, извлекающий ее из журналов Apache.

Код

Листинг 10.3. Сценарий searchinfo

··#!/bin/bash

··# searchinfo — извлекает и анализирует трафик поисковых систем, указанных

··#·· в поле с информацией о ссылающихся доменах, в обобщенном формате

··#·· журналирования.

··host="intuitive.com"·· # Замените именем своего домена.

··maxmatches=20

··count=0

··temp="/tmp/$(basename $0).$$"

··trap "$(which rm) −f $temp" 0

··if [$# −eq 0]; then

····echo "Usage: $(basename $0) logfile" >&2

····exit 1

··fi

··if [! -r "$1"]; then

····echo "Error: can't open file $1 for analysis." >&2

····exit 1

··fi

··for URL in $(awk '{ if (length($11) > 4) { print $11 } }' "$1" | \

····grep −vE "(/www.$host|/$host)" | grep '?')

··do

····searchengine="$(echo $URL | cut  −f— f3 | rev | cut −d. -f1-2 | rev)"

····args="$(echo $URL | cut −d\? -f2 | tr '&' '\n' | \

······grep −E '(^q=|^sid=|^p=|query=|item=|ask=|name=|topic=)' | \

······sed −e 's/+/ /g' −e 's/%20/ /g' −e 's/"//g' | cut −d= −f2)"

····if [! -z "$args"]; then

······echo "${searchengine}: $args" >> $temp

····else

······# Запрос неизвестного формата, показать всю строку GET…

······echo "${searchengine} $(echo $URL | cut −d\? -f2)" >> $temp

····fi

····count="$(($count + 1))"

··done

··echo "Search engine referrer info extracted from ${1}:"

··sort $temp | uniq −c | sort −rn | head −$maxmatches | sed 's/^/ /g'