diff --git a/connector/http2/connector.go b/connector/http2/connector.go index 5f49d5f..2b4776a 100644 --- a/connector/http2/connector.go +++ b/connector/http2/connector.go @@ -65,12 +65,12 @@ func (c *http2Connector) Connect(ctx context.Context, conn net.Conn, network, ad Host: address, ProtoMajor: 2, ProtoMinor: 0, - Header: make(http.Header), + Header: c.md.header, Body: pr, // ContentLength: -1, } - if c.md.UserAgent != "" { - req.Header.Set("User-Agent", c.md.UserAgent) + if req.Header == nil { + req.Header = make(http.Header) } if user := c.options.Auth; user != nil { diff --git a/connector/http2/metadata.go b/connector/http2/metadata.go index 13f0bff..cdce3d6 100644 --- a/connector/http2/metadata.go +++ b/connector/http2/metadata.go @@ -1,31 +1,30 @@ package http2 import ( + "net/http" "time" mdata "github.com/go-gost/core/metadata" ) -const ( - defaultUserAgent = "Chrome/78.0.3904.106" -) - type metadata struct { connectTimeout time.Duration - UserAgent string + header http.Header } func (c *http2Connector) parseMetadata(md mdata.Metadata) (err error) { const ( connectTimeout = "timeout" - userAgent = "userAgent" + header = "header" ) c.md.connectTimeout = mdata.GetDuration(md, connectTimeout) - c.md.UserAgent = mdata.GetString(md, userAgent) - if c.md.UserAgent == "" { - c.md.UserAgent = defaultUserAgent + if mm := mdata.GetStringMapString(md, header); len(mm) > 0 { + hd := http.Header{} + for k, v := range mm { + hd.Add(k, v) + } + c.md.header = hd } - return }