From 79cec56aec40c1656829ce58dffa5b96ab6650ad Mon Sep 17 00:00:00 2001 From: gospider <2216403312@qq.com> Date: Wed, 22 Jan 2025 08:29:11 +0800 Subject: [PATCH] del setProxy and setProxys, open clientOption --- client.go | 51 +++++++++++++++------------------------------------ jar.go | 12 ++++++------ option.go | 4 ++-- 3 files changed, 23 insertions(+), 44 deletions(-) diff --git a/client.go b/client.go index 24fdb2f..56fea6d 100644 --- a/client.go +++ b/client.go @@ -14,11 +14,11 @@ import ( // Connection Management type Client struct { - option ClientOption - transport *roundTripper - ctx context.Context - cnl context.CancelFunc - closed bool + ClientOption ClientOption + transport *roundTripper + ctx context.Context + cnl context.CancelFunc + closed bool } var defaultClient, _ = NewClient(context.TODO()) @@ -35,15 +35,15 @@ func NewClient(preCtx context.Context, options ...ClientOption) (*Client, error) result := new(Client) result.ctx, result.cnl = context.WithCancel(preCtx) result.transport = newRoundTripper(result.ctx) - result.option = option - if result.option.TlsConfig == nil { - result.option.TlsConfig = &tls.Config{ + result.ClientOption = option + if result.ClientOption.TlsConfig == nil { + result.ClientOption.TlsConfig = &tls.Config{ InsecureSkipVerify: true, ClientSessionCache: tls.NewLRUClientSessionCache(0), } } - if result.option.UtlsConfig == nil { - result.option.UtlsConfig = &utls.Config{ + if result.ClientOption.UtlsConfig == nil { + result.ClientOption.UtlsConfig = &utls.Config{ InsecureSkipVerify: true, ClientSessionCache: utls.NewLRUClientSessionCache(0), InsecureSkipTimeVerify: true, @@ -52,39 +52,18 @@ func NewClient(preCtx context.Context, options ...ClientOption) (*Client, error) } } //cookiesjar - if !result.option.DisCookie { - if result.option.Jar == nil { - result.option.Jar = NewJar() + if !result.ClientOption.DisCookie { + if result.ClientOption.Jar == nil { + result.ClientOption.Jar = NewJar() } } var err error - if result.option.Proxy != "" { - _, err = gtls.VerifyProxy(result.option.Proxy) + if result.ClientOption.Proxy != "" { + _, err = gtls.VerifyProxy(result.ClientOption.Proxy) } return result, err } -// Modifying the client's proxy -func (obj *Client) SetProxy(proxyUrl string) (err error) { - _, err = gtls.VerifyProxy(proxyUrl) - if err == nil { - obj.option.Proxy = proxyUrl - } - return -} - -// Modifying the client's proxy -func (obj *Client) SetProxys(proxyUrls []string) (err error) { - for _, proxy := range proxyUrls { - _, err = gtls.VerifyProxy(proxy) - if err != nil { - return - } - } - obj.option.Proxys = proxyUrls - return -} - // Close idle connections. If the connection is in use, wait until it ends before closing func (obj *Client) CloseConns() { obj.transport.closeConns() diff --git a/jar.go b/jar.go index f1efdfa..11d61e4 100644 --- a/jar.go +++ b/jar.go @@ -29,31 +29,31 @@ func NewJar() *jar { // get cookies func (obj *Client) GetCookies(href *url.URL) Cookies { - if obj.option.Jar == nil { + if obj.ClientOption.Jar == nil { return nil } - return obj.option.Jar.GetCookies(href) + return obj.ClientOption.Jar.GetCookies(href) } // set cookies func (obj *Client) SetCookies(href *url.URL, cookies ...any) error { - if obj.option.Jar == nil { + if obj.ClientOption.Jar == nil { return nil } cooks, err := any2cookies(href, cookies...) if err != nil { return err } - obj.option.Jar.SetCookies(href, cooks) + obj.ClientOption.Jar.SetCookies(href, cooks) return nil } // clear cookies func (obj *Client) ClearCookies() { - if obj.option.Jar == nil { + if obj.ClientOption.Jar == nil { return } - obj.option.Jar.ClearCookies() + obj.ClientOption.Jar.ClearCookies() } // Get cookies diff --git a/option.go b/option.go index 9d96300..90b70f7 100644 --- a/option.go +++ b/option.go @@ -211,7 +211,7 @@ func (obj *RequestOption) initParams() (*url.URL, error) { return baseUrl, nil } func (obj *Client) newRequestOption(option RequestOption) (RequestOption, error) { - err := tools.Merge(&option, obj.option) + err := tools.Merge(&option, obj.ClientOption) //end if option.MaxRetries < 0 { option.MaxRetries = 0 @@ -223,7 +223,7 @@ func (obj *Client) newRequestOption(option RequestOption) (RequestOption, error) option.UJa3Spec = ja3.DefaultUSpec() } if option.UserAgent == "" { - option.UserAgent = obj.option.UserAgent + option.UserAgent = obj.ClientOption.UserAgent } if option.DisCookie { option.Jar = nil