node build fixed

This commit is contained in:
ra_ma
2025-09-20 14:08:38 +01:00
parent c6ebbe069d
commit 3d298fa434
1516 changed files with 535727 additions and 2 deletions

View File

@@ -0,0 +1,77 @@
package util
import (
"bufio"
"encoding/json"
"math/rand"
"net/http"
"sync"
"time"
"github.com/rs/zerolog/log"
)
var (
userAgentList []string
uaMu sync.RWMutex
)
func init() {
go func() {
defer func() {
if r := recover(); r != nil {
log.Warn().Msgf("util: Failed to get online user agents: %v", r)
}
}()
agents, err := getOnlineUserAgents()
if err != nil {
log.Warn().Err(err).Msg("util: Failed to get online user agents")
return
}
uaMu.Lock()
userAgentList = agents
uaMu.Unlock()
}()
}
func getOnlineUserAgents() ([]string, error) {
link := "https://raw.githubusercontent.com/fake-useragent/fake-useragent/refs/heads/main/src/fake_useragent/data/browsers.jsonl"
client := &http.Client{
Timeout: 10 * time.Second,
}
response, err := client.Get(link)
if err != nil {
return nil, err
}
defer response.Body.Close()
var agents []string
type UserAgent struct {
UserAgent string `json:"useragent"`
}
scanner := bufio.NewScanner(response.Body)
for scanner.Scan() {
line := scanner.Text()
var ua UserAgent
if err := json.Unmarshal([]byte(line), &ua); err != nil {
return nil, err
}
agents = append(agents, ua.UserAgent)
}
return agents, nil
}
func GetRandomUserAgent() string {
uaMu.RLock()
defer uaMu.RUnlock()
if len(userAgentList) > 0 {
return userAgentList[rand.Intn(len(userAgentList))]
}
return UserAgentList[rand.Intn(len(UserAgentList))]
}