$ 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'