github.com/chanxuehong/wechat@v0.0.0-20230222024006-36f0325263cd/util/wxver.go (about) 1 package util 2 3 import ( 4 "fmt" 5 "regexp" 6 "strconv" 7 "strings" 8 ) 9 10 // 获取微信客户端的版本. 11 // 12 // userAgent: 微信内置浏览器的 User-Agent; 13 // x, y, z, w: 如果微信版本为 5.3.1.2 则有 x==5, y==3, z==1, w==2 14 // err: 错误信息 15 func WXVersion(userAgent string) (x, y, z, w int, err error) { 16 userAgent = versionRegexp.FindString(userAgent) 17 if userAgent == "" { 18 err = fmt.Errorf("不是有效的微信浏览器 User-Agent: %s", userAgent) 19 return 20 } 21 userAgent = userAgent[len("MicroMessenger/"):] 22 23 strArr := strings.Split(userAgent, ".") 24 verArr := make([]int, len(strArr)) 25 26 for i, str := range strArr { 27 verArr[i], err = strconv.Atoi(str) 28 if err != nil { 29 err = fmt.Errorf("不是有效的微信浏览器 User-Agent: %s", userAgent) 30 return 31 } 32 } 33 34 switch len(verArr) { 35 default: 36 fallthrough 37 case 4: 38 x = verArr[0] 39 y = verArr[1] 40 z = verArr[2] 41 w = verArr[3] 42 return 43 case 3: 44 x = verArr[0] 45 y = verArr[1] 46 z = verArr[2] 47 return 48 case 2: 49 x = verArr[0] 50 y = verArr[1] 51 return 52 case 1: 53 x = verArr[0] 54 return 55 } 56 } 57 58 // Mozilla/5.0 (Linux; Android 4.4.4; Che1-CL10 Build/Che1-CL10; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/53.0.2785.49 Mobile MQQBrowser/6.2 TBS/043128 Safari/537.36 MicroMessenger/6.5.7.1041 NetType/WIFI Language/zh_CN 59 var versionRegexp = regexp.MustCompile(`MicroMessenger/\d+(\.\d+)*`)