diff --git a/controllers/login.go b/controllers/login.go index 9fbd612..f5dbb4e 100644 --- a/controllers/login.go +++ b/controllers/login.go @@ -16,7 +16,8 @@ func Login(localAddr net.Addr, debugOutput bool) error { Form: &global.Config.Form, Meta: &global.Config.Meta, }, - Client: util.HttpTools(localAddr).Client, + Client: util.HttpPackSelect(localAddr).Client, + Header: util.HttpPackSelect(localAddr).Header, } var output func(args ...interface{}) diff --git a/util/http.go b/util/http.go index 28b5e83..2d2281b 100644 --- a/util/http.go +++ b/util/http.go @@ -3,40 +3,55 @@ package util import ( "github.com/Mmx233/BitSrunLoginGo/global" "github.com/Mmx233/tool" + "github.com/corpix/uarand" "net" + "net/http" ) -var HttpTool *tool.Http +type Http struct { + Client *http.Client + Header http.Header +} -var httpTools map[net.Addr]*tool.Http +var HttpPack *Http + +var httpTools map[net.Addr]*Http func init() { if global.Config.Settings.Basic.Interfaces == "" { - HttpTool = genHttpTool(nil) + HttpPack = genHttpPack(nil) } else { - httpTools = make(map[net.Addr]*tool.Http, 0) + httpTools = make(map[net.Addr]*Http, 0) } } -func HttpTools(addr net.Addr) *tool.Http { - if HttpTool != nil { - return HttpTool +func HttpPackSelect(addr net.Addr) *Http { + if HttpPack != nil { + return HttpPack } if addrHttp, ok := httpTools[addr]; ok { return addrHttp } else { - httpTools[addr] = genHttpTool(addr) + addrHttp = genHttpPack(addr) + httpTools[addr] = addrHttp return addrHttp } } -func genHttpTool(addr net.Addr) *tool.Http { - return tool.NewHttpTool(tool.GenHttpClient(&tool.HttpClientOptions{ - Transport: tool.GenHttpTransport(&tool.HttpTransportOptions{ - Timeout: global.Timeout, - LocalAddr: addr, - SkipSslCertVerify: global.Config.Settings.Basic.SkipCertVerify, +func genHttpPack(addr net.Addr) *Http { + var header = make(http.Header, 2) + header.Add("User-Agent", uarand.GetRandom()) + header.Set("X-Requested-With", "XMLHttpRequest") + + return &Http{ + Client: tool.GenHttpClient(&tool.HttpClientOptions{ + Transport: tool.GenHttpTransport(&tool.HttpTransportOptions{ + Timeout: global.Timeout, + LocalAddr: addr, + SkipSslCertVerify: global.Config.Settings.Basic.SkipCertVerify, + }), + Timeout: global.Timeout, }), - Timeout: global.Timeout, - })) + Header: header, + } } diff --git a/v1/models.go b/v1/models.go index a2a1f3f..5fd6d06 100644 --- a/v1/models.go +++ b/v1/models.go @@ -31,10 +31,11 @@ type Conf struct { //登录参数,不可缺省 LoginInfo LoginInfo Client *http.Client + Header http.Header api srun.Api } func (a *Conf) initApi() { - a.api.Init(a.Https, a.LoginInfo.Form.Domain, a.Client) + a.api.Init(a.Https, a.LoginInfo.Form.Domain, a.Client, a.Header) } diff --git a/v1/srun/steps.go b/v1/srun/steps.go index e779143..686718e 100644 --- a/v1/srun/steps.go +++ b/v1/srun/steps.go @@ -18,7 +18,7 @@ type Api struct { Header http.Header } -func (a *Api) Init(https bool, domain string, client *http.Client) { +func (a *Api) Init(https bool, domain string, client *http.Client, header http.Header) { if a.inited { return }