项目作者: codesorcery

项目描述 :
Java Useragent ANalyzer
高级语言: Java
项目地址: git://github.com/codesorcery/juan.git
创建时间: 2018-12-25T18:28:55Z
项目社区:https://github.com/codesorcery/juan

开源协议:MIT License

下载


Java Useragent ANalyzer

Build Status
Quality Gate
Coverage
License
Maven Central

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):

  1. <dependency>
  2. <groupId>com.github.codesorcery</groupId>
  3. <artifactId>juan</artifactId>
  4. <version>0.2.0</version>
  5. </dependency>

Or add it to your build.gradle (if you’re using Gradle):

  1. dependencies {
  2. compile('com.github.codesorcery:juan:0.2.0')
  3. }

The library can then be used as follows:

  1. import com.github.codesorcery.juan.UserAgentParser;
  2. import com.github.codesorcery.juan.ParsedUserAgent;
  3. import java.io.IOException;
  4. import java.net.URL;
  5. import java.nio.charset.Charset;
  6. public class UserAgentParserExample {
  7. private final UserAgentParser userAgentParser;
  8. public UserAgentParserExample() throws IOException {
  9. // To detect the device name and vendor for Android devices, we use Google's device list:
  10. URL deviceList =
  11. new URL("http://storage.googleapis.com/play_public/supported_devices.csv");
  12. userAgentParser =
  13. UserAgentParser.withPlayStoreDeviceList(deviceList, Charset.forName("UTF-16"));
  14. // If you do not need Android device info, you can use the parser without the device list:
  15. // userAgentParser = UserAgentParser.withoutPlayStoreDeviceList();
  16. }
  17. public void parsingExample() {
  18. String userAgentString =
  19. "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";
  20. ParsedUserAgent parsed =
  21. userAgentParser.parse(userAgentString);
  22. parsed.agent().getVendor(); // => Google
  23. parsed.agent().getName(); // => Chrome Mobile
  24. parsed.agent().getVersion(); // => 60.0.3112.107
  25. parsed.agent().getType(); // => Browser (mobile)
  26. parsed.agent().isCrawler(); // => false
  27. parsed.os().getVendor(); // => Google
  28. parsed.os().getName(); // => Android
  29. parsed.os().getVersion(); // => 7.0
  30. parsed.os().getType(); // => Mobile
  31. parsed.device().getVendor(); // => Samsung
  32. parsed.device().getName(); // => Galaxy S8 Active
  33. }
  34. }

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