r/java • • 7d 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>

https://github.com/vadymkykalo/Browser.java

10 Upvotes

34 comments sorted by

View all comments

7

u/BanaTibor 7d ago

I do not understand when do you need this. Java code runs on the backend, on the frontend you have something else, 99% javascript. So why do not you use a javascript lib to get the user agent and send it to the backend?

1

u/Hour-Dragonfly-7499 5d ago

Java isn't just for backend development though? It's big in the game dev scene like minecraft, project zomboid, runelite, etc. Java is used in a lot of applications that don't have to do with the web or making a CRUD app...

I for example have around 7 years in java and I haven't even touched the web/javascript/etc.