|
|
@@ -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"
|