del setProxy and setProxys, open clientOption

This commit is contained in:
gospider
2025-01-22 08:29:11 +08:00
parent 00507c88a9
commit 79cec56aec
3 changed files with 23 additions and 44 deletions

View File

@@ -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()

12
jar.go
View File

@@ -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

View File

@@ -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