diff options
| author | zhanghongqing <[email protected]> | 2020-08-27 09:37:41 +0800 |
|---|---|---|
| committer | zhanghongqing <[email protected]> | 2020-08-27 09:37:41 +0800 |
| commit | 7d1d3bca54782678f24be46d48bd6a8c1ca5c519 (patch) | |
| tree | 1ed749fdcc632cb37c3cbd67c90903abb20bfc2e | |
| parent | 1dc4fe2de9e33c4b61917138a0230f2aa38d63ad (diff) | |
提交nexus 配置
| -rw-r--r-- | pom.xml | 39 | ||||
| -rw-r--r-- | readme.md | 36 | ||||
| -rw-r--r-- | src/main/java/com/mesalab/ua/ClientParser.java | 1 | ||||
| -rw-r--r-- | src/main/java/com/mesalab/ua/OSParser.java | 7 | ||||
| -rw-r--r-- | src/test/java/com/mesalab/ua/Test.java | 46 | ||||
| -rw-r--r-- | src/test/java/com/mesalab/ua/UaTest.java | 2 |
6 files changed, 85 insertions, 46 deletions
@@ -4,11 +4,12 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> - <groupId>com.github.ua-parser</groupId> - <artifactId>uap-java</artifactId> + <groupId>com.zdjizhi</groupId> + <artifactId>galaxy-ua-parser</artifactId> <packaging>jar</packaging> - <version>1.4.4-SNAPSHOT</version> - <name>User Agent Parser for Java</name> + <name>galaxy</name> + <version>1.0.0</version> + <url>http://www.zdjizhi.com/galaxy-ua-parser</url> <description> Java implementation of the UA Parser library. Derives operating system, browser and device @@ -32,25 +33,35 @@ </developer> </developers> - <url>https://github.com/ua-parser/uap-java</url> - <scm> <connection>scm:git:git://github.com/ua-parser/uap-java.git</connection> <developerConnection>scm:git:ssh://github.com:ua-parser/uap-java.git</developerConnection> <url>http://github.com/ua-parser/uap-java/tree/master</url> </scm> - + <contributors> + <contributor> + <name>XX</name> + <url>https://</url> + </contributor> + </contributors> + <repositories> + <repository> + <id>nexu</id> + <name>Team Nexus Repository</name> + <url>http://192.168.40.125:8099/content/repositories/galaxy-ua-parser</url> + </repository> + + </repositories> <distributionManagement> - <snapshotRepository> - <id>ossrh</id> - <url>https://oss.sonatype.org/content/repositories/snapshots</url> - </snapshotRepository> <repository> - <id>ossrh</id> - <url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url> + <id>nexus</id> + <name>releases</name> + <url>http://192.168.40.125:8099/content/repositories/galaxy-ua-parser</url> + <uniqueVersion>true</uniqueVersion> </repository> </distributionManagement> - + + <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> @@ -20,8 +20,18 @@ you will then have the following folder `uap-java/uap-core` which contains the c To build the project, execute ``` mvn package + ``` +maven: +-------- +``` + <dependency> + <groupId>com.zdjizhi</groupId> + <artifactId>galaxy-ua-parser</artifactId> + <version>1.0.0</version> + </dependency> +``` Usage: -------- ```java @@ -29,20 +39,24 @@ Usage: ... - String uaString = "Mozilla/5.0 (iPhone; CPU iPhone OS 5_1_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9B206 Safari/7534.48.3"; + String uaString = "Mozilla/5.0 (Linux; U; android 2.3.7; en-us; Nexus One Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1"; Parser uaParser = new Parser(); - Client c = uaParser.parse(uaString); + UserAgent u = uaParser.parse(uaString); - System.out.println(c.client.family); // => "Mobile Safari" - System.out.println(c.client.major); // => "5" - System.out.println(c.client.minor); // => "1" + System.out.println(u.client.name); // => "Safari" + System.out.println(u.client.type); // => "Browser" + System.out.println(u.client.engine); // => "WebKit" + System.out.println(u.client.engineVersion); // => "533.1" - System.out.println(c.os.family); // => "iOS" - System.out.println(c.os.major); // => "5" - System.out.println(c.os.minor); // => "1" + System.out.println(c.os.name); // => "Android" + System.out.println(c.os.version); // => "2" + System.out.println(c.os.platform); // => "HTC Nexus One" - System.out.println(c.device.family); // => "iPhone" + System.out.println(c.device.name); // => "HTC Nexus One" + System.out.println(c.device.brand); // => "HTC" + System.out.println(c.device.model); // => "Nexus One" + System.out.println(c.device.type); // => "MOBILE" ``` ## Publish to Sonatype OSSRH and Maven Central Repository @@ -99,6 +113,4 @@ Changelog can be found [here](https://github.com/ua-parser/uap-java/wiki#changel Author: ------- - * Steve Jiang [@sjiang](https://twitter.com/sjiang) - - Based on the python implementation by Lindsey Simon and using agent data from BrowserScope + * Steve Jiang [@zdjz](http://www.zdjizhi.com/) diff --git a/src/main/java/com/mesalab/ua/ClientParser.java b/src/main/java/com/mesalab/ua/ClientParser.java index 24292b2..1f6126b 100644 --- a/src/main/java/com/mesalab/ua/ClientParser.java +++ b/src/main/java/com/mesalab/ua/ClientParser.java @@ -127,7 +127,6 @@ public class ClientParser { type = "Other"; } - System.out.println("client: " + pattern); return name == null ? null : new Client(name, version, type, engine, engineVersion); } diff --git a/src/main/java/com/mesalab/ua/OSParser.java b/src/main/java/com/mesalab/ua/OSParser.java index 849d534..3813fa3 100644 --- a/src/main/java/com/mesalab/ua/OSParser.java +++ b/src/main/java/com/mesalab/ua/OSParser.java @@ -105,22 +105,25 @@ public class OSParser { } } else if (groupCount >= 1) { name = matcher.group(1); + } else { + name = "Other"; } if (versionReplacement != null) { version = getReplacement(matcher, versionReplacement); } else if (groupCount >= 2) { version = matcher.group(2); + } else { + version = "Other"; } - - if (platformReplacement != null) { platform = getReplacement(matcher, platformReplacement); } else { platform = "Other"; } +// System.out.println("oa : "+pattern); return name == null ? null : new OS(name, version, platform); } diff --git a/src/test/java/com/mesalab/ua/Test.java b/src/test/java/com/mesalab/ua/Test.java index c9db7a1..1775c00 100644 --- a/src/test/java/com/mesalab/ua/Test.java +++ b/src/test/java/com/mesalab/ua/Test.java @@ -1,12 +1,10 @@ package com.mesalab.ua; -import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.mesalab.ua.dto.UserAgent; -import eu.bitwalker.useragentutils.Browser; -import nl.basjes.parse.useragent.UserAgentAnalyzer; import org.springframework.http.HttpEntity; import org.springframework.util.LinkedMultiValueMap; +import org.springframework.util.StopWatch; import org.springframework.web.client.RestTemplate; import java.io.BufferedWriter; @@ -48,7 +46,7 @@ public class Test { //构建参数 Map<String, Object> deleteParamMap = getDeleteSource(); String url = "http://" + "192.168.40.193:8123"; - deleteParamMap.put("query", "SELECT DISTINCT (user_agent) FROM k18_ods.tbs_ods_ntc_http_log_local where notEmpty(user_agent) LIMIT 100 FORMAT JSON;"); + deleteParamMap.put("query", "SELECT DISTINCT (user_agent) FROM k18_ods.tbs_ods_ntc_http_log_local where notEmpty(user_agent) LIMIT 100000 FORMAT JSON;"); // 发送请求解析结果 String result = restTemplate.postForObject(getUrlWithParams(url, deleteParamMap), httpEntity, String.class); @@ -61,30 +59,46 @@ public class Test { Collections.sort(uaList); String filePath = "C:\\Users\\Administrator\\Desktop\\data\\2.2.0\\uap.txt"; - UserAgentAnalyzer uaa = UserAgentAnalyzer - .newBuilder() - .hideMatcherLoadStats() - .withCache(10000) - .build(); +// UserAgentAnalyzer uaa = UserAgentAnalyzer +// .newBuilder() +// .hideMatcherLoadStats() +// .withCache(10000) +// .build(); //输出到文件 try(BufferedWriter fos = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(filePath)))){ Parser parser = new Parser(); - int num =0; - for ( String ua : uaList) { - num++; + double num =0; + double num2 =0; + StopWatch sw = new StopWatch(); + sw.start(); + System.err.println("***********开始解析***********"); + for ( String ua : uaList) { + UserAgent parse = parser.parse(ua); // eu.bitwalker.useragentutils.UserAgent userAgent = eu.bitwalker.useragentutils.UserAgent.parseUserAgentString(ua); - Browser browser = Browser.parseUserAgentString(ua); +// Browser browser = Browser.parseUserAgentString(ua); // System.err.println(JSON.toJSONString(operatingSystem)); // System.err.println(JSON.toJSONString(userAgent)); // System.err.println(JSON.toJSONString(browser)); - nl.basjes.parse.useragent.UserAgent.ImmutableUserAgent agent = uaa.parse(ua); +// nl.basjes.parse.useragent.UserAgent.ImmutableUserAgent agent = uaa.parse(ua); // System.err.println(ua); - System.err.println("\n"+num+": "+"\n"+JSON.toJSONString( parse.client ,true)+"\n"+"browser: "+browser+"\n"+"DeviceClass:"+agent); +// System.err.println("\n"+num+": "+"\n"+JSON.toJSONString( parse.os ,true)+ "\n"+"DeviceClass:"+agent); + if ("Other".equals(parse.os.name)||"Other".equals(parse.os.version)||"Other".equals(parse.os.platform)){ + num++; + } + + if ("Other".equals(parse.device.name)||"Other".equals(parse.device.type)||"Other".equals(parse.device.brand)||"Other".equals(parse.device.model)){ + num2++; + } // fos.write(JSON.toJSONString( parser.parse(ua))); // fos.newLine(); } - }; + sw.stop(); + System.out.println("解析ua 用时:"+ sw.getTotalTimeSeconds()+" S"); + System.out.println("总共ua os条数:"+ uaList.size()+", 未解出条数:"+num+" , 解析率为:"+String.format("%.2f %%",((uaList.size()-num)/uaList.size())*100)); + System.out.println("总共ua device条数:"+ uaList.size()+", 未解出条数:"+num2+" , 解析率为:"+String.format("%.2f %%",(((uaList.size()-num2)/uaList.size())*100))); + System.err.println("***********结束解析***********"); + } } diff --git a/src/test/java/com/mesalab/ua/UaTest.java b/src/test/java/com/mesalab/ua/UaTest.java index fe80af4..7e2143d 100644 --- a/src/test/java/com/mesalab/ua/UaTest.java +++ b/src/test/java/com/mesalab/ua/UaTest.java @@ -16,7 +16,7 @@ public class UaTest { try { Parser uaParser = new Parser(); UserAgent c = uaParser.parse(uaString); - System.err.println(c.client); + System.err.println(c); System.out.println("============================================="); System.out.println("============================================="); |
