woothee
Cross-language UserAgent classifier library, python implementation
What it is and what it does
Woothee is a Python user-agent string parser that extracts structured information from HTTP User-Agent headers. It identifies the browser name and version, operating system, device category (pc, smartphone, mobilephone, appliance, crawler, or misc), vendor, and OS version. The package provides two main functions: parse() for detailed extraction and is_crawler() for fast crawler detection.
The library depends only on six for Python 2/3 compatibility and ships as a pure-Python wheel with no compiled dependencies. It's designed for web applications that need to classify incoming requests by client type—useful in analytics, content adaptation, or bot filtering. The package has been stable since 2015 but receives no active maintenance; its user-agent patterns reflect knowledge frozen around 2019.
Use it for:
- Classify incoming HTTP requests by browser and OS in web analytics or logging pipelines.
- Detect crawler traffic (bots, search engines) to apply different rate limits or caching rules.
- Adapt web content or API responses based on detected device category (mobile vs. desktop).
- Build device-aware feature flags or A/B testing logic without external services.
- Generate reports on user-agent distribution across a web application's traffic.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Woothee parses user-agent strings to identify browsers, operating systems, devices, and crawlers, returning structured data with name, version, OS, category, and vendor information.
Yes, if your user-agent patterns are stable and pre-2019. The package is lightweight, dependency-minimal, and has no known vulnerabilities. However, it is dormant—no updates since 2019—so it will not recognize modern browsers, crawlers, or OS releases. Install only if you can tolerate a frozen knowledge base or if you're parsing historical data. For real-time classification of current clients, consider an actively maintained alternative.
Install
woothee on PyPI
pip
pip install wootheeuv
uv add wootheepoetry
poetry add wootheeInstalling woothee
Before you install
Low install friction with a single lightweight dependency (six). Maintenance is dormant—last release was 2019-08-08 and no commits since 2024-07-09—but the package is marked Production/Stable and has seen no recent security issues.
License in practice
Licensed under Apache License 2.0 (permissive), allowing use in commercial and open-source projects with minimal restrictions; you must include a copy of the license and state significant changes.
Quickstart
pip install woothee
import woothee
result = woothee.parse("Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0)")
print(result['name'], result['os'], result['version'])
Verify before relying
- Whether the package's user-agent database is current enough for modern browsers and crawlers released after 2019.
- Performance characteristics when parsing large volumes of user-agent strings.
Package facts
| License | Apache License 2.0 (permissive) |
| Python support | not specified |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 1 — six |
| Maintenance | dormant — 2,563 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 80,211/month — #14,308 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: woothee-1.10.1-py2.py3-none-any.whl
Keywords: web, user-agent, parser
Tags
More Python Modules packages
Converts domain names between Unicode and…
permissive · top 100 on PyPI
setuptoolsSetuptools is a Python build backend and…
permissive · top 100 on PyPI
PyYAMLPyYAML parses and emits YAML 1.1 data format,…
permissive · top 100 on PyPI
pydanticPydantic validates Python data structures…
permissive · top 100 on PyPI
annotated-typesProvides reusable metadata objects for use with…
permissive · top 100 on PyPI
typing-inspectionProvides runtime tools to inspect and…
permissive · top 100 on PyPI
fake-useragentGenerates random or browser-specific user-agent…
permissive · top 5,000 on PyPI
user-agentsParses browser user agent strings to identify…
permissive · top 5,000 on PyPI
crawlerdetectIdentifies bots, crawlers, and spiders by…
permissive · top 15,000 on PyPI
user-agentGenerates random, valid web user agent strings…
permissive · top 15,000 on PyPI
httpagentparserParses HTTP User-Agent strings to extract and…
unclear · top 15,000 on PyPI
pymobiledetectDetects mobile phones and tablets from HTTP…
agpl · top 15,000 on PyPI
fake-headersGenerates realistic User-Agent strings and HTTP…
permissive · top 15,000 on PyPI
ua-parserParses user-agent strings to extract browser,…
permissive · top 1,000 on PyPI
robotspyParses robots.txt files according to RFC 9309…
permissive · top 15,000 on PyPI
wptserveA Python web server built for testing web…
permissive · top 15,000 on PyPI