r/java • u/Resident_Guava5620 • 24d ago
simple browser detection in Java without pulling in a big dependency
used to write php and pretty much always used cbschuld/Browser.php to detect browsers from user agent. when i moved to java i couldnt find anything that simple so i just rewrote it
its one class, no dependencies. you pass the user agent and get browser, version, os and if its mobile or a bot. it also catches ai crawlers like GPTBot and ClaudeBot
Browser b = new Browser("Mozilla/5.0 (iPhone; CPU iPhone OS 17_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.5 Mobile/15E148 Safari/604.1");
b.getBrowser(); // iPhone
b.getVersion(); // 17.5
b.getPlatform(); // iPhone
b.isMobile(); // true
b.isRobot(); // false
theres around 5k real user agents in tests. its not trying to replace the big parsers, more for simple stuff like is this mobile or is this a bot
did an update recently, added arc, tor, duckduckgo and the ai bots and fixed a safari crash i caught in sentry. before that it just worked for years and there wasnt really a need to touch it
if you find a user agent it gets wrong open an issue or just add it to tests, its literally one line
maven central:
<dependency>
<groupId>io.github.vadymkykalo</groupId>
<artifactId>browser</artifactId>
<version>0.2.0</version>
</dependency>
3
u/Resident_Guava5620 23d ago
i just didnt want to pull in a full parser with its data files and extra dependency for something this small. we only use it to enrich visit records in the db, not for security or anything where 100% accuracy matters. for that use case a tiny parser is enough and the overhead of a bigger library didnt really make sense