Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Browser Detection Python / mod_python?

I want to keep some statistics about users and locations in a database. For instance, I would like to store "Mozilla","Firefox","Safari","Chrome","IE", etc... as well as the versions, and possibly the operating system.

What I am trying to locate from Python is this string;

Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.14) Gecko/2009090216 Ubuntu/9.04 (jaunty) Firefox/3.0.14

Is there an efficient way to use Python or mod_python to detect the http user agent/browser?

like image 587
cka Avatar asked Jan 23 '23 00:01

cka


2 Answers

HTTP_USER_AGENT contains this information, and will be passed in the environment variables your application uses. In mod_python, this is expressed as:

def my_request_handler(req):
    req.add_common_vars()
    agent = req.subprocess_env.get("HTTP_USER_AGENT")

    # `agent` now contains the full user agent of the browser, or None

It's a basic CGI thing, but this is how mod_python gives it to you.

like image 176
Jed Smith Avatar answered Jan 30 '23 07:01

Jed Smith


The method suggested by Jed Smith works, but I was sure there was a simpler way.

The req.headers_in variable contains all the header info, and you can easily access the user agent using mod_python by calling:

req.headers_in[ 'User-Agent' ]

It is not necessary to call req.add_common_vars() when using this method.

like image 40
Paul Avatar answered Jan 30 '23 08:01

Paul