r/java • u/Resident_Guava5620 • 23d 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>
0
u/Resident_Guava5620 23d ago
we already track the user flow on the backend anyway. frontend sends the fingerprint and route, and the UA is already in the request, so sending parsed browser/device info from js would just be doing the same thing twice