Здравствуй %username%
Начну с того, что у меня есть некий Django портал, на котором пользователям начисляются определенные бонусы за приглашение новых пользователй. Такая себе системе рефералов. Но бонус начисляется только в том случая, если приглашенный пользователь проявляет активность. Сегодня у меня возникло подозрение, что один из моих юзеров завел виртуалов. Попробуем уличить его в этом…
У меня в каждом проекте есть апликуха core, где я держу всякие полезные утилиты. В этой апликухе создадим файл middleware.py.
Добавим миддлвер в settings.py
И нужно не забыть добавить генерацию заголовка 'HTTP_X_FORWARDED_FOR' в /etc/nginx/nginx.conf
Перезапускаем Django и Nginx. Смотрим лог grep -E 'AnonymousUser|User1|User2' users.log, анализируем.
В общем в зависимости от того насколько пользователь знаком с интернет технологиями и от размера бонуса, возможно несколько вариантов событий:
Нуб будет делать все руками с текущего IP. Такого человека отследить легко по записям типа
Все действия совершаются с одного IP и от имени разных пользователей поочередно.
Продвинутый пользователь будет пытаться скрытся используя динамический IP или прокси.
IP разные, но действия псевдо пользователй строго поочередные.
Если за дело взялся программер, то отловить его будет крайне сложно, если он будет пользоваться прокси и напишет скрипт эмуляции активности пользователя. В тяжелых случаях уже нужно работать с психологией, а не техникой. Нужно дать человеку легко получать бонусы, что бы ослепленный жадностью и безнаказанностью он утратил бдительность и его скрипты приобрели характерное отображение в логах.
А вообще я всем желаю хорошых и честных юзеров. Ведь преджде всего ради них мы и пишем наши порталы.
Начну с того, что у меня есть некий Django портал, на котором пользователям начисляются определенные бонусы за приглашение новых пользователй. Такая себе системе рефералов. Но бонус начисляется только в том случая, если приглашенный пользователь проявляет активность. Сегодня у меня возникло подозрение, что один из моих юзеров завел виртуалов. Попробуем уличить его в этом…
У меня в каждом проекте есть апликуха core, где я держу всякие полезные утилиты. В этой апликухе создадим файл middleware.py.
import logging
import logging.handlers
bytes=1024000
count=10
formatter = logging.Formatter("%(asctime)s-%(message)s")
MODELS_FILE = '/home/ramovsky/users.log'
logmodels = logging.getLogger('users')
logmodels.setLevel(logging.DEBUG)
handler = logging.handlers.RotatingFileHandler(MODELS_FILE, maxBytes=bytes, backupCount=count)
handler.setFormatter(formatter)
logmodels.addHandler(handler)
class TrackUsersMiddleware(object):
def process_request(self, request):
ip = request.META.get('REMOTE_ADDR', '') or request.META.get('HTTP_X_FORWARDED_FOR', '')
logmodels.debug('%s %s %s'%(request.user, request.path, ip))
Добавим миддлвер в settings.py
MIDDLEWARE_CLASSES = (
#----- cut -----
'core.middleware.TrackUsersMiddleware',
)
И нужно не забыть добавить генерацию заголовка 'HTTP_X_FORWARDED_FOR' в /etc/nginx/nginx.conf
location / {
#---- cut -----
fastcgi_param REMOTE_ADDR $remote_addr;
}
Перезапускаем Django и Nginx. Смотрим лог grep -E 'AnonymousUser|User1|User2' users.log, анализируем.
В общем в зависимости от того насколько пользователь знаком с интернет технологиями и от размера бонуса, возможно несколько вариантов событий:
Нуб будет делать все руками с текущего IP. Такого человека отследить легко по записям типа
2011-04-20 14:00:03,123-AnonymousUser /accounts/login/ 80.91.173.10
2011-04-20 14:00:22,967-User1 Куча активности
2011-04-20 14:00:22,967-User1 /logout/ 80.91.173.10
2011-04-20 14:01:03,123-AnonymousUser /accounts/login/ 80.91.173.10
2011-04-20 14:01:22,967-User2 Куча активности
2011-04-20 14:01:22,967-User2 /logout/ 80.91.173.10
Все действия совершаются с одного IP и от имени разных пользователей поочередно.
Продвинутый пользователь будет пытаться скрытся используя динамический IP или прокси.
2011-04-20 14:00:03,123-AnonymousUser /accounts/login/ 18.11.173.10
2011-04-20 14:00:22,967-User1 Куча активности
2011-04-20 14:00:22,967-User1 /logout/ 18.11.173.10
2011-04-20 14:01:03,123-AnonymousUser /accounts/login/ 34.91.173.10
2011-04-20 14:01:22,967-User2 Куча активности
2011-04-20 14:01:22,967-User2 /logout/ 34.91.173.10
IP разные, но действия псевдо пользователй строго поочередные.
Если за дело взялся программер, то отловить его будет крайне сложно, если он будет пользоваться прокси и напишет скрипт эмуляции активности пользователя. В тяжелых случаях уже нужно работать с психологией, а не техникой. Нужно дать человеку легко получать бонусы, что бы ослепленный жадностью и безнаказанностью он утратил бдительность и его скрипты приобрели характерное отображение в логах.
А вообще я всем желаю хорошых и честных юзеров. Ведь преджде всего ради них мы и пишем наши порталы.