⭐ 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.
Metadata
Release files for user-agent-parser 0.2.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| user_agent_parser-0.2.1.tar.gz | 34.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| user_agent_parser-0.2.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 70.2 kB
Release files / user_agent_parser-0.2.1.tar.gz
| Download URL | user_agent_parser-0.2.1.tar.gz |
|---|---|
| Size | 34.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
74e0ff532a08dc753ab0e5d6eb687720e33ee65d4c2c9436451150f247d3ae19
|
|
BLAKE2b-256 checksum How to use checksums |
e8ed360b8323db5f863a073475d267ba5932985b68494c3f9c1efd6475f5ab47
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/2.3.2 CPython/3.13.2 Darwin/25.3.0
|
Release files / user_agent_parser-0.2.1-py3-none-any.whl
| Download URL | user_agent_parser-0.2.1-py3-none-any.whl |
|---|---|
| Size | 35.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
26dbde53923fa17cff18d8d96d5f0450cdac6f5e5e29ab59774cb1178b671520
|
|
BLAKE2b-256 checksum How to use checksums |
96c47b758cc99f9005b185596321c32a71c472675e40d77a57762110816d5d80
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/2.3.2 CPython/3.13.2 Darwin/25.3.0
|