def track_event(category=None, action=None, label=None, value=None, identifier=None, first_use=None, add=None, noninteraction=True): anonymousConfig = Config() anonymousConfig.anonimize_ip_address = True tracker = Tracker('UA-86466078-1', 'none', conf=anonymousConfig) visitor = Visitor() # convert the last 8 bytes of the machine identifier to an integer to get a "unique" user visitor.unique_id = struct.unpack("!I", binascii.unhexlify(identifier[32:]))[0]/2 if add: # add visitor's ip address (will be anonymized) visitor.ip_address = add if first_use: visitor.first_visit_time = first_use session = Session() event = Event(category=category, action=action, label=label, value=value, noninteraction=noninteraction) path = u"/" + u"/".join([category, action, label]) page = Page(path.lower()) tracker.track_event(event, session, visitor) tracker.track_pageview(page, session, visitor)
def index(): # Users identity user_id = request.headers.get('X-Mxit-USERID-R', 'dev').encode('utf-8') user_nick = request.form.get('X-Mxit-ID-R', 'avoid3d') visitor = Visitor() visitor.ip_address = request.headers.get('X-Forwarded-For', '127.0.0.1') ga_session = Session() # User's msg to cleverbot text = request.args.get('input', None) msgs = ['Welcome to chatterbot! Say Hello?'] page = Page('/') if text: page = Page('/chat/') # Attempt to fetch a session for the user. session = client.get(user_id) if not session: session = cleverbot.Session() session.msgs = [] session.msgs.append('%s: %s' % (user_nick, text)) reply = session.Ask(text) session.msgs.append('bot: %s' % reply) client.set(user_id, session) msgs = session.msgs[-10:] tracker.track_pageview(page, ga_session, visitor) return render_template('index.html', msgs=msgs, Markup=Markup)
def detail(): try: voice_one = r.hgetall('+254711082306') voice_two = r.hgetall('+254711082513') voice_three = r.hgetall('+254711082514') visitor = Visitor() visitor.ip_address = request.remote_addr session = Session() page = Page('/detail') event = Event('convertion', 'call') # category - action tracker.track_pageview(page, session, visitor) tracker.track_event(event, session, visitor) data = [voice_one, voice_two, voice_three] print data resp = make_response(render_template('detail.html', data=data)) resp.cache_control.no_cache = True return resp except Exception, e: logging.warning('failed on detail route') raise e
def send_ga_data(): try: tracker = Tracker(self._ga_id, self._ga_force_host or request.host) session = Session() page = Page(request.path) visitor = Visitor() visitor.ip_address = request.remote_addr self.send_data_to_gaserver(tracker, 'track_pageview', (page, session, visitor)) except Exception, e: current_app.logger.error('exception occur. msg[%s], traceback[%s]', str(e), __import__('traceback').format_exc())
def ping(): """ping back to ga""" if not ga_account: return tracker = Tracker(ga_account, ga_domain) visitor = Visitor() visitor.ip_address = request.remote_addr session = Session() page = Page(request.path) if 'referer' in request.headers: page.referrer = request.headers['referer'] tracker.track_pageview(page, session, visitor)
def ping(): """ping back to ga""" if not ga_account: return tracker = Tracker(ga_account, ga_domain) visitor = Visitor() visitor.ip_address = request.remote_addr session = Session() page = Page(request.path) if "referer" in request.headers: page.referrer = request.headers["referer"] tracker.track_pageview(page, session, visitor)
def process_request(self, request): if settings.GA_ENABLED: ip = request.META["REMOTE_ADDR"] if request.META.has_key("CF-Connecting-IP"): ip = request.META["CF-Connecting-IP"] tracker = Tracker(settings.GA_KEY, request.META["HTTP_HOST"]) visitor = Visitor() visitor.ip_address = ip session = Session() page = Page(request.path) tracker.track_pageview(page, session, visitor) return None
def ga_track(self, settings, event={}): _req_list = [] no_tracking = self.get_argument('no_tracking', None) is_prod = settings.ga_is_prod if not no_tracking and is_prod and settings.ga_account: _req = self.request remote_ip = _req.headers.get("X-Real-Ip", _req.headers.get("X-Forwarded-For", _req.remote_ip)) user_agent = _req.headers.get("User-Agent", None) visitor = Visitor() visitor.ip_address = remote_ip visitor.user_agent = user_agent #get visitor.locale visitor.extract_from_server_meta( {"HTTP_ACCEPT_LANGUAGE": _req.headers.get("Accept-Language", None)} ) session = Session() page = Page(_req.path) tracker = Tracker(settings.ga_account, settings.ga_tracker_url) # tracker.track_pageview(page, session, visitor) #this is non-async request pvr = PageViewRequest(config=tracker.config, tracker=tracker, visitor=visitor, session=session, page=page) r = pvr.build_http_request() _req_list.append(HTTPRequest(r.get_full_url(), "POST" if (r.data) else "GET", headers=r.headers, body=r.data)) if event: evt = Event(**event) #tracker.track_event(evt, session, visitor) #this is non-async request er = EventRequest(config=tracker.config, tracker=tracker, visitor=visitor, session=session, event=evt) r = er.build_http_request() _req_list.append(HTTPRequest(r.get_full_url(), "POST" if (r.data) else "GET", headers=r.headers, body=r.data)) #now send actual async requests http_client = AsyncHTTPClient() for _req in _req_list: http_client.fetch(_req)
def ga_track(self, event={}): _req_list = [] no_tracking = self.get_argument('no_tracking', None) is_prod = getattr(config, 'RUN_IN_PROD', False) if not no_tracking and is_prod and hasattr(config, "GA_ACCOUNT"): _req = self.request remote_ip = _req.headers.get("X-Real-Ip", _req.headers.get("X-Forwarded-For", _req.remote_ip)) user_agent = _req.headers.get("User-Agent", None) visitor = Visitor() visitor.ip_address = remote_ip visitor.user_agent = user_agent #get visitor.locale visitor.extract_from_server_meta( {"HTTP_ACCEPT_LANGUAGE": _req.headers.get("Accept-Language", None)} ) session = Session() page = Page(_req.path) tracker = Tracker(config.GA_ACCOUNT, 'MyVariant.info') # tracker.track_pageview(page, session, visitor) #this is non-async request pvr = PageViewRequest(config=tracker.config, tracker=tracker, visitor=visitor, session=session, page=page) r = pvr.build_http_request() _req_list.append(HTTPRequest(r.get_full_url(), "POST" if (r.data) else "GET", headers=r.headers, body=r.data)) if event: evt = Event(**event) #tracker.track_event(evt, session, visitor) #this is non-async request er = EventRequest(config=tracker.config, tracker=tracker, visitor=visitor, session=session, event=evt) r = er.build_http_request() _req_list.append(HTTPRequest(r.get_full_url(), "POST" if (r.data) else "GET", headers=r.headers, body=r.data)) #now send actual async requests http_client = AsyncHTTPClient() for _req in _req_list: http_client.fetch(_req)
def middleware(request): if ga_id is not False: tracker = Tracker(ga_id, request.headers['Host']) visitor = Visitor() visitor.ip_address = request.META.get('REMOTE_ADDR') if request.headers['User-Agent']: visitor.user_agent = request.headers['User-Agent'] session = Session() path = request.path if request.META.get('QUERY_STRING'): path = f"{request.path}?{request.META.get('QUERY_STRING')}" page = Page(path) page.title = request.path tracker.track_pageview(page, session, visitor) response = get_response(request) return response
def log_traffic(request): if not google_analytics: return url = urlparse(request.base_url) pyga_tracker = Tracker(google_analytics, url.hostname) pyga_visitor = Visitor() pyga_visitor.ip_address = request.access_route[0] pyga_visitor.user_agent = request.headers.get('User-Agent') user_locals = [] if 'Accept-Language' in request.headers: al = request.headers.get('Accept-Language') if al is not None: matched_locales = utils.validate_locale(al) if matched_locales: lang_lst = map((lambda x: x.replace('-', '_')), (i[1] for i in matched_locales)) quality_lst = map( (lambda x: x and x or 1), (float(i[4] and i[4] or '0') for i in matched_locales)) lang_quality_map = map((lambda x, y: (x, y)), lang_lst, quality_lst) user_locals = [ x[0] for x in sorted( lang_quality_map, key=itemgetter(1), reverse=True) ] if user_locals: pyga_visitor.locale = user_locals[0] pyga_session = Session() pyga_page = Page(url.path) pyga_page.referrer = request.headers.get('Referer') logger.info('Logging GA traffic from %s to host %s with page %s', pyga_visitor.ip_address, url.hostname, url.path) try: pyga_tracker.track_pageview(pyga_page, pyga_session, pyga_visitor) except URLError: logger.warn('Unable to connect to analytics') except: logger.error('Analytics logging failed') logger.error(sys.exc_info())
def view(viewId): try: shuffle(PHONE_NUMBERS) url = '/view/' + viewId # r.hset(url, 'phoneNumber', PHONE_NUMBERS[0]) # r.hset(url, 'location', 'location') visitor = Visitor() visitor.ip_address = request.remote_addr session = Session() page = Page('/view/' + viewId ) event = Event('convertion', 'call-initiated') # category - action tracker.track_pageview(page, session, visitor) tracker.track_event(event, session, visitor) resp = make_response(render_template('view.html', phoneNumber=PHONE_NUMBERS[0])) resp.cache_control.no_cache = True return resp except Exception, e: logging.warning('failed on view route') raise e
#!/usr/bin/python from pyga.requests import Tracker, Page, Session, Visitor import random import time tracker = Tracker('UA-7848481-1', 'apocalypsebag.com') quant = random.randint(10, 100) ips = ['46.21.16.10', '5.83.240.190', '31.6.128.445', '58.99.64.32', '49.128.32.22'] cnt = 1 while cnt < quant: ip = ips[random.randint(0, 4)] uri = '/' #print "page request %d of %d for %s from %s" % (cnt, quant, uri, ip) visitor = Visitor() visitor.ip_address = ip session = Session() page = Page(uri) tracker.track_pageview(page, session, visitor) cnt += 1 time.sleep(random.randint(4, 10))
from pyga.requests import Tracker, Page, Session, Visitor, Event tracker = Tracker('UA-78705248-1', 'http://127.0.0.1:8080') visitor = Visitor() visitor.ip_address = '194.54.176.12' session = Session() page = Page('/call') event = Event('convertion', 'call') # category - action tracker.track_pageview(page, session, visitor) tracker.track_event(event, session, visitor)
def complete_process(request, backend, *args, **kwargs): """Authentication complete process""" # pop redirect value before the session is trashed on login() redirect_value = request.session.get(REDIRECT_FIELD_NAME, '') or \ request.REQUEST.get(REDIRECT_FIELD_NAME, '') if GA_ID: ga_tracker = Tracker(GA_ID, request.META.get('HTTP_HOST', "")) utmz = request.COOKIES.get("__utmz") if utmz: try: campaign = Campaign() campaign.extract_from_utmz(utmz) ga_tracker.campaign = campaign except: pass ga_visitor = Visitor() try: ga_visitor.extract_from_utma(request.COOKIES.get("__utma","")) except: pass ga_visitor.ip_address = request.META.get('REMOTE_ADDR') ga_session = Session() try: ga_session.extract_from_utmb(request.COOKIES.get("__utmb")) except: pass else: ga_tracker = None # Django 1.5 allow us to define custom User Model, so integrity errors # can be raised. try: user = auth_complete(request, backend, *args, **kwargs) except IntegrityError: try: if ga_tracker: ga_tracker.track_event(Event("Logins",backend.AUTH_BACKEND.name+"CompleteError", request.build_absolute_uri()), ga_session, ga_visitor) except: pass url = setting('SIGNUP_ERROR_URL', setting('LOGIN_ERROR_URL')) return HttpResponseRedirect(url) if isinstance(user, HttpResponse): return user if not user and request.user.is_authenticated(): return HttpResponseRedirect(redirect_value) msg = None if user: if getattr(user, 'is_active', True): # catch is_new flag before login() might reset the instance is_new = getattr(user, 'is_new', False) login(request, user) # user.social_user is the used UserSocialAuth instance defined # in authenticate process social_user = user.social_user if redirect_value: request.session[REDIRECT_FIELD_NAME] = redirect_value or \ DEFAULT_REDIRECT if setting('SOCIAL_AUTH_SESSION_EXPIRATION', True): # Set session expiration date if present and not disabled by # setting. Use last social-auth instance for current provider, # users can associate several accounts with a same provider. expiration = social_user.expiration_datetime() if expiration: try: request.session.set_expiry(expiration) except OverflowError: # Handle django time zone overflow, set default expiry. request.session.set_expiry(None) # store last login backend name in session key = setting('SOCIAL_AUTH_LAST_LOGIN', 'social_auth_last_login_backend') request.session[key] = social_user.provider # Remove possible redirect URL from session, if this is a new # account, send him to the new-users-page if defined. new_user_redirect = backend_setting(backend, 'SOCIAL_AUTH_NEW_USER_REDIRECT_URL') if new_user_redirect and is_new: url = new_user_redirect else: url = redirect_value or \ backend_setting(backend, 'SOCIAL_AUTH_LOGIN_REDIRECT_URL') or \ DEFAULT_REDIRECT if ga_tracker: ga_tracker.track_event(Event("Logins",backend.AUTH_BACKEND.name+"Complete", request.build_absolute_uri()), ga_session, ga_visitor) else: msg = setting('SOCIAL_AUTH_INACTIVE_USER_MESSAGE', None) url = backend_setting(backend, 'SOCIAL_AUTH_INACTIVE_USER_URL', LOGIN_ERROR_URL) else: msg = setting('LOGIN_ERROR_MESSAGE', None) url = backend_setting(backend, 'LOGIN_ERROR_URL', LOGIN_ERROR_URL) if ga_tracker: ga_tracker.track_event(Event("Logins",backend.AUTH_BACKEND.name+"CompleteError", request.build_absolute_uri()), ga_session, ga_visitor) if msg: messages.error(request, msg) if redirect_value and redirect_value != url: redirect_value = quote(redirect_value) if '?' in url: url += '&%s=%s' % (REDIRECT_FIELD_NAME, redirect_value) else: url += '?%s=%s' % (REDIRECT_FIELD_NAME, redirect_value) return HttpResponseRedirect(url)