https://github.com/codesorcery/juan
Java Useragent ANalyzer
https://github.com/codesorcery/juan
java java-8 java-library user-agent user-agent-analysis user-agent-analyzer user-agent-parser
Last synced: 16 days ago
JSON representation
Java Useragent ANalyzer
- Host: GitHub
- URL: https://github.com/codesorcery/juan
- Owner: codesorcery
- License: mit
- Created: 2018-12-25T18:28:55.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2019-01-13T21:25:56.000Z (over 7 years ago)
- Last Synced: 2025-10-26T22:29:40.359Z (9 months ago)
- Topics: java, java-8, java-library, user-agent, user-agent-analysis, user-agent-analyzer, user-agent-parser
- Language: Java
- Size: 162 KB
- Stars: 2
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# Java Useragent ANalyzer
[](https://travis-ci.org/codesorcery/juan)
[](https://sonarcloud.io/dashboard?id=com.github.codesorcery%3Ajuan)
[](https://sonarcloud.io/dashboard?id=com.github.codesorcery%3Ajuan)
[](https://choosealicense.com/licenses/mit/)
[](https://search.maven.org/search?q=g:%22com.github.codesorcery%22%20AND%20a:%22juan%22)
A fast, thread-safe and dependency-free user agent parser for Java 8+.
## Usage
Simply add the library to the dependency section of your pom.xml (if you're using Maven):
```xml
com.github.codesorcery
juan
0.2.0
```
Or add it to your build.gradle (if you're using Gradle):
````groovy
dependencies {
compile('com.github.codesorcery:juan:0.2.0')
}
````
The library can then be used as follows:
```java
import com.github.codesorcery.juan.UserAgentParser;
import com.github.codesorcery.juan.ParsedUserAgent;
import java.io.IOException;
import java.net.URL;
import java.nio.charset.Charset;
public class UserAgentParserExample {
private final UserAgentParser userAgentParser;
public UserAgentParserExample() throws IOException {
// To detect the device name and vendor for Android devices, we use Google's device list:
URL deviceList =
new URL("http://storage.googleapis.com/play_public/supported_devices.csv");
userAgentParser =
UserAgentParser.withPlayStoreDeviceList(deviceList, Charset.forName("UTF-16"));
// If you do not need Android device info, you can use the parser without the device list:
// userAgentParser = UserAgentParser.withoutPlayStoreDeviceList();
}
public void parsingExample() {
String userAgentString =
"Mozilla/5.0 (Linux; Android 7.0; SM-G892A Build/NRD90M; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/60.0.3112.107 Mobile Safari/537.36";
ParsedUserAgent parsed =
userAgentParser.parse(userAgentString);
parsed.agent().getVendor(); // => Google
parsed.agent().getName(); // => Chrome Mobile
parsed.agent().getVersion(); // => 60.0.3112.107
parsed.agent().getType(); // => Browser (mobile)
parsed.agent().isCrawler(); // => false
parsed.os().getVendor(); // => Google
parsed.os().getName(); // => Android
parsed.os().getVersion(); // => 7.0
parsed.os().getType(); // => Mobile
parsed.device().getVendor(); // => Samsung
parsed.device().getName(); // => Galaxy S8 Active
}
}
```
## Benchmark
Benchmark performed on an Intel® Core™ 2 Duo P8600 CPU @ 2.4GHz:
Benchmark | Mode | Cnt | Score | Error | Units
----------------------------------------------------- | ----- | ---- | ----- | ------- | ------
UserAgentParserBenchmark.amazonKindleFireSilkBrowser | avgt | 5 | 4.039 | ± 0.083 | us/op
UserAgentParserBenchmark.curl | avgt | 5 | 1.791 | ± 0.138 | us/op
UserAgentParserBenchmark.iPadMobileSafari | avgt | 5 | 4.895 | ± 0.045 | us/op
UserAgentParserBenchmark.iPhoneInstagram | avgt | 5 | 5.209 | ± 0.106 | us/op
UserAgentParserBenchmark.linuxFirefox | avgt | 5 | 3.516 | ± 0.029 | us/op
UserAgentParserBenchmark.macOsSafari | avgt | 5 | 3.026 | ± 0.030 | us/op
UserAgentParserBenchmark.samsungGalaxyS8ChromeMobile | avgt | 5 | 5.188 | ± 0.089 | us/op
UserAgentParserBenchmark.windows10Edge | avgt | 5 | 3.886 | ± 0.064 | us/op
UserAgentParserBenchmark.windowsPhone | avgt | 5 | 8.444 | ± 0.079 | us/op