Initial commit

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-15 13:57:10 +08:00
co-authored by Claude Opus 5
commit 8679200f41
1897 changed files with 257900 additions and 0 deletions
Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

+178
View File
@@ -0,0 +1,178 @@
package usertruth
var routers100DIC = map[string]byte{}
// NDArg 正态分布参数
type NDArg struct {
Mu float64 //期望
Sigma float64 //方差
}
// 2020-01-16 注册后20分钟用户请求模型
var routersND = map[string]NDArg{
"/api/app/mine/info": {26.407859530084107, 26.275135225050672},
"/api/app/vid/play": {21.995098927091213, 22.763576665825333},
"/api/app/vid/m3u8": {21.38402911495771, 16.07871338083366},
"/api/app/inform/preview": {21.104663191415995, 22.311287968524443},
"/api/app/search/list": {16.43460478349782, 16.772572660528393},
"/api/app/tag/vid/list": {10.967752839372634, 13.369935046469067},
"/api/app/vid/user/count": {9.896102719033232, 3.4429093551189482},
"/api/app/tone/vid/list": {8.743154857326067, 9.65069066828318},
"/api/app/mine/collection": {6.536321436569823, 7.610521407156875},
"/api/app/vid/location/list": {5.338658762504632, 5.621848968877574},
"/api/app/code/exchange": {5.1810193321616875, 5.485312496520593},
"/api/app/mine/like": {4.867128098122042, 4.933705582783718},
"/api/app/mine/buyVid": {4.767059446038627, 4.724878728679717},
"/api/app/comment/list": {4.64976856062903, 5.359347112149345},
"/api/app/tag/related/list": {4.615384615384615, 6.7392728011548915},
"/api/app/wonder/vid/list": {4.315633958103638, 3.7338462032373845},
"/api/app/mine/txnact/zfb/get": {4, 0},
"/api/app/mine/qianbao": {3.4738025246411897, 3.1117706785490036},
"/api/app/mine/collect/infoList": {3.204887218045113, 1.020198360787845},
"/api/app/mine/wallet": {2.996144238079722, 2.586675640022099},
"/api/app/vip/vipTypeList": {2.968098724973117, 2.484641338810541},
"/api/app/vid/uploadDotStream": {2.918918918918919, 3.8222610385593505},
"/api/app/vid/hot/list": {2.875, 1.8850918886280925},
"/api/app/mine/mobileLogin": {2.726661392405063, 1.6229608705686391},
"/api/app/ads/click": {2.4444444444444446, 2.1481105849018385},
"/api/app/im/sign": {2.347451944568619, 0.8751527848778612},
"/api/app/mine/collect": {2.3469945355191255, 2.9005078540123854},
"/api/app/thumbsUp": {2.2889385712764825, 3.1431258095942107},
"/api/app/mine/rchg": {2.1419141914191417, 2.013939575838625},
"/api/app/tag/info": {2.1227564333597635, 2.5561450060499316},
"/api/app/mine/recharge": {2.0362889421431016, 1.6761985460556246},
"/api/app/search/wonder/list": {2, 1.3228756555322954},
"/api/app/mine/txnact/alipay/add": {2, 1.4142135623730951},
"/api/app/comment/send": {1.913767019667171, 2.5678041294299385},
"/api/app/mine/follow": {1.8853146853146854, 3.3834188159801752},
"/api/app/hotspot/hotvid/list": {1.865814696485623, 2.5320789429330213},
"/api/app/tag/group": {1.7860714285714285, 1.8002080767465662},
"/api/app/mine/rchgTypeList": {1.6759002770083102, 1.2730164933835963},
"/api/app/recommend/vid/list": {1.6304768202631077, 1.0233659536842432},
"/api/app/mine/rechargeTypeList": {1.5427667889853516, 1.1205787585984197},
"/api/app/vid/uploadStatic": {1.449820788530466, 0.9225822223810688},
"/api/app/search/index": {1.4444444444444444, 1.1823747080552576},
"/api/app/comment/info": {1.4204250907205807, 0.935701317800514},
"/api/app/follow/list": {1.3652118833265838, 0.7420120249349482},
"/api/app/follow/dynamics/list": {1.365148416167447, 0.741941284686654},
"/api/app/tag/list": {1.3538640846333154, 0.7232666995832582},
"/api/app/thumbsDown": {1.2926500337154416, 0.9039536361790543},
"/api/app/mine/txnact/alipay/get": {1.2666666666666666, 0.7037315505489967},
"/api/app/vip/history": {1.2410660205935797, 0.6937188863036616},
"/api/app/proxy/bindRecord": {1.2203389830508475, 0.8586970175032882},
"/api/app/vid/location/info": {1.1945846718678292, 0.6303093874119001},
"/api/app/mine/txnact/bank/get": {1.1666666666666667, 0.408248290463863},
"/api/app/vid/remove": {1.16, 0.4725815626252608},
"/api/app/product/buy": {1.1565881604073838, 0.6167973028410264},
"/api/app/mine/rchg/order": {1.1441048034934498, 0.45999876756469205},
"/api/app/mine/bills": {1.1328273244781784, 0.4869047253532734},
"/api/app/proxy/bind": {1.131694468832309, 0.5337846350555656},
"/api/app/proxy/info": {1.1218504750103264, 0.4259428578212287},
"/api/app/proxy/incomes": {1.1214876033057852, 0.42565643424200655},
"/api/app/hotspot/wonder/list": {1.1149991246498598, 0.37056247336640125},
"/api/app/hotspot/area": {1.1148807964369924, 0.37156235329843224},
"/api/app/mine/income/works": {1.1128472222222223, 0.39046222453941565},
"/api/app/hotspot/rank": {1.101991604894168, 0.3479544659830258},
"/api/app/vid/submit": {1.09478672985782, 0.35257059679988395},
"/api/app/tag/add/new": {1.0909090909090908, 0.29424494316824984},
"/api/app/hotspot/htag": {1.0888888888888888, 0.35548299425426816},
"/api/app/withdraw/type": {1.088, 0.3363945456195459},
"/api/app/rank/hotsearch/list": {1.0820793433652531, 0.3332596161826353},
"/api/app/inform/notice/list": {1.0557451649601821, 0.25750413145206313},
"/api/app/recommend/user/list": {1.0482115085536547, 0.24806240809464628},
"/api/app/follow/fans/list": {1.0432766615146831, 0.22529050210078802},
"/api/app/comment/reply/list": {1.0383064516129032, 0.19212883629499877},
"/api/app/like/record/list": {1.0357142857142858, 0.1857721136109739},
"/api/app/withdraw/order": {1, 0},
"/api/app/mine/txnact/yh/get": {1, 0},
"/api/app/mine/txnact/zfb/add": {1, 0},
"/api/app/mine/report/types/list": {1, 0},
"/api/app/mine/report": {1, 0},
}
var qCountND = NDArg{
18.87662,
3.6234249913154857,
}
// truthPR 分析路由请求数映射,返回用户真实度[0,100],得分越高用户越接近真实用户,反之越接近异常用户(score < 1)
// 注意仅评价routersND中存在的router
// @定义 用户真实度-用户是真实用户的概率
func truthPR(qCountMap map[string]int64, routersND map[string]NDArg) float64 {
var scode float64
var count int
for router, qCount := range qCountMap {
ndArg, ok := routersND[router]
if !ok {
continue //仅评价routersND中存在的router
}
if _, ok = routers100DIC[router]; ok { //真实用户标志性的请求直接返回100分
return 100
}
if ndArg.Sigma == 0 {
continue //用户访问数不服从正态分布
}
//用户访问数服从正态分布
scode += NormalDistributionPR(float64(qCount), ndArg.Mu, ndArg.Sigma)
count++
}
if count != 0 {
scode = scode / float64(count)
}
qCountScode := NormalDistributionPR(float64(len(qCountMap)), qCountND.Mu, qCountND.Sigma)
return scode*50 + qCountScode*50
}
// NormalDistributionPR 通过积分获取标准正态分布概率(0,1)
func NormalDistributionPR(a, μ, σ float64) float64 {
code := 0.01 //概率得分
if σ == 0 { //方差为零 不评分
return 0
}
z := (a - μ) / σ //标准正态分布Z分数
if z >= 3 {
code += 0.01
}
if z >= 2.5 {
code += 0.49
}
if z >= 2 {
code += 1.66
}
if z >= 1.5 {
code += 4.4
}
if z >= 1 {
code += 9.19
}
if z >= 0.5 {
code += 14.98
}
if z >= 0 {
code += 19.15
}
if z >= -0.5 {
code += 19.15
}
if z >= -1 {
code += 14.98
}
if z >= -1.5 {
code += 9.19
}
if z >= -2 {
code += 4.4
}
if z >= -2.5 {
code += 1.66
}
if z >= -3 {
code += 0.49
}
return code / 100
}
// Score 返回出现该用户行为的概率 x 100,得分越高用户越接近真实用户,反之越接近异常用户,通常score < 1为异常用户
func Score(qCountMap map[string]int64) int64 {
return int64(truthPR(qCountMap, routersND))
}