Documentation
¶
Index ¶
- Constants
- Variables
- func DetectHarVersion(har *Har) string
- func IsValidHarVersion(version string) bool
- func IsValidURL(rawURL string) bool
- func ParseHarEnhanced(harFileBytes []byte) (*Har, *HarError)
- func ParseHarFileEnhanced(harFilePath string) (*Har, *HarError)
- func ValidateHarFile(har *Har) error
- type AfterRequest
- type BeforeRequest
- type Browser
- type Cache
- type CallFrame
- type Content
- type ContentProvider
- type ConvertFormat
- type ConvertOptions
- type Cookie
- func (c *Cookie) GetDomain() string
- func (c *Cookie) GetExpires() time.Time
- func (c *Cookie) GetName() string
- func (c *Cookie) GetPath() string
- func (c *Cookie) GetSameSite() string
- func (c *Cookie) GetValue() string
- func (c *Cookie) IsHTTPOnly() bool
- func (c *Cookie) IsSecure() bool
- func (c *Cookie) ToStandard() Cookie
- type CookieProvider
- type Creator
- type Entries
- func (e *Entries) AddRequestHeader(name, value string) *Entries
- func (e *Entries) AddResponseHeader(name, value string) *Entries
- func (e *Entries) GetPageref() string
- func (e *Entries) GetRequest() RequestProvider
- func (e *Entries) GetResponse() ResponseProvider
- func (e *Entries) GetStartedDateTime() time.Time
- func (e *Entries) GetTime() float64
- func (e *Entries) GetTimings() TimingsProvider
- func (e *Entries) SetResponseContent(size int, mimeType string) *Entries
- func (e *Entries) SetResponseStatus(status int, statusText string) *Entries
- func (e *Entries) SetTimings(blocked, dns, connect, send, wait, receive, ssl float64) *Entries
- func (e *Entries) ToStandard() Entries
- type EntryIterator
- type EntryProvider
- type ErrorCode
- type FilterOptions
- type FilterResult
- type HARProvider
- type HTTPMethod
- type Har
- func NewHar() *Har
- func ParseHar(harFileBytes []byte) (*Har, error)
- func ParseHarFile(harFilePath string) (*Har, error)
- func ParseHarFileLenient(harFilePath string) (*Har, error)
- func ParseHarFileWithOptions(harFilePath string, options ParseOptions) (*Har, error)
- func ParseHarLenient(harFileBytes []byte) (*Har, error)
- func ParseHarWithOptions(harFileBytes []byte, options ParseOptions) (*Har, error)
- func (h *Har) AddEntry(method, url, httpVersion string, pageref string) *Entries
- func (h *Har) AddPage(id, title string) *Pages
- func (h *Har) Convert(format ConvertFormat, options ConvertOptions) (string, error)
- func (h *Har) Filter(options FilterOptions) *FilterResult
- func (h *Har) FindByContentType(contentType string) *FilterResult
- func (h *Har) FindByMethod(method string) *FilterResult
- func (h *Har) FindByStatusCode(statusCode int) *FilterResult
- func (h *Har) FindByTimeRange(start, end time.Time) *FilterResult
- func (h *Har) FindByURL(urlStr string, useRegex bool) *FilterResult
- func (h *Har) FindErrors() *FilterResult
- func (h *Har) FindSlowRequests(minDuration float64) *FilterResult
- func (h *Har) GetCreator() Creator
- func (h *Har) GetEntries() []EntryProvider
- func (h *Har) GetPages() []PageProvider
- func (h *Har) GetVersion() string
- func (h *Har) SaveToFile(filePath string, indent bool) error
- func (h *Har) SetCreator(name, version string) *Har
- func (h *Har) ToJSON(indent bool) ([]byte, error)
- func (h *Har) ToStandard() *Har
- type HarError
- func NewFileSystemError(message string, err error) *HarError
- func NewHarError(code ErrorCode, message string, err error) *HarError
- func NewInvalidFormatError(message string) *HarError
- func NewInvalidValueError(field string, value interface{}, reason string) *HarError
- func NewJSONParseError(message string, err error) *HarError
- func NewMissingFieldError(field string) *HarError
- func NewUnsupportedError(message string) *HarError
- func NewValidationError(message string, field string) *HarError
- func WrapJSONUnmarshalError(err error) *HarError
- func (e *HarError) AddPartialError(err *HarError) *HarError
- func (e *HarError) Error() string
- func (e *HarError) GetCode() ErrorCode
- func (e *HarError) GetPartialErrors() []*HarError
- func (e *HarError) HasPartialErrors() bool
- func (e *HarError) IsFileSystemError() bool
- func (e *HarError) IsFormatError() bool
- func (e *HarError) IsJSONParseError() bool
- func (e *HarError) IsValidationError() bool
- func (e *HarError) WithField(field string) *HarError
- func (e *HarError) WithMetadata(key string, value interface{}) *HarError
- type HeaderProvider
- type Headers
- type Initiator
- type LazyContent
- type LazyEntries
- func (e *LazyEntries) GetPageref() string
- func (e *LazyEntries) GetRequest() RequestProvider
- func (e *LazyEntries) GetResponse() ResponseProvider
- func (e *LazyEntries) GetStartedDateTime() time.Time
- func (e *LazyEntries) GetTime() float64
- func (e *LazyEntries) GetTimings() TimingsProvider
- func (e *LazyEntries) ToStandard() Entries
- type LazyHar
- func (h *LazyHar) GetCreator() Creator
- func (h *LazyHar) GetEntries() []EntryProvider
- func (lh *LazyHar) GetEntriesCount() int
- func (lh *LazyHar) GetEntry(index int) (*LazyEntries, error)
- func (h *LazyHar) GetPages() []PageProvider
- func (lh *LazyHar) GetResponseContent(index int) (*LazyContent, error)
- func (lh *LazyHar) GetResponseText(index int) (*string, error)
- func (h *LazyHar) GetVersion() string
- func (h *LazyHar) ToStandard() *Har
- func (lh *LazyHar) ToStandardHar() (*Har, error)
- type LazyResponse
- func (r *LazyResponse) GetBodySize() int
- func (r *LazyResponse) GetContent() ContentProvider
- func (r *LazyResponse) GetCookies() []CookieProvider
- func (r *LazyResponse) GetHTTPVersion() string
- func (r *LazyResponse) GetHeaders() []HeaderProvider
- func (r *LazyResponse) GetHeadersSize() int
- func (r *LazyResponse) GetStatus() int
- func (r *LazyResponse) GetStatusText() string
- func (r *LazyResponse) ToStandard() Response
- type Log
- type OptimizedContent
- type OptimizedEntries
- func (e *OptimizedEntries) GetPageref() string
- func (e *OptimizedEntries) GetRequest() RequestProvider
- func (e *OptimizedEntries) GetResponse() ResponseProvider
- func (e *OptimizedEntries) GetStartedDateTime() time.Time
- func (e *OptimizedEntries) GetTime() float64
- func (e *OptimizedEntries) GetTimings() TimingsProvider
- func (e *OptimizedEntries) ToStandard() Entries
- type OptimizedHar
- func (h *OptimizedHar) GetCreator() Creator
- func (h *OptimizedHar) GetEntries() []EntryProvider
- func (h *OptimizedHar) GetPages() []PageProvider
- func (h *OptimizedHar) GetVersion() string
- func (oh *OptimizedHar) SearchByMethod(method HTTPMethod) []OptimizedEntries
- func (oh *OptimizedHar) SearchByStatusCode(statusCode int) []OptimizedEntries
- func (oh *OptimizedHar) SearchByURL(urlPattern string) []OptimizedEntries
- func (h *OptimizedHar) ToStandard() *Har
- func (oh *OptimizedHar) ToStandardHar() *Har
- type OptimizedRequest
- func (r *OptimizedRequest) GetBodySize() int
- func (r *OptimizedRequest) GetCookies() []CookieProvider
- func (r *OptimizedRequest) GetHTTPVersion() string
- func (r *OptimizedRequest) GetHeaders() []HeaderProvider
- func (r *OptimizedRequest) GetHeadersSize() int
- func (r *OptimizedRequest) GetMethod() string
- func (req *OptimizedRequest) GetRequestHeaderValue(name string) (string, bool)
- func (r *OptimizedRequest) GetURL() string
- func (r *OptimizedRequest) ToStandard() Request
- type OptimizedResponse
- func (r *OptimizedResponse) GetBodySize() int
- func (r *OptimizedResponse) GetContent() ContentProvider
- func (r *OptimizedResponse) GetCookies() []CookieProvider
- func (r *OptimizedResponse) GetHTTPVersion() string
- func (r *OptimizedResponse) GetHeaders() []HeaderProvider
- func (r *OptimizedResponse) GetHeadersSize() int
- func (resp *OptimizedResponse) GetResponseHeaderValue(name string) (string, bool)
- func (r *OptimizedResponse) GetStatus() int
- func (r *OptimizedResponse) GetStatusText() string
- func (r *OptimizedResponse) ToStandard() Response
- type OptimizedTimings
- func (t *OptimizedTimings) GetBlocked() float64
- func (t *OptimizedTimings) GetConnect() float64
- func (t *OptimizedTimings) GetDNS() float64
- func (t *OptimizedTimings) GetReceive() float64
- func (t *OptimizedTimings) GetSSL() float64
- func (t *OptimizedTimings) GetSend() float64
- func (t *OptimizedTimings) GetWait() float64
- func (t *OptimizedTimings) ToStandard() Timings
- type Option
- func WithAutoDetectVersion(enabled bool) Option
- func WithCollectWarnings() Option
- func WithHarVersion(version string) Option
- func WithLazyLoading() Option
- func WithLenient() Option
- func WithMaxWarnings(max int) Option
- func WithMemoryOptimized() Option
- func WithSkipValidation() Option
- func WithStreaming() Option
- type PageProvider
- type PageTimings
- type PageTimingsProvider
- type Pages
- type Parent
- type ParentID
- type ParseOptions
- type Request
- func (r *Request) GetBodySize() int
- func (r *Request) GetCookies() []CookieProvider
- func (r *Request) GetHTTPVersion() string
- func (r *Request) GetHeaders() []HeaderProvider
- func (r *Request) GetHeadersSize() int
- func (r *Request) GetMethod() string
- func (r *Request) GetURL() string
- func (r *Request) ToStandard() Request
- type RequestProvider
- type Response
- func (r *Response) GetBodySize() int
- func (r *Response) GetContent() ContentProvider
- func (r *Response) GetCookies() []CookieProvider
- func (r *Response) GetHTTPVersion() string
- func (r *Response) GetHeaders() []HeaderProvider
- func (r *Response) GetHeadersSize() int
- func (r *Response) GetStatus() int
- func (r *Response) GetStatusText() string
- func (r *Response) ToStandard() Response
- type ResponseProvider
- type Result
- type Stack
- type StreamingEntryIterator
- type StreamingHar
- type Timings
- type TimingsProvider
Constants ¶
const ( // HAR规范1.1版本 HarSpecVersion11 = "1.1" // HAR规范1.2版本 HarSpecVersion12 = "1.2" // HAR规范1.3版本 (非官方,但一些工具使用) HarSpecVersion13 = "1.3" )
HAR规范版本常量
Variables ¶
var ( // ErrInvalidHar 表示HAR对象缺少必要字段 ErrInvalidHar = NewValidationError("HAR对象缺少必要字段", "") // ErrInvalidURL 表示HAR条目中的URL无效 ErrInvalidURL = NewValidationError("HAR条目中包含无效URL", "") // ErrNotJsonContent 表示内容不是JSON格式 ErrNotJsonContent = NewInvalidFormatError("内容不是JSON格式") )
错误定义
var ( // OptMemoryEfficient 内存高效配置 OptMemoryEfficient = []Option{ WithMemoryOptimized(), WithSkipValidation(), } // OptFast 快速解析配置 OptFast = []Option{ WithSkipValidation(), } // OptLenient 宽松解析配置 OptLenient = []Option{ WithLenient(), WithCollectWarnings(), } // OptPerformance 高性能配置 OptPerformance = []Option{ WithMemoryOptimized(), WithSkipValidation(), WithLazyLoading(), } )
定义常用的选项组合
Functions ¶
func IsValidHarVersion ¶
IsValidHarVersion 检查是否为支持的HAR版本
func ParseHarEnhanced ¶
ParseHarEnhanced 增强版HAR解析,提供详细错误信息
func ParseHarFileEnhanced ¶
ParseHarFileEnhanced 增强版HAR文件解析,提供详细错误信息
func ValidateHarFile ¶
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 ¶
GetEncoding 实现ContentProvider接口
func (*Content) GetMimeType ¶
GetMimeType 实现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 ¶
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
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 ¶
AddRequestHeader 添加请求头
func (*Entries) AddResponseHeader ¶
AddResponseHeader 添加响应头
func (*Entries) GetRequest ¶
func (e *Entries) GetRequest() RequestProvider
GetRequest 实现EntryProvider接口
func (*Entries) GetResponse ¶
func (e *Entries) GetResponse() ResponseProvider
GetResponse 实现EntryProvider接口
func (*Entries) GetStartedDateTime ¶
GetStartedDateTime 实现EntryProvider接口
func (*Entries) GetTimings ¶
func (e *Entries) GetTimings() TimingsProvider
GetTimings 实现EntryProvider接口
func (*Entries) SetResponseContent ¶
SetResponseContent 设置响应内容
func (*Entries) SetResponseStatus ¶
SetResponseStatus 设置响应状态
func (*Entries) SetTimings ¶
SetTimings 设置时间数据
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 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 )
type Har ¶
type Har struct {
Log Log `json:"log"` // HAR日志对象
}
Har 表示HTTP归档(HAR)文件的主结构
Har结构是HAR格式的根对象,包含一个Log字段。 所有HAR数据都包含在Log字段中。
func ParseHar ¶
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 ¶
ParseHarFile 解析HAR格式的文件
ParseHarFile是ParseHar的便捷包装,它会先读取文件内容再进行解析。 该函数遵循错误处理最佳实践,将所有错误转换为HarError类型,便于统一处理。
示例:
har, err := ParseHarFile("example.har")
if err != nil {
log.Fatalf("解析HAR文件失败: %v", err)
}
func ParseHarFileLenient ¶
ParseHarFileLenient 宽松模式解析HAR文件
func ParseHarFileWithOptions ¶
func ParseHarFileWithOptions(harFilePath string, options ParseOptions) (*Har, error)
ParseHarFileWithOptions 解析HAR格式的文件,使用自定义解析选项
func ParseHarLenient ¶
ParseHarLenient 宽松模式解析HAR文件内容
func ParseHarWithOptions ¶
func ParseHarWithOptions(harFileBytes []byte, options ParseOptions) (*Har, error)
ParseHarWithOptions 解析HAR格式的字节数据,使用自定义解析选项
func (*Har) Convert ¶
func (h *Har) Convert(format ConvertFormat, options ConvertOptions) (string, error)
Convert 将HAR转换为指定格式
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) FindSlowRequests ¶
func (h *Har) FindSlowRequests(minDuration float64) *FilterResult
FindSlowRequests 查找慢请求
func (*Har) SaveToFile ¶
SaveToFile 将HAR对象保存到文件
func (*Har) SetCreator ¶
SetCreator 设置HAR文件的创建者信息
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 ¶
NewFileSystemError 创建文件系统错误
func NewHarError ¶
NewHarError 创建新的HAR错误
func NewInvalidFormatError ¶
NewInvalidFormatError 创建格式错误
func NewInvalidValueError ¶
NewInvalidValueError 创建字段值无效错误
func NewJSONParseError ¶
NewJSONParseError 创建JSON解析错误
func NewMissingFieldError ¶
NewMissingFieldError 创建缺少字段错误
func NewUnsupportedError ¶
NewUnsupportedError 创建不支持的操作错误
func NewValidationError ¶
NewValidationError 创建验证错误
func WrapJSONUnmarshalError ¶
WrapJSONUnmarshalError 封装JSON解析错误以提供更详细信息
func (*HarError) AddPartialError ¶
AddPartialError 添加部分解析错误
func (*HarError) GetPartialErrors ¶
GetPartialErrors 获取所有部分错误
func (*HarError) HasPartialErrors ¶
HasPartialErrors 检查是否包含部分错误
func (*HarError) IsFileSystemError ¶
IsFileSystemError 是否为文件系统错误
func (*HarError) IsJSONParseError ¶
IsJSONParseError 是否为JSON解析错误
func (*HarError) IsValidationError ¶
IsValidationError 是否为验证错误
func (*HarError) WithMetadata ¶
WithMetadata 添加元数据到错误
type HeaderProvider ¶
type HeaderProvider interface {
// GetName 获取名称
GetName() string
// GetValue 获取值
GetValue() string
// ToStandard 转换为标准Header对象
ToStandard() Headers
}
HeaderProvider 定义HTTP头部的接口
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) GetText ¶
func (lc *LazyContent) GetText() (*string, error)
GetText 获取内容文本,如果尚未加载则先加载
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) 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 ¶
ParseHarFileWithLazyLoading 解析HAR文件,对大型字段使用延迟加载
func ParseHarWithLazyLoading ¶
ParseHarWithLazyLoading 解析HAR内容,对大型字段使用延迟加载
func (*LazyHar) GetEntries ¶
func (h *LazyHar) GetEntries() []EntryProvider
GetEntries 实现HARProvider接口
func (*LazyHar) GetEntry ¶
func (lh *LazyHar) GetEntry(index int) (*LazyEntries, error)
GetEntry 获取指定索引的条目
func (*LazyHar) GetResponseContent ¶
func (lh *LazyHar) GetResponseContent(index int) (*LazyContent, error)
GetResponseContent 获取指定索引条目的响应内容
func (*LazyHar) GetResponseText ¶
GetResponseText 获取指定索引条目的响应文本
func (*LazyHar) ToStandardHar ¶
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 ¶
WithAutoDetectVersion 自动检测HAR版本
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) GetPageTimings ¶
func (p *Pages) GetPageTimings() PageTimingsProvider
GetPageTimings 实现PageProvider接口
func (*Pages) GetStartedDateTime ¶
GetStartedDateTime 实现PageProvider接口
func (*Pages) SetPageTimings ¶
SetPageTimings 设置页面加载时间
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 ParseOptions ¶
type ParseOptions struct {
// 是否开启宽松解析模式,会尽量解析有效部分
Lenient bool
// 是否跳过验证
SkipValidation bool
// 是否记录所有解析警告(不会导致解析失败)
CollectWarnings bool
// 最大允许的警告数量,超过则停止解析
MaxWarnings int
}
ParseOptions 解析选项
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) GetCookies ¶
func (r *Request) GetCookies() []CookieProvider
GetCookies 实现RequestProvider接口
func (*Request) GetHTTPVersion ¶
GetHTTPVersion 实现RequestProvider接口
func (*Request) GetHeaders ¶
func (r *Request) GetHeaders() []HeaderProvider
GetHeaders 实现RequestProvider接口
func (*Request) GetHeadersSize ¶
GetHeadersSize 实现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 ¶
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 ¶
GetHTTPVersion 实现ResponseProvider接口
func (*Response) GetHeaders ¶
func (r *Response) GetHeaders() []HeaderProvider
GetHeaders 实现ResponseProvider接口
func (*Response) GetHeadersSize ¶
GetHeadersSize 实现ResponseProvider接口
func (*Response) GetStatusText ¶
GetStatusText 实现ResponseProvider接口
func (*Response) ToStandard ¶
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 ¶
Result 解析结果,包含HAR对象和可能的警告
func ParseHarFileWithWarnings ¶
ParseHarFileWithWarnings 解析HAR文件同时返回警告信息
func ParseHarWithWarnings ¶
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) 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) Entries ¶
func (h *StreamingHar) Entries() *StreamingEntryIterator
Entries 返回一个条目迭代器
func (*StreamingHar) GetAllEntries ¶
func (sh *StreamingHar) GetAllEntries() ([]Entries, error)
GetAllEntries 获取所有条目(便捷方法,但会加载所有内容到内存)
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请求/响应过程中的时间指标
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 定义计时信息的接口