har

package
v0.0.0-...-a736c1b Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 28, 2026 License: MIT Imports: 12 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// HAR规范1.1版本
	HarSpecVersion11 = "1.1"
	// HAR规范1.2版本
	HarSpecVersion12 = "1.2"
	// HAR规范1.3版本 (非官方,但一些工具使用)
	HarSpecVersion13 = "1.3"
)

HAR规范版本常量

Variables

View Source
var (
	// ErrInvalidHar 表示HAR对象缺少必要字段
	ErrInvalidHar = NewValidationError("HAR对象缺少必要字段", "")

	// ErrInvalidURL 表示HAR条目中的URL无效
	ErrInvalidURL = NewValidationError("HAR条目中包含无效URL", "")

	// ErrNotJsonContent 表示内容不是JSON格式
	ErrNotJsonContent = NewInvalidFormatError("内容不是JSON格式")
)

错误定义

View Source
var (
	// OptMemoryEfficient 内存高效配置
	OptMemoryEfficient = []Option{
		WithMemoryOptimized(),
		WithSkipValidation(),
	}

	// OptFast 快速解析配置
	OptFast = []Option{
		WithSkipValidation(),
	}

	// OptLenient 宽松解析配置
	OptLenient = []Option{
		WithLenient(),
		WithCollectWarnings(),
	}

	// OptPerformance 高性能配置
	OptPerformance = []Option{
		WithMemoryOptimized(),
		WithSkipValidation(),
		WithLazyLoading(),
	}
)

定义常用的选项组合

Functions

func DetectHarVersion

func DetectHarVersion(har *Har) string

DetectHarVersion 检测HAR版本

func IsValidHarVersion

func IsValidHarVersion(version string) bool

IsValidHarVersion 检查是否为支持的HAR版本

func IsValidURL

func IsValidURL(rawURL string) bool

IsValidURL 检查URL是否有效

该函数检查给定的URL字符串是否符合URL规范。 返回true表示URL有效,false表示无效。

func ParseHarEnhanced

func ParseHarEnhanced(harFileBytes []byte) (*Har, *HarError)

ParseHarEnhanced 增强版HAR解析,提供详细错误信息

func ParseHarFileEnhanced

func ParseHarFileEnhanced(harFilePath string) (*Har, *HarError)

ParseHarFileEnhanced 增强版HAR文件解析,提供详细错误信息

func ValidateHarFile

func ValidateHarFile(har *Har) error

ValidateHarFile 验证HAR对象内容的有效性 支持不同版本的HAR规范

Types

type AfterRequest

type AfterRequest struct {
	Expires    time.Time `json:"expires,omitempty"` // 过期时间
	LastAccess time.Time `json:"lastAccess"`        // 最后访问时间
	ETag       string    `json:"eTag"`              // ETag
	HitCount   int       `json:"hitCount"`          // 命中次数
	Comment    string    `json:"comment,omitempty"` // 注释(可选)
}

AfterRequest 表示请求后的缓存状态

type BeforeRequest

type BeforeRequest struct {
	Expires    time.Time `json:"expires,omitempty"` // 过期时间
	LastAccess time.Time `json:"lastAccess"`        // 最后访问时间
	ETag       string    `json:"eTag"`              // ETag
	HitCount   int       `json:"hitCount"`          // 命中次数
	Comment    string    `json:"comment,omitempty"` // 注释(可选)
}

BeforeRequest 表示请求前的缓存状态

type Browser

type Browser struct {
	Name    string `json:"name"`
	Version string `json:"version"`
	Comment string `json:"comment,omitempty"`
}

Browser 表示HAR文件中的浏览器信息

type Cache

type Cache struct {
	BeforeRequest *BeforeRequest `json:"beforeRequest,omitempty"` // 请求前缓存状态
	AfterRequest  *AfterRequest  `json:"afterRequest,omitempty"`  // 请求后缓存状态
	Comment       string         `json:"comment,omitempty"`       // 注释
}

Cache 表示HTTP缓存信息

type CallFrame

type CallFrame struct {
	FunctionName string `json:"functionName"` // 函数名
	ScriptID     string `json:"scriptId"`     // 脚本ID
	URL          string `json:"url"`          // URL
	LineNumber   int    `json:"lineNumber"`   // 行号
	ColumnNumber int    `json:"columnNumber"` // 列号
}

CallFrame 表示调用帧(Chrome DevTools扩展)

type Content

type Content struct {
	Size     int    `json:"size"`               // 内容大小(字节)
	MimeType string `json:"mimeType"`           // MIME类型
	Text     string `json:"text,omitempty"`     // 文本内容(可选)
	Encoding string `json:"encoding,omitempty"` // 编码方式(可选)
}

Content 表示HTTP响应内容

func (*Content) GetEncoding

func (c *Content) GetEncoding() string

GetEncoding 实现ContentProvider接口

func (*Content) GetMimeType

func (c *Content) GetMimeType() string

GetMimeType 实现ContentProvider接口

func (*Content) GetSize

func (c *Content) GetSize() int

GetSize 实现ContentProvider接口

func (*Content) GetText

func (c *Content) GetText() string

GetText 实现ContentProvider接口

func (*Content) ToStandard

func (c *Content) ToStandard() Content

ToStandard 实现ContentProvider接口

type ContentProvider

type ContentProvider interface {
	// GetSize 获取大小
	GetSize() int

	// GetMimeType 获取MIME类型
	GetMimeType() string

	// GetText 获取文本内容(如果有)
	GetText() string

	// GetEncoding 获取编码(如果有)
	GetEncoding() string

	// ToStandard 转换为标准Content对象
	ToStandard() Content
}

ContentProvider 定义内容的接口

type ConvertFormat

type ConvertFormat string

ConvertFormat 支持的转换格式

const (
	FormatCSV      ConvertFormat = "csv"
	FormatMarkdown ConvertFormat = "markdown"
	FormatHTML     ConvertFormat = "html"
	FormatText     ConvertFormat = "text"
)

type ConvertOptions

type ConvertOptions struct {
	// 包含的字段
	IncludeURL         bool
	IncludeMethod      bool
	IncludeStatus      bool
	IncludeContentType bool
	IncludeSize        bool
	IncludeTime        bool
	IncludeTimings     bool
	IncludeHeaders     bool
	IncludeDateTime    bool

	// 自定义表头(可选,如果不指定则使用默认值)
	Headers []string

	// 过滤选项(可选,用于在转换前先过滤数据)
	Filter *FilterOptions
}

ConvertOptions 转换选项

func DefaultConvertOptions

func DefaultConvertOptions() ConvertOptions

DefaultConvertOptions 默认的转换选项

type Cookie struct {
	Name     string    `json:"name"`               // Cookie名称
	Value    string    `json:"value"`              // Cookie值
	Path     string    `json:"path,omitempty"`     // Cookie路径
	Domain   string    `json:"domain,omitempty"`   // Cookie域
	Expires  time.Time `json:"expires,omitempty"`  // 过期时间
	HTTPOnly bool      `json:"httpOnly,omitempty"` // 是否为HttpOnly
	Secure   bool      `json:"secure,omitempty"`   // 是否为Secure
	SameSite string    `json:"sameSite,omitempty"` // SameSite策略
}

Cookie 表示HTTP Cookie

func (*Cookie) GetDomain

func (c *Cookie) GetDomain() string

GetDomain 实现CookieProvider接口

func (*Cookie) GetExpires

func (c *Cookie) GetExpires() time.Time

GetExpires 实现CookieProvider接口

func (*Cookie) GetName

func (c *Cookie) GetName() string

GetName 实现CookieProvider接口

func (*Cookie) GetPath

func (c *Cookie) GetPath() string

GetPath 实现CookieProvider接口

func (*Cookie) GetSameSite

func (c *Cookie) GetSameSite() string

GetSameSite 实现CookieProvider接口

func (*Cookie) GetValue

func (c *Cookie) GetValue() string

GetValue 实现CookieProvider接口

func (*Cookie) IsHTTPOnly

func (c *Cookie) IsHTTPOnly() bool

IsHTTPOnly 实现CookieProvider接口

func (*Cookie) IsSecure

func (c *Cookie) IsSecure() bool

IsSecure 实现CookieProvider接口

func (*Cookie) ToStandard

func (c *Cookie) ToStandard() Cookie

ToStandard 实现CookieProvider接口

type CookieProvider

type CookieProvider interface {
	// GetName 获取名称
	GetName() string

	// GetValue 获取值
	GetValue() string

	// GetDomain 获取域
	GetDomain() string

	// GetPath 获取路径
	GetPath() string

	// GetExpires 获取过期时间
	GetExpires() time.Time

	// IsHTTPOnly 是否为HTTPOnly
	IsHTTPOnly() bool

	// IsSecure 是否为Secure
	IsSecure() bool

	// GetSameSite 获取SameSite值
	GetSameSite() string

	// ToStandard 转换为标准Cookie对象
	ToStandard() Cookie
}

CookieProvider 定义Cookie的接口

type Creator

type Creator struct {
	Name    string `json:"name"`    // 创建工具名称
	Version string `json:"version"` // 创建工具版本
}

Creator 表示创建HAR文件的工具信息

type Entries

type Entries struct {
	StartedDateTime time.Time `json:"startedDateTime"`           // 请求开始时间
	Time            float64   `json:"time"`                      // 总耗时(ms)
	Request         Request   `json:"request"`                   // 请求信息
	Response        Response  `json:"response"`                  // 响应信息
	Cache           Cache     `json:"cache"`                     // 缓存信息
	Timings         Timings   `json:"timings"`                   // 详细计时
	Pageref         string    `json:"pageref,omitempty"`         // 关联的页面ID
	ServerIPAddress string    `json:"serverIPAddress,omitempty"` // 服务器IP
	Connection      string    `json:"connection,omitempty"`      // 连接ID

	// 以下字段为非标准扩展,一般由浏览器开发工具添加
	Initiator    Initiator `json:"_initiator,omitempty"`    // 请求发起者
	Priority     string    `json:"_priority,omitempty"`     // 请求优先级
	ResourceType string    `json:"_resourceType,omitempty"` // 资源类型
}

Entries 表示HAR文件中的单个HTTP请求/响应条目

func (*Entries) AddRequestHeader

func (e *Entries) AddRequestHeader(name, value string) *Entries

AddRequestHeader 添加请求头

func (*Entries) AddResponseHeader

func (e *Entries) AddResponseHeader(name, value string) *Entries

AddResponseHeader 添加响应头

func (*Entries) GetPageref

func (e *Entries) GetPageref() string

GetPageref 实现EntryProvider接口

func (*Entries) GetRequest

func (e *Entries) GetRequest() RequestProvider

GetRequest 实现EntryProvider接口

func (*Entries) GetResponse

func (e *Entries) GetResponse() ResponseProvider

GetResponse 实现EntryProvider接口

func (*Entries) GetStartedDateTime

func (e *Entries) GetStartedDateTime() time.Time

GetStartedDateTime 实现EntryProvider接口

func (*Entries) GetTime

func (e *Entries) GetTime() float64

GetTime 实现EntryProvider接口

func (*Entries) GetTimings

func (e *Entries) GetTimings() TimingsProvider

GetTimings 实现EntryProvider接口

func (*Entries) SetResponseContent

func (e *Entries) SetResponseContent(size int, mimeType string) *Entries

SetResponseContent 设置响应内容

func (*Entries) SetResponseStatus

func (e *Entries) SetResponseStatus(status int, statusText string) *Entries

SetResponseStatus 设置响应状态

func (*Entries) SetTimings

func (e *Entries) SetTimings(blocked, dns, connect, send, wait, receive, ssl float64) *Entries

SetTimings 设置时间数据

func (*Entries) ToStandard

func (e *Entries) ToStandard() Entries

ToStandard 实现EntryProvider接口

type EntryIterator

type EntryIterator interface {
	// Next 移动到下一个条目,如果没有更多条目则返回false
	Next() bool
	// Entry 返回当前条目
	Entry() *Entries
	// Err 返回迭代过程中出现的错误
	Err() error
	// Close 关闭迭代器和相关资源
	Close() error
}

EntryIterator 提供流式迭代HAR文件中的条目的接口

func NewStreamingParser

func NewStreamingParser(harFileBytes []byte, opts ...Option) (EntryIterator, error)

NewStreamingParser 创建一个新的流式解析器

流式解析器允许逐个处理HAR条目,适用于大型HAR文件,避免一次性加载全部内容。

示例:

iterator, err := NewStreamingParser(harBytes)
if err != nil {
    return err
}
for iterator.Next() {
    entry := iterator.Entry()
    // 处理单个条目
}

func NewStreamingParserFromFile

func NewStreamingParserFromFile(harFilePath string, opts ...Option) (EntryIterator, error)

NewStreamingParserFromFile 从文件创建一个新的流式解析器

这是一个便捷方法,用于从文件路径创建流式解析器,避免手动读取文件。

type EntryProvider

type EntryProvider interface {
	// GetStartedDateTime 获取开始时间
	GetStartedDateTime() time.Time

	// GetTime 获取总时长
	GetTime() float64

	// GetRequest 获取请求信息
	GetRequest() RequestProvider

	// GetResponse 获取响应信息
	GetResponse() ResponseProvider

	// GetTimings 获取计时信息
	GetTimings() TimingsProvider

	// GetPageref 获取页面引用
	GetPageref() string

	// ToStandard 转换为标准Entry对象
	ToStandard() Entries
}

EntryProvider 定义单个Entry的接口

type ErrorCode

type ErrorCode int

ErrorCode 定义错误类型代码

const (
	// ErrCodeUnknown 未知错误
	ErrCodeUnknown ErrorCode = iota
	// ErrCodeFileSystem 文件系统错误
	ErrCodeFileSystem
	// ErrCodeJSONParse JSON解析错误
	ErrCodeJSONParse
	// ErrCodeInvalidFormat 格式错误
	ErrCodeInvalidFormat
	// ErrCodeValidation 验证错误
	ErrCodeValidation
	// ErrCodeMissingField 缺少必要字段
	ErrCodeMissingField
	// ErrCodeInvalidValue 字段值无效
	ErrCodeInvalidValue
	// ErrCodeUnsupported 不支持的操作
	ErrCodeUnsupported
)

type FilterOptions

type FilterOptions struct {
	URL             string    // URL包含的字符串或正则表达式
	Method          string    // 请求方法
	StatusCode      int       // 响应状态码
	StatusCodeMin   int       // 最小状态码
	StatusCodeMax   int       // 最大状态码
	ContentType     string    // 内容类型
	StartTime       time.Time // 开始时间
	EndTime         time.Time // 结束时间
	MinDuration     float64   // 最小请求持续时间(ms)
	MaxDuration     float64   // 最大请求持续时间(ms)
	ResourceType    string    // 资源类型
	HasError        bool      // 是否有错误
	HeaderName      string    // 请求头名
	HeaderValue     string    // 请求头值
	RespHeaderName  string    // 响应头名
	RespHeaderValue string    // 响应头值
	UseRegex        bool      // 使用正则表达式匹配
}

FilterOptions 过滤选项

type FilterResult

type FilterResult struct {
	Entries []Entries
}

FilterResult 过滤结果

func (*FilterResult) Count

func (fr *FilterResult) Count() int

Count 获取过滤结果数量

func (*FilterResult) First

func (fr *FilterResult) First() *Entries

First 获取第一个结果

func (*FilterResult) ToHar

func (fr *FilterResult) ToHar() *Har

ToHar 将过滤结果转换为新的Har对象

type HARProvider

type HARProvider interface {
	// GetVersion 获取HAR版本
	GetVersion() string

	// GetCreator 获取创建者信息
	GetCreator() Creator

	// GetEntries 获取所有条目
	GetEntries() []EntryProvider

	// GetPages 获取所有页面
	GetPages() []PageProvider

	// ToStandard 转换为标准HAR对象
	ToStandard() *Har
}

HARProvider 定义所有HAR实现应实现的接口

func Parse

func Parse(harFileBytes []byte, opts ...Option) (HARProvider, error)

Parse 使用函数选项模式解析HAR字节数据

Parse函数是解析HAR数据的主要入口点,支持多种解析策略和选项。 该函数使用函数选项模式,允许灵活配置解析行为。

示例:

// 标准解析
har, err := Parse(harBytes)

// 使用内存优化
har, err := Parse(harBytes, WithMemoryOptimized())

// 组合多个选项
har, err := Parse(harBytes, WithMemoryOptimized(), WithSkipValidation())

返回实现了HARProvider接口的对象,可以统一访问不同实现的HAR结构。

func ParseFile

func ParseFile(harFilePath string, opts ...Option) (HARProvider, error)

ParseFile 使用函数选项模式解析HAR文件

ParseFile是解析HAR文件的便捷方法,支持与Parse函数相同的选项。 该函数负责文件读取,然后将内容传递给Parse函数进行解析。

示例:

// 标准解析
har, err := ParseFile("example.har")

// 使用预定义选项组合
har, err := ParseFile("large.har", OptMemoryEfficient...)

type HTTPMethod

type HTTPMethod uint8

HTTPMethod 枚举HTTP方法,减少字符串内存占用

const (
	MethodUnknown HTTPMethod = iota
	MethodGET
	MethodPOST
	MethodPUT
	MethodDELETE
	MethodHEAD
	MethodOPTIONS
	MethodPATCH
	MethodCONNECT
	MethodTRACE
)

func ParseMethod

func ParseMethod(method string) HTTPMethod

ParseMethod 将字符串解析为HTTPMethod

func (HTTPMethod) String

func (m HTTPMethod) String() string

String 返回HTTPMethod的字符串表示

type Har

type Har struct {
	Log Log `json:"log"` // HAR日志对象
}

Har 表示HTTP归档(HAR)文件的主结构

Har结构是HAR格式的根对象,包含一个Log字段。 所有HAR数据都包含在Log字段中。

func NewHar

func NewHar() *Har

NewHar 创建一个新的HAR对象

func ParseHar

func ParseHar(harFileBytes []byte) (*Har, error)

ParseHar 解析HAR格式的字节数据

ParseHar函数将HAR格式的字节数据解析为Har结构体对象。 该函数会进行完整的验证,确保HAR对象满足规范要求。

示例:

harBytes, _ := ioutil.ReadFile("example.har")
har, err := ParseHar(harBytes)
if err != nil {
    log.Fatalf("解析HAR数据失败: %v", err)
}

func ParseHarFile

func ParseHarFile(harFilePath string) (*Har, error)

ParseHarFile 解析HAR格式的文件

ParseHarFile是ParseHar的便捷包装,它会先读取文件内容再进行解析。 该函数遵循错误处理最佳实践,将所有错误转换为HarError类型,便于统一处理。

示例:

har, err := ParseHarFile("example.har")
if err != nil {
    log.Fatalf("解析HAR文件失败: %v", err)
}

func ParseHarFileLenient

func ParseHarFileLenient(harFilePath string) (*Har, error)

ParseHarFileLenient 宽松模式解析HAR文件

func ParseHarFileWithOptions

func ParseHarFileWithOptions(harFilePath string, options ParseOptions) (*Har, error)

ParseHarFileWithOptions 解析HAR格式的文件,使用自定义解析选项

func ParseHarLenient

func ParseHarLenient(harFileBytes []byte) (*Har, error)

ParseHarLenient 宽松模式解析HAR文件内容

func ParseHarWithOptions

func ParseHarWithOptions(harFileBytes []byte, options ParseOptions) (*Har, error)

ParseHarWithOptions 解析HAR格式的字节数据,使用自定义解析选项

func (*Har) AddEntry

func (h *Har) AddEntry(method, url, httpVersion string, pageref string) *Entries

AddEntry 添加一个请求/响应条目

func (*Har) AddPage

func (h *Har) AddPage(id, title string) *Pages

AddPage 添加页面信息

func (*Har) Convert

func (h *Har) Convert(format ConvertFormat, options ConvertOptions) (string, error)

Convert 将HAR转换为指定格式

func (*Har) Filter

func (h *Har) Filter(options FilterOptions) *FilterResult

Filter 按条件过滤条目

func (*Har) FindByContentType

func (h *Har) FindByContentType(contentType string) *FilterResult

FindByContentType 按内容类型查找

func (*Har) FindByMethod

func (h *Har) FindByMethod(method string) *FilterResult

FindByMethod 按HTTP方法查找

func (*Har) FindByStatusCode

func (h *Har) FindByStatusCode(statusCode int) *FilterResult

FindByStatusCode 按状态码查找

func (*Har) FindByTimeRange

func (h *Har) FindByTimeRange(start, end time.Time) *FilterResult

FindByTimeRange 按时间范围查找

func (*Har) FindByURL

func (h *Har) FindByURL(urlStr string, useRegex bool) *FilterResult

FindByURL 按URL查找

func (*Har) FindErrors

func (h *Har) FindErrors() *FilterResult

FindErrors 查找所有错误请求

func (*Har) FindSlowRequests

func (h *Har) FindSlowRequests(minDuration float64) *FilterResult

FindSlowRequests 查找慢请求

func (*Har) GetCreator

func (h *Har) GetCreator() Creator

GetCreator 实现HARProvider接口

func (*Har) GetEntries

func (h *Har) GetEntries() []EntryProvider

GetEntries 实现HARProvider接口

func (*Har) GetPages

func (h *Har) GetPages() []PageProvider

GetPages 实现HARProvider接口

func (*Har) GetVersion

func (h *Har) GetVersion() string

GetVersion 实现HARProvider接口

func (*Har) SaveToFile

func (h *Har) SaveToFile(filePath string, indent bool) error

SaveToFile 将HAR对象保存到文件

func (*Har) SetCreator

func (h *Har) SetCreator(name, version string) *Har

SetCreator 设置HAR文件的创建者信息

func (*Har) ToJSON

func (h *Har) ToJSON(indent bool) ([]byte, error)

ToJSON 将HAR对象转换为JSON字节

func (*Har) ToStandard

func (h *Har) ToStandard() *Har

ToStandard 实现HARProvider接口

type HarError

type HarError struct {
	// 错误代码
	Code ErrorCode
	// 错误信息
	Message string
	// 原始错误(可选)
	Err error
	// 字段路径,用点号分隔,如 "log.entries[0].request.url"
	Field string
	// 包含更多上下文信息的元数据
	Metadata map[string]interface{}
	// 如果是部分解析错误,包含的其他错误
	PartialErrors []*HarError
}

HarError 自定义HAR错误类型

func NewFileSystemError

func NewFileSystemError(message string, err error) *HarError

NewFileSystemError 创建文件系统错误

func NewHarError

func NewHarError(code ErrorCode, message string, err error) *HarError

NewHarError 创建新的HAR错误

func NewInvalidFormatError

func NewInvalidFormatError(message string) *HarError

NewInvalidFormatError 创建格式错误

func NewInvalidValueError

func NewInvalidValueError(field string, value interface{}, reason string) *HarError

NewInvalidValueError 创建字段值无效错误

func NewJSONParseError

func NewJSONParseError(message string, err error) *HarError

NewJSONParseError 创建JSON解析错误

func NewMissingFieldError

func NewMissingFieldError(field string) *HarError

NewMissingFieldError 创建缺少字段错误

func NewUnsupportedError

func NewUnsupportedError(message string) *HarError

NewUnsupportedError 创建不支持的操作错误

func NewValidationError

func NewValidationError(message string, field string) *HarError

NewValidationError 创建验证错误

func WrapJSONUnmarshalError

func WrapJSONUnmarshalError(err error) *HarError

WrapJSONUnmarshalError 封装JSON解析错误以提供更详细信息

func (*HarError) AddPartialError

func (e *HarError) AddPartialError(err *HarError) *HarError

AddPartialError 添加部分解析错误

func (*HarError) Error

func (e *HarError) Error() string

实现error接口

func (*HarError) GetCode

func (e *HarError) GetCode() ErrorCode

GetCode 获取错误代码

func (*HarError) GetPartialErrors

func (e *HarError) GetPartialErrors() []*HarError

GetPartialErrors 获取所有部分错误

func (*HarError) HasPartialErrors

func (e *HarError) HasPartialErrors() bool

HasPartialErrors 检查是否包含部分错误

func (*HarError) IsFileSystemError

func (e *HarError) IsFileSystemError() bool

IsFileSystemError 是否为文件系统错误

func (*HarError) IsFormatError

func (e *HarError) IsFormatError() bool

IsFormatError 是否为格式错误

func (*HarError) IsJSONParseError

func (e *HarError) IsJSONParseError() bool

IsJSONParseError 是否为JSON解析错误

func (*HarError) IsValidationError

func (e *HarError) IsValidationError() bool

IsValidationError 是否为验证错误

func (*HarError) WithField

func (e *HarError) WithField(field string) *HarError

WithField 添加字段路径到错误

func (*HarError) WithMetadata

func (e *HarError) WithMetadata(key string, value interface{}) *HarError

WithMetadata 添加元数据到错误

type HeaderProvider

type HeaderProvider interface {
	// GetName 获取名称
	GetName() string

	// GetValue 获取值
	GetValue() string

	// ToStandard 转换为标准Header对象
	ToStandard() Headers
}

HeaderProvider 定义HTTP头部的接口

type Headers

type Headers struct {
	Name  string `json:"name"`  // 头部名称
	Value string `json:"value"` // 头部值
}

Headers 表示HTTP头部

func (*Headers) GetName

func (h *Headers) GetName() string

GetName 实现HeaderProvider接口

func (*Headers) GetValue

func (h *Headers) GetValue() string

GetValue 实现HeaderProvider接口

func (*Headers) ToStandard

func (h *Headers) ToStandard() Headers

ToStandard 实现HeaderProvider接口

type Initiator

type Initiator struct {
	Type       string `json:"type"`       // 发起类型
	URL        string `json:"url"`        // 发起URL
	LineNumber int    `json:"lineNumber"` // 代码行号
	Stack      Stack  `json:"stack"`      // 调用栈
}

Initiator 表示请求发起者(Chrome DevTools扩展)

type LazyContent

type LazyContent struct {
	// 基本信息总是加载
	Size     int    `json:"size"`
	MimeType string `json:"mimeType"`

	// 实际内容延迟加载
	Text     *string `json:"text,omitempty"`
	Encoding *string `json:"encoding,omitempty"`
	Comment  string  `json:"comment,omitempty"`
	// contains filtered or unexported fields
}

LazyContent 延迟加载的内容

func (*LazyContent) GetMimeType

func (c *LazyContent) GetMimeType() string

GetMimeType 实现ContentProvider接口

func (*LazyContent) GetSize

func (c *LazyContent) GetSize() int

GetSize 实现ContentProvider接口

func (*LazyContent) GetText

func (lc *LazyContent) GetText() (*string, error)

GetText 获取内容文本,如果尚未加载则先加载

func (*LazyContent) Load

func (lc *LazyContent) Load() error

Load 加载完整的内容数据

func (*LazyContent) ToStandard

func (c *LazyContent) ToStandard() Content

ToStandard 实现ContentProvider接口

func (*LazyContent) UnmarshalJSON

func (lc *LazyContent) UnmarshalJSON(data []byte) error

UnmarshalJSON 自定义JSON解析,初始时只解析基本信息

type LazyEntries

type LazyEntries struct {
	StartedDateTime time.Time    `json:"startedDateTime"`
	Time            float64      `json:"time"`
	Request         Request      `json:"request"`
	Response        LazyResponse `json:"response"`
	Cache           Cache        `json:"cache"`
	Timings         Timings      `json:"timings"`
	Pageref         string       `json:"pageref"`
	Initiator       Initiator    `json:"_initiator"`
	Priority        string       `json:"_priority"`
	ResourceType    string       `json:"_resourceType"`
	Connection      string       `json:"connection"`
	ServerIPAddress string       `json:"serverIPAddress"`
}

LazyEntries 带有延迟加载内容的条目

func (*LazyEntries) GetPageref

func (e *LazyEntries) GetPageref() string

GetPageref 实现EntryProvider接口

func (*LazyEntries) GetRequest

func (e *LazyEntries) GetRequest() RequestProvider

GetRequest 实现EntryProvider接口

func (*LazyEntries) GetResponse

func (e *LazyEntries) GetResponse() ResponseProvider

GetResponse 实现EntryProvider接口

func (*LazyEntries) GetStartedDateTime

func (e *LazyEntries) GetStartedDateTime() time.Time

GetStartedDateTime 实现EntryProvider接口

func (*LazyEntries) GetTime

func (e *LazyEntries) GetTime() float64

GetTime 实现EntryProvider接口

func (*LazyEntries) GetTimings

func (e *LazyEntries) GetTimings() TimingsProvider

GetTimings 实现EntryProvider接口

func (*LazyEntries) ToStandard

func (e *LazyEntries) ToStandard() Entries

ToStandard 实现EntryProvider接口

type LazyHar

type LazyHar struct {
	Log struct {
		Version string        `json:"version"`
		Creator Creator       `json:"creator"`
		Pages   []Pages       `json:"pages"`
		Entries []LazyEntries `json:"entries"`
	} `json:"log"`
}

LazyHar 带有延迟加载功能的HAR对象

func ParseHarFileWithLazyLoading

func ParseHarFileWithLazyLoading(harFilePath string) (*LazyHar, error)

ParseHarFileWithLazyLoading 解析HAR文件,对大型字段使用延迟加载

func ParseHarWithLazyLoading

func ParseHarWithLazyLoading(harFileBytes []byte) (*LazyHar, error)

ParseHarWithLazyLoading 解析HAR内容,对大型字段使用延迟加载

func (*LazyHar) GetCreator

func (h *LazyHar) GetCreator() Creator

GetCreator 实现HARProvider接口

func (*LazyHar) GetEntries

func (h *LazyHar) GetEntries() []EntryProvider

GetEntries 实现HARProvider接口

func (*LazyHar) GetEntriesCount

func (lh *LazyHar) GetEntriesCount() int

GetEntriesCount 获取条目数量

func (*LazyHar) GetEntry

func (lh *LazyHar) GetEntry(index int) (*LazyEntries, error)

GetEntry 获取指定索引的条目

func (*LazyHar) GetPages

func (h *LazyHar) GetPages() []PageProvider

GetPages 实现HARProvider接口

func (*LazyHar) GetResponseContent

func (lh *LazyHar) GetResponseContent(index int) (*LazyContent, error)

GetResponseContent 获取指定索引条目的响应内容

func (*LazyHar) GetResponseText

func (lh *LazyHar) GetResponseText(index int) (*string, error)

GetResponseText 获取指定索引条目的响应文本

func (*LazyHar) GetVersion

func (h *LazyHar) GetVersion() string

GetVersion 实现HARProvider接口

func (*LazyHar) ToStandard

func (h *LazyHar) ToStandard() *Har

ToStandard 实现HARProvider接口

func (*LazyHar) ToStandardHar

func (lh *LazyHar) ToStandardHar() (*Har, error)

ToStandardHar 将LazyHar转换为标准Har对象

type LazyResponse

type LazyResponse struct {
	Status       int          `json:"status"`
	StatusText   string       `json:"statusText"`
	HTTPVersion  string       `json:"httpVersion"`
	Cookies      []Cookie     `json:"cookies"`
	Headers      []Headers    `json:"headers"`
	RedirectURL  string       `json:"redirectURL"`
	HeadersSize  int          `json:"headersSize"`
	BodySize     int          `json:"bodySize"`
	Content      *LazyContent `json:"content"`
	TransferSize int          `json:"_transferSize"`
	Error        any          `json:"_error"`
}

LazyResponse 带有延迟加载内容的响应

func (*LazyResponse) GetBodySize

func (r *LazyResponse) GetBodySize() int

GetBodySize 实现ResponseProvider接口

func (*LazyResponse) GetContent

func (r *LazyResponse) GetContent() ContentProvider

GetContent 实现ResponseProvider接口

func (*LazyResponse) GetCookies

func (r *LazyResponse) GetCookies() []CookieProvider

GetCookies 实现ResponseProvider接口

func (*LazyResponse) GetHTTPVersion

func (r *LazyResponse) GetHTTPVersion() string

GetHTTPVersion 实现ResponseProvider接口

func (*LazyResponse) GetHeaders

func (r *LazyResponse) GetHeaders() []HeaderProvider

GetHeaders 实现ResponseProvider接口

func (*LazyResponse) GetHeadersSize

func (r *LazyResponse) GetHeadersSize() int

GetHeadersSize 实现ResponseProvider接口

func (*LazyResponse) GetStatus

func (r *LazyResponse) GetStatus() int

GetStatus 实现ResponseProvider接口

func (*LazyResponse) GetStatusText

func (r *LazyResponse) GetStatusText() string

GetStatusText 实现ResponseProvider接口

func (*LazyResponse) ToStandard

func (r *LazyResponse) ToStandard() Response

ToStandard 实现ResponseProvider接口

type Log

type Log struct {
	Version string    `json:"version"` // HAR规范版本
	Creator Creator   `json:"creator"` // 创建工具信息
	Pages   []Pages   `json:"pages"`   // 页面信息
	Entries []Entries `json:"entries"` // HTTP请求/响应条目
}

Log 表示HAR日志对象

Log包含HAR数据的主要部分,包括版本、创建者信息、 页面信息和HTTP条目数据。

type OptimizedContent

type OptimizedContent struct {
	Size     int     // 整数不需要优化
	MimeType string  // MIME类型通常不太长
	Text     *string // 使用指针允许nil值
	Encoding *string // 使用指针允许nil值
	Comment  *string // 使用指针允许nil值
}

OptimizedContent 表示内存优化的内容结构

func (*OptimizedContent) GetEncoding

func (c *OptimizedContent) GetEncoding() string

GetEncoding 实现ContentProvider接口

func (*OptimizedContent) GetMimeType

func (c *OptimizedContent) GetMimeType() string

GetMimeType 实现ContentProvider接口

func (*OptimizedContent) GetSize

func (c *OptimizedContent) GetSize() int

GetSize 实现ContentProvider接口

func (*OptimizedContent) GetText

func (c *OptimizedContent) GetText() string

GetText 实现ContentProvider接口

func (*OptimizedContent) ToStandard

func (c *OptimizedContent) ToStandard() Content

ToStandard 实现ContentProvider接口

type OptimizedEntries

type OptimizedEntries struct {
	StartedDateTime time.Time         // 时间不需要优化
	Time            float64           // 浮点数不需要优化
	Request         OptimizedRequest  // 优化的请求
	Response        OptimizedResponse // 优化的响应
	Cache           *Cache            // 使用指针允许nil值
	Timings         OptimizedTimings  // 优化的计时
	PageRef         *string           // 使用指针允许nil值
	ServerIP        *string           // 使用指针允许nil值
	Connection      *string           // 使用指针允许nil值
}

OptimizedEntries 表示内存优化的条目结构

func (*OptimizedEntries) GetPageref

func (e *OptimizedEntries) GetPageref() string

GetPageref 实现EntryProvider接口

func (*OptimizedEntries) GetRequest

func (e *OptimizedEntries) GetRequest() RequestProvider

GetRequest 实现EntryProvider接口

func (*OptimizedEntries) GetResponse

func (e *OptimizedEntries) GetResponse() ResponseProvider

GetResponse 实现EntryProvider接口

func (*OptimizedEntries) GetStartedDateTime

func (e *OptimizedEntries) GetStartedDateTime() time.Time

GetStartedDateTime 实现EntryProvider接口

func (*OptimizedEntries) GetTime

func (e *OptimizedEntries) GetTime() float64

GetTime 实现EntryProvider接口

func (*OptimizedEntries) GetTimings

func (e *OptimizedEntries) GetTimings() TimingsProvider

GetTimings 实现EntryProvider接口

func (*OptimizedEntries) ToStandard

func (e *OptimizedEntries) ToStandard() Entries

ToStandard 实现EntryProvider接口

type OptimizedHar

type OptimizedHar struct {
	Log struct {
		Version string             // 版本号通常很短
		Creator Creator            // 保持不变
		Pages   []Pages            // 保持不变
		Entries []OptimizedEntries // 优化的条目数组
	}
}

OptimizedHar 表示内存优化的HAR结构

func ParseHarFileOptimized

func ParseHarFileOptimized(filePath string) (*OptimizedHar, error)

ParseHarFileOptimized 解析HAR文件并返回内存优化的结构

func ParseHarOptimized

func ParseHarOptimized(harFileBytes []byte) (*OptimizedHar, error)

ParseHarOptimized 解析HAR字节并返回内存优化的结构

func ToOptimizedHar

func ToOptimizedHar(standardHar *Har) *OptimizedHar

ToOptimizedHar 将标准HAR转换为内存优化的HAR

func (*OptimizedHar) GetCreator

func (h *OptimizedHar) GetCreator() Creator

GetCreator 实现HARProvider接口

func (*OptimizedHar) GetEntries

func (h *OptimizedHar) GetEntries() []EntryProvider

GetEntries 实现HARProvider接口

func (*OptimizedHar) GetPages

func (h *OptimizedHar) GetPages() []PageProvider

GetPages 实现HARProvider接口

func (*OptimizedHar) GetVersion

func (h *OptimizedHar) GetVersion() string

GetVersion 实现HARProvider接口

func (*OptimizedHar) SearchByMethod

func (oh *OptimizedHar) SearchByMethod(method HTTPMethod) []OptimizedEntries

SearchByMethod 按HTTP方法搜索条目

func (*OptimizedHar) SearchByStatusCode

func (oh *OptimizedHar) SearchByStatusCode(statusCode int) []OptimizedEntries

SearchByStatusCode 按状态码搜索条目

func (*OptimizedHar) SearchByURL

func (oh *OptimizedHar) SearchByURL(urlPattern string) []OptimizedEntries

SearchByURL 按URL搜索条目

func (*OptimizedHar) ToStandard

func (h *OptimizedHar) ToStandard() *Har

ToStandard 实现HARProvider接口

func (*OptimizedHar) ToStandardHar

func (oh *OptimizedHar) ToStandardHar() *Har

ToStandardHar 将优化的HAR转换回标准HAR

type OptimizedRequest

type OptimizedRequest struct {
	Method      HTTPMethod        // 使用枚举而不是字符串
	URL         string            // URL不能优化
	HTTPVersion string            // 版本号通常很短
	Cookies     []Cookie          // 保持不变
	Headers     map[string]string // 使用map而不是数组,优化查找
	QueryString map[string]string // 使用map而不是数组
	HeadersSize *int              // 使用指针允许nil值
	BodySize    *int              // 使用指针允许nil值
}

OptimizedRequest 表示内存优化的请求结构

func (*OptimizedRequest) GetBodySize

func (r *OptimizedRequest) GetBodySize() int

GetBodySize 实现RequestProvider接口

func (*OptimizedRequest) GetCookies

func (r *OptimizedRequest) GetCookies() []CookieProvider

GetCookies 实现RequestProvider接口

func (*OptimizedRequest) GetHTTPVersion

func (r *OptimizedRequest) GetHTTPVersion() string

GetHTTPVersion 实现RequestProvider接口

func (*OptimizedRequest) GetHeaders

func (r *OptimizedRequest) GetHeaders() []HeaderProvider

GetHeaders 实现RequestProvider接口

func (*OptimizedRequest) GetHeadersSize

func (r *OptimizedRequest) GetHeadersSize() int

GetHeadersSize 实现RequestProvider接口

func (*OptimizedRequest) GetMethod

func (r *OptimizedRequest) GetMethod() string

GetMethod 实现RequestProvider接口

func (*OptimizedRequest) GetRequestHeaderValue

func (req *OptimizedRequest) GetRequestHeaderValue(name string) (string, bool)

GetRequestHeaderValue 获取指定请求头的值

func (*OptimizedRequest) GetURL

func (r *OptimizedRequest) GetURL() string

GetURL 实现RequestProvider接口

func (*OptimizedRequest) ToStandard

func (r *OptimizedRequest) ToStandard() Request

ToStandard 实现RequestProvider接口

type OptimizedResponse

type OptimizedResponse struct {
	Status       int               // 整数不需要优化
	StatusText   string            // 状态文本通常很短
	HTTPVersion  string            // 版本号通常很短
	Cookies      []Cookie          // 保持不变
	Headers      map[string]string // 使用map而不是数组
	RedirectURL  string            // URL不能优化
	HeadersSize  *int              // 使用指针允许nil值
	BodySize     *int              // 使用指针允许nil值
	Content      *OptimizedContent // 使用指针允许nil值
	TransferSize *int              // 使用指针允许nil值
}

OptimizedResponse 表示内存优化的响应结构

func (*OptimizedResponse) GetBodySize

func (r *OptimizedResponse) GetBodySize() int

GetBodySize 实现ResponseProvider接口

func (*OptimizedResponse) GetContent

func (r *OptimizedResponse) GetContent() ContentProvider

GetContent 实现ResponseProvider接口

func (*OptimizedResponse) GetCookies

func (r *OptimizedResponse) GetCookies() []CookieProvider

GetCookies 实现ResponseProvider接口

func (*OptimizedResponse) GetHTTPVersion

func (r *OptimizedResponse) GetHTTPVersion() string

GetHTTPVersion 实现ResponseProvider接口

func (*OptimizedResponse) GetHeaders

func (r *OptimizedResponse) GetHeaders() []HeaderProvider

GetHeaders 实现ResponseProvider接口

func (*OptimizedResponse) GetHeadersSize

func (r *OptimizedResponse) GetHeadersSize() int

GetHeadersSize 实现ResponseProvider接口

func (*OptimizedResponse) GetResponseHeaderValue

func (resp *OptimizedResponse) GetResponseHeaderValue(name string) (string, bool)

GetResponseHeaderValue 获取指定响应头的值

func (*OptimizedResponse) GetStatus

func (r *OptimizedResponse) GetStatus() int

GetStatus 实现ResponseProvider接口

func (*OptimizedResponse) GetStatusText

func (r *OptimizedResponse) GetStatusText() string

GetStatusText 实现ResponseProvider接口

func (*OptimizedResponse) ToStandard

func (r *OptimizedResponse) ToStandard() Response

ToStandard 实现ResponseProvider接口

type OptimizedTimings

type OptimizedTimings struct {
	Blocked         *float64 // 使用指针允许nil值
	DNS             *float64 // 使用指针允许nil值
	Connect         *float64 // 使用指针允许nil值
	Send            *float64 // 使用指针允许nil值
	Wait            *float64 // 使用指针允许nil值
	Receive         *float64 // 使用指针允许nil值
	Ssl             *float64 // 使用指针允许nil值
	BlockedQueueing *float64 // 使用指针允许nil值
	BlockedProxy    *float64 // 使用指针允许nil值
}

OptimizedTimings 表示内存优化的计时结构

func (*OptimizedTimings) GetBlocked

func (t *OptimizedTimings) GetBlocked() float64

GetBlocked 实现TimingsProvider接口

func (*OptimizedTimings) GetConnect

func (t *OptimizedTimings) GetConnect() float64

GetConnect 实现TimingsProvider接口

func (*OptimizedTimings) GetDNS

func (t *OptimizedTimings) GetDNS() float64

GetDNS 实现TimingsProvider接口

func (*OptimizedTimings) GetReceive

func (t *OptimizedTimings) GetReceive() float64

GetReceive 实现TimingsProvider接口

func (*OptimizedTimings) GetSSL

func (t *OptimizedTimings) GetSSL() float64

GetSSL 实现TimingsProvider接口

func (*OptimizedTimings) GetSend

func (t *OptimizedTimings) GetSend() float64

GetSend 实现TimingsProvider接口

func (*OptimizedTimings) GetWait

func (t *OptimizedTimings) GetWait() float64

GetWait 实现TimingsProvider接口

func (*OptimizedTimings) ToStandard

func (t *OptimizedTimings) ToStandard() Timings

ToStandard 实现TimingsProvider接口

type Option

type Option func(*options)

Option 定义解析器的选项

func WithAutoDetectVersion

func WithAutoDetectVersion(enabled bool) Option

WithAutoDetectVersion 自动检测HAR版本

func WithCollectWarnings

func WithCollectWarnings() Option

WithCollectWarnings 收集警告而不是失败

func WithHarVersion

func WithHarVersion(version string) Option

WithHarVersion 指定HAR版本

func WithLazyLoading

func WithLazyLoading() Option

WithLazyLoading 使用懒加载

func WithLenient

func WithLenient() Option

WithLenient 启用宽松解析模式

func WithMaxWarnings

func WithMaxWarnings(max int) Option

WithMaxWarnings 设置最大警告数量

func WithMemoryOptimized

func WithMemoryOptimized() Option

WithMemoryOptimized 使用内存优化结构

func WithSkipValidation

func WithSkipValidation() Option

WithSkipValidation 跳过验证

func WithStreaming

func WithStreaming() Option

WithStreaming 使用流式处理

type PageProvider

type PageProvider interface {
	// GetID 获取ID
	GetID() string

	// GetTitle 获取标题
	GetTitle() string

	// GetStartedDateTime 获取开始时间
	GetStartedDateTime() time.Time

	// GetPageTimings 获取页面计时信息
	GetPageTimings() PageTimingsProvider

	// ToStandard 转换为标准Page对象
	ToStandard() Pages
}

PageProvider 定义页面的接口

type PageTimings

type PageTimings struct {
	OnContentLoad float64 `json:"onContentLoad"`     // DOMContentLoaded事件触发时间(ms)
	OnLoad        float64 `json:"onLoad"`            // load事件触发时间(ms)
	Comment       string  `json:"comment,omitempty"` // 可选注释
}

PageTimings 表示页面加载计时

func (*PageTimings) GetOnContentLoad

func (pt *PageTimings) GetOnContentLoad() float64

GetOnContentLoad 实现PageTimingsProvider接口

func (*PageTimings) GetOnLoad

func (pt *PageTimings) GetOnLoad() float64

GetOnLoad 实现PageTimingsProvider接口

func (*PageTimings) ToStandard

func (pt *PageTimings) ToStandard() PageTimings

ToStandard 实现PageTimingsProvider接口

type PageTimingsProvider

type PageTimingsProvider interface {
	// GetOnContentLoad 获取内容加载时间
	GetOnContentLoad() float64

	// GetOnLoad 获取页面加载时间
	GetOnLoad() float64

	// ToStandard 转换为标准PageTimings对象
	ToStandard() PageTimings
}

PageTimingsProvider 定义页面计时信息的接口

type Pages

type Pages struct {
	StartedDateTime time.Time   `json:"startedDateTime"` // 页面加载开始时间
	ID              string      `json:"id"`              // 页面唯一标识
	Title           string      `json:"title"`           // 页面标题
	PageTimings     PageTimings `json:"pageTimings"`     // 页面加载计时
}

Pages 表示HAR文件中的页面信息

func (*Pages) GetID

func (p *Pages) GetID() string

GetID 实现PageProvider接口

func (*Pages) GetPageTimings

func (p *Pages) GetPageTimings() PageTimingsProvider

GetPageTimings 实现PageProvider接口

func (*Pages) GetStartedDateTime

func (p *Pages) GetStartedDateTime() time.Time

GetStartedDateTime 实现PageProvider接口

func (*Pages) GetTitle

func (p *Pages) GetTitle() string

GetTitle 实现PageProvider接口

func (*Pages) SetPageTimings

func (p *Pages) SetPageTimings(onContentLoad, onLoad float64) *Pages

SetPageTimings 设置页面加载时间

func (*Pages) ToStandard

func (p *Pages) ToStandard() Pages

ToStandard 实现PageProvider接口

type Parent

type Parent struct {
	Parent      *Parent     `json:"parent"`      // 嵌套父级
	Description string      `json:"description"` // 描述
	CallFrames  []CallFrame `json:"callFrames"`  // 调用帧
	ParentID    ParentID    `json:"parentId"`    // 父级ID
}

Parent 表示父级调用栈(Chrome DevTools扩展)

type ParentID

type ParentID struct {
	ID         string `json:"id"`         // ID
	DebuggerID string `json:"debuggerId"` // 调试器ID
}

ParentID 表示父级ID(Chrome DevTools扩展)

type ParseOptions

type ParseOptions struct {
	// 是否开启宽松解析模式,会尽量解析有效部分
	Lenient bool
	// 是否跳过验证
	SkipValidation bool
	// 是否记录所有解析警告(不会导致解析失败)
	CollectWarnings bool
	// 最大允许的警告数量,超过则停止解析
	MaxWarnings int
}

ParseOptions 解析选项

func DefaultParseOptions

func DefaultParseOptions() ParseOptions

DefaultParseOptions 默认解析选项

type Request

type Request struct {
	Method      string      `json:"method"`             // HTTP方法(GET, POST等)
	URL         string      `json:"url"`                // 请求URL
	HTTPVersion string      `json:"httpVersion"`        // HTTP版本
	Cookies     []Cookie    `json:"cookies"`            // Cookie列表
	Headers     []Headers   `json:"headers"`            // 头部列表
	QueryString []Headers   `json:"queryString"`        // 查询参数
	PostData    interface{} `json:"postData,omitempty"` // POST数据(可选)
	HeadersSize int         `json:"headersSize"`        // 头部大小(字节)
	BodySize    int         `json:"bodySize"`           // 请求体大小(字节)
}

Request 表示HTTP请求

func (*Request) GetBodySize

func (r *Request) GetBodySize() int

GetBodySize 实现RequestProvider接口

func (*Request) GetCookies

func (r *Request) GetCookies() []CookieProvider

GetCookies 实现RequestProvider接口

func (*Request) GetHTTPVersion

func (r *Request) GetHTTPVersion() string

GetHTTPVersion 实现RequestProvider接口

func (*Request) GetHeaders

func (r *Request) GetHeaders() []HeaderProvider

GetHeaders 实现RequestProvider接口

func (*Request) GetHeadersSize

func (r *Request) GetHeadersSize() int

GetHeadersSize 实现RequestProvider接口

func (*Request) GetMethod

func (r *Request) GetMethod() string

GetMethod 实现RequestProvider接口

func (*Request) GetURL

func (r *Request) GetURL() string

GetURL 实现RequestProvider接口

func (*Request) ToStandard

func (r *Request) ToStandard() Request

ToStandard 实现RequestProvider接口

type RequestProvider

type RequestProvider interface {
	// GetMethod 获取HTTP方法
	GetMethod() string

	// GetURL 获取URL
	GetURL() string

	// GetHTTPVersion 获取HTTP版本
	GetHTTPVersion() string

	// GetHeaders 获取头部信息
	GetHeaders() []HeaderProvider

	// GetCookies 获取Cookie信息
	GetCookies() []CookieProvider

	// GetBodySize 获取请求体大小
	GetBodySize() int

	// GetHeadersSize 获取头部大小
	GetHeadersSize() int

	// ToStandard 转换为标准Request对象
	ToStandard() Request
}

RequestProvider 定义请求的接口

type Response

type Response struct {
	Status       int       `json:"status"`                  // 状态码
	StatusText   string    `json:"statusText"`              // 状态描述
	HTTPVersion  string    `json:"httpVersion"`             // HTTP版本
	Cookies      []Cookie  `json:"cookies"`                 // Cookie列表
	Headers      []Headers `json:"headers"`                 // 头部列表
	Content      Content   `json:"content"`                 // 响应内容
	RedirectURL  string    `json:"redirectURL"`             // 重定向URL
	HeadersSize  int       `json:"headersSize"`             // 头部大小(字节)
	BodySize     int       `json:"bodySize"`                // 响应体大小(字节)
	TransferSize int       `json:"_transferSize,omitempty"` // 传输大小(字节)
	Error        any       `json:"_error,omitempty"`        // 错误信息
}

Response 表示HTTP响应

func (*Response) GetBodySize

func (r *Response) GetBodySize() int

GetBodySize 实现ResponseProvider接口

func (*Response) GetContent

func (r *Response) GetContent() ContentProvider

GetContent 实现ResponseProvider接口

func (*Response) GetCookies

func (r *Response) GetCookies() []CookieProvider

GetCookies 实现ResponseProvider接口

func (*Response) GetHTTPVersion

func (r *Response) GetHTTPVersion() string

GetHTTPVersion 实现ResponseProvider接口

func (*Response) GetHeaders

func (r *Response) GetHeaders() []HeaderProvider

GetHeaders 实现ResponseProvider接口

func (*Response) GetHeadersSize

func (r *Response) GetHeadersSize() int

GetHeadersSize 实现ResponseProvider接口

func (*Response) GetStatus

func (r *Response) GetStatus() int

GetStatus 实现ResponseProvider接口

func (*Response) GetStatusText

func (r *Response) GetStatusText() string

GetStatusText 实现ResponseProvider接口

func (*Response) ToStandard

func (r *Response) ToStandard() Response

ToStandard 实现ResponseProvider接口

type ResponseProvider

type ResponseProvider interface {
	// GetStatus 获取状态码
	GetStatus() int

	// GetStatusText 获取状态文本
	GetStatusText() string

	// GetHTTPVersion 获取HTTP版本
	GetHTTPVersion() string

	// GetHeaders 获取头部信息
	GetHeaders() []HeaderProvider

	// GetCookies 获取Cookie信息
	GetCookies() []CookieProvider

	// GetContent 获取内容
	GetContent() ContentProvider

	// GetBodySize 获取响应体大小
	GetBodySize() int

	// GetHeadersSize 获取头部大小
	GetHeadersSize() int

	// ToStandard 转换为标准Response对象
	ToStandard() Response
}

ResponseProvider 定义响应的接口

type Result

type Result struct {
	Har      *Har
	Warnings []*HarError
}

Result 解析结果,包含HAR对象和可能的警告

func ParseHarFileWithWarnings

func ParseHarFileWithWarnings(harFilePath string) (*Result, error)

ParseHarFileWithWarnings 解析HAR文件同时返回警告信息

func ParseHarWithWarnings

func ParseHarWithWarnings(harFileBytes []byte) (*Result, error)

ParseHarWithWarnings 解析HAR文件同时返回警告信息 该函数使用宽松模式解析,并收集所有警告而不是直接失败

type Stack

type Stack struct {
	CallFrames []CallFrame `json:"callFrames"` // 调用帧
	Parent     Parent      `json:"parent"`     // 父级调用栈
}

Stack 表示调用栈(Chrome DevTools扩展)

type StreamingEntryIterator

type StreamingEntryIterator struct {
	// contains filtered or unexported fields
}

StreamingEntryIterator 是HAR条目的迭代器

func (*StreamingEntryIterator) Close

func (it *StreamingEntryIterator) Close() error

Close 关闭迭代器和相关资源

func (*StreamingEntryIterator) Entry

func (it *StreamingEntryIterator) Entry() *Entries

Entry 返回当前条目

func (*StreamingEntryIterator) Err

func (it *StreamingEntryIterator) Err() error

Err 返回迭代过程中的错误

func (*StreamingEntryIterator) Next

func (it *StreamingEntryIterator) Next() bool

Next 获取下一个条目

func (*StreamingEntryIterator) Position

func (it *StreamingEntryIterator) Position() int

Position 返回当前位置

type StreamingHar

type StreamingHar struct {
	// contains filtered or unexported fields
}

StreamingHar 表示一个流式处理的HAR文件 它不会一次性加载整个HAR文件到内存中

func NewStreamingHarFromBytes

func NewStreamingHarFromBytes(data []byte) (*StreamingHar, error)

NewStreamingHarFromBytes 从字节数据创建一个流式HAR对象

func NewStreamingHarFromFile

func NewStreamingHarFromFile(filePath string) (*StreamingHar, error)

NewStreamingHarFromFile 从文件路径创建一个流式HAR对象

func (*StreamingHar) Close

func (h *StreamingHar) Close() error

Close 关闭StreamingHar并释放资源

func (*StreamingHar) Entries

func (h *StreamingHar) Entries() *StreamingEntryIterator

Entries 返回一个条目迭代器

func (*StreamingHar) GetAllEntries

func (sh *StreamingHar) GetAllEntries() ([]Entries, error)

GetAllEntries 获取所有条目(便捷方法,但会加载所有内容到内存)

func (*StreamingHar) GetCreator

func (h *StreamingHar) GetCreator() Creator

GetCreator 返回HAR创建者信息

func (*StreamingHar) GetPages

func (h *StreamingHar) GetPages() []Pages

GetPages 返回页面信息

func (*StreamingHar) GetVersion

func (h *StreamingHar) GetVersion() string

GetVersion 返回HAR版本

type Timings

type Timings struct {
	Blocked         float64 `json:"blocked"`                     // 阻塞时间(ms)
	DNS             float64 `json:"dns"`                         // DNS解析时间(ms)
	Connect         float64 `json:"connect"`                     // TCP连接时间(ms)
	Ssl             float64 `json:"ssl"`                         // SSL/TLS协商时间(ms)
	Send            float64 `json:"send"`                        // 发送请求时间(ms)
	Wait            float64 `json:"wait"`                        // 等待响应时间(ms)
	Receive         float64 `json:"receive"`                     // 接收响应时间(ms)
	BlockedQueueing float64 `json:"_blocked_queueing,omitempty"` // 队列等待时间(ms)
	BlockedProxy    float64 `json:"_blocked_proxy,omitempty"`    // 代理连接时间(ms)
}

Timings 表示HTTP请求/响应过程中的时间指标

func (*Timings) GetBlocked

func (t *Timings) GetBlocked() float64

GetBlocked 实现TimingsProvider接口

func (*Timings) GetConnect

func (t *Timings) GetConnect() float64

GetConnect 实现TimingsProvider接口

func (*Timings) GetDNS

func (t *Timings) GetDNS() float64

GetDNS 实现TimingsProvider接口

func (*Timings) GetReceive

func (t *Timings) GetReceive() float64

GetReceive 实现TimingsProvider接口

func (*Timings) GetSSL

func (t *Timings) GetSSL() float64

GetSSL 实现TimingsProvider接口

func (*Timings) GetSend

func (t *Timings) GetSend() float64

GetSend 实现TimingsProvider接口

func (*Timings) GetWait

func (t *Timings) GetWait() float64

GetWait 实现TimingsProvider接口

func (*Timings) ToStandard

func (t *Timings) ToStandard() Timings

ToStandard 实现TimingsProvider接口

type TimingsProvider

type TimingsProvider interface {
	// GetBlocked 获取被阻塞时间
	GetBlocked() float64

	// GetDNS 获取DNS解析时间
	GetDNS() float64

	// GetConnect 获取连接时间
	GetConnect() float64

	// GetSend 获取发送时间
	GetSend() float64

	// GetWait 获取等待时间
	GetWait() float64

	// GetReceive 获取接收时间
	GetReceive() float64

	// GetSSL 获取SSL握手时间
	GetSSL() float64

	// ToStandard 转换为标准Timings对象
	ToStandard() Timings
}

TimingsProvider 定义计时信息的接口

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL