Просмотр исходного кода

feat: rewrite ChromeVersion with new strategy - release on 15th, 1-30 day upgrade delay

Co-authored-by: RPRX <[email protected]>
copilot-swe-agent[bot] 4 месяцев назад
Родитель
Сommit
429fac8092
1 измененных файлов с 20 добавлено и 23 удалено
  1. 20 23
      common/utils/browser.go

+ 20 - 23
common/utils/browser.go

@@ -10,32 +10,29 @@ import (
 
 func ChromeVersion() int {
 	now := time.Now()
-	baseVer := 143 + (now.Year()-2026)*12 + int(now.Month()) - 1
-	if baseVer < 143 {
-		baseVer = 143
+	// Assume Chrome releases on 15th each month, with Jan 2026 being version 144
+	// Calculate the latest Chrome version based on current date
+	latestVer := 144 + (now.Year()-2026)*12 + int(now.Month()) - 1
+	daysSinceRelease := now.Day() - 15
+	if daysSinceRelease < 0 {
+		latestVer-- // Before 15th, the new version hasn't released yet
+		// Days since previous month's release (15th)
+		lastDay := time.Date(now.Year(), now.Month(), 0, 0, 0, 0, 0, time.UTC).Day()
+		daysSinceRelease = now.Day() + (lastDay - 15)
 	}
-	ver := baseVer
-	// Use CPU features + Xray version as seed (version changes ensure occasional different "upgrade strategies")
+	if latestVer < 144 {
+		latestVer = 144
+	}
+	// Use CPU features + Xray version as seed
 	seed := cpuid.CPU.Family + cpuid.CPU.Model + cpuid.CPU.PhysicalCores + cpuid.CPU.LogicalCores + cpuid.CPU.CacheLine + int(core.Version_x) + int(core.Version_y) + int(core.Version_z)
-	// Boundary day uniformly distributed between 15-20 based on seed
-	boundary := 15 + seed%6
-	day := now.Day()
-	if day < boundary {
-		// Before boundary: uniformly distributed -1 within days 1 to boundary-1
-		if seed%(boundary-1) < day {
-			ver--
-		}
-	} else {
-		// After boundary: uniformly distributed +1 within days boundary to lastDay
-		lastDay := time.Date(now.Year(), now.Month()+1, 0, 0, 0, 0, 0, time.UTC).Day()
-		daysInRange := lastDay - boundary + 1
-		if seed%daysInRange < day-boundary+1 {
-			ver++
-		}
+	// User upgrade delay: 1-30 days uniformly distributed based on seed
+	upgradeDelay := seed%30 + 1
+	// If user's delay > days since release, they haven't upgraded yet
+	if upgradeDelay > daysSinceRelease {
+		return latestVer - 1
 	}
-	// Subtract base version mod 2 to avoid month-end upgrade followed by month-start downgrade
-	return ver - baseVer%2
+	return latestVer
 }
 
-// ChromeUA provides default browser User-Agent. Version 143 = Jan 2026, +1 per month.
+// ChromeUA provides default browser User-Agent. Chrome 144 = Jan 15, 2026, +1 per month.
 var ChromeUA = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/" + strconv.Itoa(ChromeVersion()) + ".0.0.0 Safari/537.36"