Skip to content

一个高性能、简洁的User-Agent解析和生成库,支持解析、生成和随机生成真实的User-Agent字符串。

Notifications You must be signed in to change notification settings

zlsgo/useragent

Repository files navigation

User-Agent Parser & Generator Library

一个高性能、简洁的User-Agent解析和生成库,支持解析、生成和随机生成真实的User-Agent字符串。

🚀 特性

  • 高性能解析:支持主流浏览器、操作系统、设备类型
  • 智能生成:基于模板的User-Agent生成,支持版本控制和兼容性验证
  • 随机生成:基于真实数据的随机User-Agent生成,支持兼容性检查
  • 中文浏览器支持:支持QQ浏览器、UC浏览器、微信浏览器等中文浏览器
  • 并发安全:所有组件都是线程安全的
  • 类型安全:使用Go类型系统确保数据正确性
  • 简洁设计:移除复杂配置,专注核心功能

📦 安装

go get github.com/zlsgo/useragent

🔧 快速开始

解析User-Agent

package main

import (
    "fmt"
    "github.com/zlsgo/useragent"
)

func main() {
    ua := "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
    
    // 解析完整信息
    result, err := useragent.Parse(ua)
    if err != nil {
        panic(err)
    }
    
    fmt.Printf("浏览器: %s\n", result.Browser().String())
    fmt.Printf("操作系统: %s\n", result.OS().String())
    fmt.Printf("设备: %s\n", result.Device().String())
    
    // 分别解析
    browser, err := useragent.ParseBrowser(ua)
    if err != nil {
        panic(err)
    }
    
    os, err := useragent.ParseOS(ua)
    if err != nil {
        panic(err)
    }
    
    device, err := useragent.ParseDevice(ua)
    if err != nil {
        panic(err)
    }
    
    fmt.Printf("浏览器: %s\n", browser.String())
    fmt.Printf("操作系统: %s\n", os.String())
    fmt.Printf("设备: %s\n", device.String())
}

生成User-Agent

package main

import (
    "fmt"
    "github.com/zlsgo/useragent"
    "github.com/zlsgo/useragent/types"
)

func main() {
    // 创建生成选项
    options := &types.GenerateOptions{
        BrowserOpt: types.BrowserOptions{
            Type:    types.BrowserChrome,
            Version: types.Version{Major: 91, Minor: 0, Patch: 4472},
        },
        OSOpt: types.OSOptions{
            Type:    types.OSWindows,
            Version: types.Version{Major: 10, Minor: 0},
        },
        DeviceOpt: types.DeviceOptions{
            Type:  types.DeviceDesktop,
            Brand: "Generic",
            Model: "PC",
        },
    }
    
    // 生成User-Agent
    ua, err := useragent.Generate(options)
    if err != nil {
        panic(err)
    }
    
    fmt.Printf("生成的User-Agent: %s\n", ua)
}

随机生成User-Agent

package main

import (
    "fmt"
    "log"
    "github.com/zlsgo/useragent"
    "github.com/zlsgo/useragent/types"
)

func main() {
    // 生成单个随机User-Agent
    ua, err := useragent.GenerateRand()
    if err != nil {
        log.Fatal(err)
    }
    fmt.Printf("随机User-Agent: %s\n", ua)
    
    // 按设备类型生成
    mobileUA, err := useragent.GenerateRand(types.DeviceMobile)
    if err != nil {
        log.Fatal(err)
    }
    fmt.Printf("移动端User-Agent: %s\n", mobileUA)
    
    // 生成桌面端
    desktopUA, err := useragent.GenerateRand(types.DeviceDesktop)
    if err != nil {
        log.Fatal(err)
    }
    fmt.Printf("桌面端User-Agent: %s\n", desktopUA)
    
    // 生成平板端
    tabletUA, err := useragent.GenerateRand(types.DeviceTablet)
    if err != nil {
        log.Fatal(err)
    }
    fmt.Printf("平板端User-Agent: %s\n", tabletUA)
}

📖 API 参考

主要函数

useragent.Parse(ua string) (types.Result, error)

解析 User-Agent 字符串并返回关于浏览器、操作系统和设备的详细信息。

useragent.ParseBrowser(ua string) (types.BrowserInfo, error)

解析 User-Agent 字符串并仅返回浏览器信息。

useragent.ParseOS(ua string) (types.OSInfo, error)

解析 User-Agent 字符串并仅返回操作系统信息。

useragent.ParseDevice(ua string) (types.DeviceInfo, error)

解析 User-Agent 字符串并仅返回设备信息。

useragent.Generate(options *types.GenerateOptions) (string, error)

根据提供的选项生成 User-Agent 字符串。

useragent.GenerateRand(deviceType types.DeviceType) (string, error)

为指定的设备类型生成随机 User-Agent 字符串。

📊 支持的类型

浏览器类型

  • Chrome, Firefox, Safari, Edge
  • Opera, Internet Explorer
  • UC Browser, QQ Browser, WeChat
  • Sogou, 360 Browser, Miui Browser, Huawei Browser

操作系统类型

  • Windows, macOS, Linux
  • Android, iOS
  • Ubuntu, CentOS, Debian, Fedora, RedHat, SUSE
  • FreeBSD, OpenBSD, NetBSD

设备类型

  • Desktop, Mobile, Tablet
  • TV, Console, Wearable

🎯 随机生成器特色

真实数据驱动

  • 基于2024年真实浏览器版本数据
  • 支持主流设备品牌和型号
  • 智能版本范围控制

兼容性检查

  • 浏览器-操作系统兼容性验证
  • 设备-操作系统兼容性验证
  • 浏览器-设备类型兼容性验证

权重随机

  • 根据市场份额分配生成概率
  • 支持自定义权重配置
  • 平衡多样性和真实性

About

一个高性能、简洁的User-Agent解析和生成库,支持解析、生成和随机生成真实的User-Agent字符串。

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages