from wsgiref.simple_server import make_server def tracking_server(environ, respond): """Function used to handle all requests made to this tracking server """ if environ['PATH_INFO'] == '/track.js': return track_user(environ, respond) elif environ['PATH_INFO'] == '/favicon.ico': respond('204 NO CONTENT', []) return [''] else: return html_content(environ, respond) def track_user(environ, respond): """Function used to handle the route: /track.js This will print environ information about the user to stdout and return back an empty string """ headers = [('Content-Type', 'application/javascript')] respond('200 OK', headers) prefixes = ['PATH_', 'HTTP', 'REQUEST', 'QUERY'] for key, value in environ.iteritems(): if any(key.startswith(prefix) for prefix in prefixes): print '%s: %s' % (key, value) return [''] def html_content(environ, respond): """Function used to handle any route that is not /track.js This will return to the user a very basic html page that has a script that to call /track.js """ headers = [('Content-Type', 'text/html')] respond('200 OK', headers) return ['

Welcome

\n'] if __name__ == '__main__': try: httpd = make_server('', 8000, tracking_server) print 'Tracking Server Listening on Port 8000...' httpd.serve_forever() except KeyboardInterrupt: print 'Exiting...'