78 lines
2.2 KiB
Go
78 lines
2.2 KiB
Go
package xuexitong
|
|
|
|
import (
|
|
"crypto/md5"
|
|
"encoding/hex"
|
|
"fmt"
|
|
"math/rand"
|
|
"strings"
|
|
)
|
|
|
|
const (
|
|
APP_VERSION = "6.6.4"
|
|
DEVICE_VENDOR = "MI10"
|
|
BUILD = "10831_263"
|
|
//BUILD = "10903_285"
|
|
ANDROID_VERSION = "Android 11"
|
|
)
|
|
|
|
var IMEI = TokenHex(16)
|
|
|
|
// GetUA 构建并获取 UA
|
|
func GetUA(uaType string) string {
|
|
switch uaType {
|
|
case "mobile":
|
|
//return strings.Join([]string{
|
|
// fmt.Sprintf("Dalvik/2.1.0 (Linux; U; %s; %s Build/SKQ1.210216.001)", ANDROID_VERSION, DEVICE_VENDOR),
|
|
// fmt.Sprintf("(schild:%s)", MobileUASign(DEVICE_VENDOR, "zh_CN", APP_VERSION, BUILD, IMEI)),
|
|
// fmt.Sprintf("(device:%s)", DEVICE_VENDOR),
|
|
// "Language/zh_CN",
|
|
// fmt.Sprintf("com.chaoxing.mobile/ChaoXingStudy_3_%s_android_phone_%s", APP_VERSION, BUILD),
|
|
// //APP_VERSION,
|
|
// fmt.Sprintf("(@Kalimdor)_%s", IMEI),
|
|
//}, " ")
|
|
|
|
return strings.Join([]string{
|
|
fmt.Sprintf("Mozilla/5.0 (Linux; %s; %s Build/OPM1.171019.019; wv)", ANDROID_VERSION, DEVICE_VENDOR),
|
|
fmt.Sprintf("AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/71.0.3578.99 Mobile Safari/537.36"),
|
|
fmt.Sprintf("(schild:%s)", MobileUASign(DEVICE_VENDOR, "zh_CN", APP_VERSION, BUILD, IMEI)),
|
|
fmt.Sprintf("(device:%s)", DEVICE_VENDOR),
|
|
"Language/zh_CN",
|
|
fmt.Sprintf("com.chaoxing.mobile/ChaoXingStudy_3_%s_android_phone_%s", APP_VERSION, BUILD),
|
|
fmt.Sprintf("(@Kalimdor)_%s", IMEI),
|
|
}, " ")
|
|
case "web":
|
|
return "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36 Edg/107.0.1418.35"
|
|
default:
|
|
return ""
|
|
}
|
|
}
|
|
|
|
// 用于生成IMEI
|
|
func TokenHex(len int) string {
|
|
b := make([]byte, 16)
|
|
_, err := rand.Read(b)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
token := hex.EncodeToString(b)
|
|
return token
|
|
}
|
|
|
|
func MobileUASign(model, locale, version, build, imei string) string {
|
|
// 拼接字符串,和 Python 的 " ".join 相同
|
|
str := strings.Join([]string{
|
|
"(schild:ipL$TkeiEmfy1gTXb2XHrdLN0a@7c^vu)",
|
|
fmt.Sprintf("(device:%s)", model),
|
|
fmt.Sprintf("Language/%s", locale),
|
|
fmt.Sprintf("com.chaoxing.mobile/ChaoXingStudy_3_%s_android_phone_%s", version, build),
|
|
fmt.Sprintf("(@Kalimdor)_%s", imei),
|
|
}, " ")
|
|
|
|
// 计算 md5
|
|
hash := md5.Sum([]byte(str))
|
|
|
|
// 转换为小写 hex 字符串
|
|
return fmt.Sprintf("%x", hash)
|
|
}
|