From ab9c13d852ea5719e05e32f55ae8aa665e46f569 Mon Sep 17 00:00:00 2001 From: zu1k Date: Wed, 12 Aug 2020 20:49:07 +0800 Subject: [PATCH] use custom http client --- getter/subscribe.go | 3 +-- getter/web_free_ssr_xyz.go | 3 +-- getter/web_fuzz.go | 3 +-- getter/web_lucn_org.go | 3 +-- tool/httpclient.go | 37 +++++++++++++++++++++++++++++++------ 5 files changed, 35 insertions(+), 14 deletions(-) diff --git a/getter/subscribe.go b/getter/subscribe.go index a57f442..2d0ed16 100644 --- a/getter/subscribe.go +++ b/getter/subscribe.go @@ -2,7 +2,6 @@ package getter import ( "io/ioutil" - "net/http" "strings" "sync" @@ -19,7 +18,7 @@ type Subscribe struct { } func (s *Subscribe) Get() []proxy.Proxy { - resp, err := http.Get(s.Url) + resp, err := tool.GetHttpClient().Get(s.Url) if err != nil { return nil } diff --git a/getter/web_free_ssr_xyz.go b/getter/web_free_ssr_xyz.go index f2dd083..9a30aac 100644 --- a/getter/web_free_ssr_xyz.go +++ b/getter/web_free_ssr_xyz.go @@ -3,7 +3,6 @@ package getter import ( "encoding/json" "io/ioutil" - "net/http" "sync" "github.com/zu1k/proxypool/proxy" @@ -41,7 +40,7 @@ func (w *WebFreessrXyz) Get2Chan(pc chan proxy.Proxy, wg *sync.WaitGroup) { } func freessrxyzFetch(link string) []proxy.Proxy { - resp, err := http.Get(link) + resp, err := tool.GetHttpClient().Get(link) if err != nil { return nil } diff --git a/getter/web_fuzz.go b/getter/web_fuzz.go index 2965de7..a63d594 100644 --- a/getter/web_fuzz.go +++ b/getter/web_fuzz.go @@ -2,7 +2,6 @@ package getter import ( "io/ioutil" - "net/http" "sync" "github.com/zu1k/proxypool/proxy" @@ -18,7 +17,7 @@ type WebFuzz struct { } func (w *WebFuzz) Get() []proxy.Proxy { - resp, err := http.Get(w.Url) + resp, err := tool.GetHttpClient().Get(w.Url) if err != nil { return nil } diff --git a/getter/web_lucn_org.go b/getter/web_lucn_org.go index 9e46365..ccf9a2d 100644 --- a/getter/web_lucn_org.go +++ b/getter/web_lucn_org.go @@ -4,7 +4,6 @@ import ( "encoding/base64" "encoding/json" "io/ioutil" - "net/http" "sync" "github.com/zu1k/proxypool/proxy" @@ -25,7 +24,7 @@ func NewWebLucnorg(options tool.Options) Getter { } func (w *WebLucnOrg) Get() []proxy.Proxy { - resp, err := http.Post(lucnorgSsrLink, "", nil) + resp, err := tool.GetHttpClient().Post(lucnorgSsrLink, nil) if err != nil { return nil } diff --git a/tool/httpclient.go b/tool/httpclient.go index 39c3de1..cff518a 100644 --- a/tool/httpclient.go +++ b/tool/httpclient.go @@ -1,18 +1,43 @@ package tool import ( + "io" "net/http" "time" ) -var httpClient = http.DefaultClient - -func init() { - httpClient.Timeout = time.Second * 10 - http.DefaultClient.Timeout = time.Second * 10 +type HttpClient struct { + *http.Client } -func GetHttpClient() *http.Client { +var httpClient *HttpClient + +func init() { + httpClient = &HttpClient{http.DefaultClient} + httpClient.Timeout = time.Second * 10 +} + +func GetHttpClient() *HttpClient { c := *httpClient return &c } + +func (c *HttpClient) Get(url string) (resp *http.Response, err error) { + req, err := http.NewRequest(http.MethodGet, url, nil) + if err != nil { + return nil, err + } + req.Header.Set("Accept-Language", "zh-CN,zh;q=0.9,en;q=0.8") + req.Header.Set("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36") + return c.Do(req) +} + +func (c *HttpClient) Post(url string, body io.Reader) (resp *http.Response, err error) { + req, err := http.NewRequest(http.MethodPost, url, body) + if err != nil { + return nil, err + } + req.Header.Set("Accept-Language", "zh-CN,zh;q=0.9,en;q=0.8") + req.Header.Set("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36") + return c.Do(req) +}