Всякий раз, когда пользователь нажимает на страницу на моем сайте, я запускаю следующий код для отслеживания обращений пользователей, просмотры страниц, где они собираются, и т.д. ...Точного отслеживания сеансов в ASP.NET MVC
public static void AddPath(string pathType, string renderType, int pageid = 0, int testid = 0)
{
UserTracking ut = (UserTracking)HttpContext.Current.Session["Paths"];
if (ut == null)
{
ut = new UserTracking();
ut.IPAddress = HttpContext.Current.Request.UserHostAddress;
ut.VisitDate = DateTime.Now;
ut.Device = (string)HttpContext.Current.Session["Browser"];
if (HttpContext.Current.Request.UrlReferrer != null)
{
ut.Referrer = HttpContext.Current.Request.UrlReferrer.PathAndQuery.ToString();
ut.ReferrerHost = HttpContext.Current.Request.UrlReferrer.Host.ToString();
ut.AbsoluteUri = HttpContext.Current.Request.UrlReferrer.AbsoluteUri.ToString();
}
}
//Do some stuff including adding paths
HttpContext.Current.Session["Paths"] = ut;
}
В моем файле Global.asax.cs при завершении сеанса я сохраняю эту информацию сеанса. Текущий тайм-аут сеанса установлен на 20 минут.
protected void Session_End(object sender, EventArgs e)
{
UserTracking ut = (UserTracking)Session["Paths"];
if (ut != null)
TrackingHelper.StorePathData(ut);
}
Проблема в том, что я не получаю точное хранение информации. Например, я получаю тысячи сессионных магазинов, которые выглядят так в течение пары минут.
Сессия № 1 Время: 2014-10-21 01: 30: 31,990 Дорожки:/блог IP-адрес: 54.201.99.134
Сессия № 2 Время: 2014-10-21 1:30 : 31,357 Дорожки:/блог-страница-2 IP-адрес: 54.201.99.134
Что следует делать, хранит только одну сессию для этих случаев:
Что сеанс должен выглядеть Время: 2014-10 -21 01: 30: 31,357 Дорожки:/блог,/блог-страница-2 IP-адрес: 54.201.99.134
Очевидно, что это похоже на ползание поисковой системы, но проблема в том, что я не уверен, если это так.
1) Почему это происходит?
2) Как я могу получить точное количество сеансов для соответствия аналитике Google как можно ближе?
3) Как я могу исключить ботов? Или как обнаружить, что это был бот, который уволил его?
Редактировать: Многие люди спрашивают «Почему» Для тех из вас, кто спрашивает «Почему», мы делаем это, а не просто аналитику, чтобы сделать очень длинную историю короткими, мы создаем профили пользователей для моего данные из их профиля. Мы смотрим на то, что они просматривают, как долго они просматривают его, их клики, у нас также есть тесты A/B для определенных страниц, и мы обнаруживаем, какие страницы стреляют во время цикла просмотра пользователей, и мы отслеживание какой-либо другой информации, которая является обычаем, и мы не можем включить ее в API Google Analytics и вытащить эту информацию. Как только они перешли на сайт, мы используем эту информацию для создания профилей пользователей для каждого сеанса на сайте. По существу нам необходимо определить, какая из этих сессий действительно реальна, и дать владельцам сайтов возможность просматривать данные вместе с нашим приложением для интеллектуального анализа данных для анализа данных и предоставления обратной связи владельцам сайтов по определенным критериям, чтобы помочь им улучшить их веб-сайт из этих профилей. Если у вас есть лучший способ сделать это, мы все уши.
Каков ваш конкретный вопрос? Если вы хотите исключить ботов, вам придется либо отслеживать на клиенте (JS), либо идентифицировать и исключать определенные диапазоны IP-адресов или пользовательские агенты. –
Зачем вы это делаете? Та же информация может быть заминирована из ваших журналов сервера, и даже лучше, вы могли бы использовать что-то вроде Google Analytics, которое предоставило бы вам более подробную и полную статистику.В любом случае это будет более точно, чем то, что вы делаете, не потребует дополнительного кода, забивающего ваше приложение, и на него не повлияют такие моменты, как тайм-ауты сеанса. –
Вы вообще не обновляете свои «пути» –