2014-03-13 6 views
9

Was für einen besten Weg, um parse User Agenten String aus dem hier django request?HTTP_USER_AGENT Zeichenfolge in Django parsen.

request.META.get('HTTP_USER_AGENT', '') 

ist, was ich in der Zeichenfolge bekommen.

Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.146 Safari/537.36

nicht sicher, wie diese Informationen zu analysieren.

Gibt es irgendwelche Kosten (Zeit, + Speicher) effiziente Lösung. Ich muss nur die Zeichenfolge analysieren, das ist alles.

+0

Bitte erläutern Sie, welche Informationen Sie benötigen und warum. – tjati

+0

Ich habe einen Benutzer, der Middleware überwacht, und speichert HTTP_USER_AGENT Informationen in der Datenbank. Ich war neugierig darauf, zu wissen, welche Art von Browser meine Benutzer die meiste Zeit verwenden? das erfordert, dass ich die HTTP_USER_AGENT-Zeichenfolge analysiere. – Clayton

Antwort

21

können Sie diese Bibliothek versuchen:

https://pypi.python.org/pypi/user-agents/ 

Beispiel:

from user_agents import parse 

# iPhone's user agent string 
ua_string = 'Mozilla/5.0 (iPhone; CPU iPhone OS 5_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9B179 Safari/7534.48.3' 
user_agent = parse(ua_string) 

# Accessing user agent's browser attributes 
user_agent.browser # returns Browser(family=u'Mobile Safari', version=(5, 1), version_string='5.1') 
user_agent.browser.family # returns 'Mobile Safari' 
user_agent.browser.version # returns (5, 1) 
user_agent.browser.version_string # returns '5.1' 

# Accessing user agent's operating system properties 
user_agent.os # returns OperatingSystem(family=u'iOS', version=(5, 1), version_string='5.1') 
user_agent.os.family # returns 'iOS' 
user_agent.os.version # returns (5, 1) 
user_agent.os.version_string # returns '5.1' 

# Accessing user agent's device properties 
user_agent.device # returns Device(family='iPhone') 
user_agent.device.family # returns 'iPhone' 
+0

Dies ist eine Art Middleware. also ich frage mich, wie effizient es ist? wie es immer mit neuer Anfrage ausgeführt wird. – Clayton

+0

Sie können Ihren eigenen Parser mit 'regex' schreiben, wenn Sie vordefinierte Details wünschen. Um es effizient zu machen, können Sie es in Sitzung speichern. Wird in der Sitzung reminiert, bis es abläuft. Wenn es also in der Sitzung gefunden wird, muss nicht erneut geparst werden. –

+0

Das ist was ich meine, können Sie die 'HTTP_USER_AGENT' Zeichenfolge sehen? 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, wie Gecko) Chrome/33.0.1750.146 Safari/537.36' Ich habe es vom Chrome angefordert, und es hat alle Arten von Broswer-Informationen, welche Technik zu folgen Parsing dies? – Clayton