def test_user_agent_recognition(self): user_agent_list = { "Mozilla/5.0 (iPad; U; CPU OS 4_2_1 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8C148 Safari/6533.18.5":{ 'platform': 'iPhone OSX', } } for user_agent, user_agent_meta in user_agent_list.items(): result = detect_user_agent(user_agent) self.assertEqual(result['platform'], user_agent_meta['platform'])
def test_user_agent_recognition(self): user_agent_list = { "Mozilla/5.0 (iPad; U; CPU OS 4_2_1 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8C148 Safari/6533.18.5": { 'platform': 'iPhone OSX', } } for user_agent, user_agent_meta in user_agent_list.items(): result = detect_user_agent(user_agent) self.assertEqual(result['platform'], user_agent_meta['platform'])
def process_request(self, request): """ Add browser features to request object """ _user_agent = request.META.get('HTTP_USER_AGENT', 'Unknown') _user_agent = detect_user_agent(_user_agent) user_agent = _user_agent.copy() keys = user_agent.keys() for key in keys: if key not in NEEDED_VALUES: user_agent.pop(key) request.browser_info = user_agent
start = time.time() result = get_user_agent_characteristics(candidates[-1]) return result def all_possible_matches(user_agent_string): candidates = [] for agent in agents: if agent['regex'].match(user_agent_string): candidates.append(agent) candidates.sort(key=lambda x: len(x['name'])) return [(item['name'], item['depth']) for item in candidates] if __name__=="__main__": ua = "Mozilla/5.0 (iPad; U; CPU OS 4_2_1 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8C148 Safari/6533.18.5" print detect_user_agent(ua)['ismobiledevice'] ua = "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.204 Safari/534.16" print detect_user_agent(ua)['browser'] ua = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:2.0) Gecko/20100101 Firefox/4.0" print detect_user_agent(ua)['browser'] ########NEW FILE######## __FILENAME__ = views from django.http import HttpResponseRedirect def force_desktop_version(request): """ Adds a session variable marking if the user wishes to view the desktop version """ request.session['force_desktop_version'] = True
return result def all_possible_matches(user_agent_string): candidates = [] for agent in agents: if agent['regex'].match(user_agent_string): candidates.append(agent) candidates.sort(key=lambda x: len(x['name'])) return [(item['name'], item['depth']) for item in candidates] if __name__ == "__main__": ua = "Mozilla/5.0 (iPad; U; CPU OS 4_2_1 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8C148 Safari/6533.18.5" print detect_user_agent(ua)['ismobiledevice'] ua = "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.204 Safari/534.16" print detect_user_agent(ua)['browser'] ua = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:2.0) Gecko/20100101 Firefox/4.0" print detect_user_agent(ua)['browser'] ########NEW FILE######## __FILENAME__ = views from django.http import HttpResponseRedirect def force_desktop_version(request): """ Adds a session variable marking if the user wishes to view the desktop version """