diff --git a/session.go b/session.go index f0c8a37..513d435 100644 --- a/session.go +++ b/session.go @@ -124,15 +124,11 @@ func (ses *Session) SetConfig(typeConfig TypeConfig, values interface{}) { case ConfigCookiejar: v := values.(bool) if v { - if ses.cookiejar == nil { - j, err := cookiejar.New(nil) - if err != nil { - panic(err) - } - ses.cookiejar = j + if ses.client.Jar == nil { + ses.client.Jar = ses.cookiejar } } else { - ses.cookiejar = nil + ses.client.Jar = nil } case ConfigProxy: switch v := values.(type) { @@ -190,6 +186,7 @@ func (ses *Session) SetCookies(u *url.URL, cookies []*http.Cookie) { // Cookies 返回 Cookies func (ses *Session) Cookies(u *url.URL) []*http.Cookie { + return ses.cookiejar.Cookies(u) } @@ -204,6 +201,16 @@ func (ses *Session) DelCookies(u *url.URL, name string) { ses.SetCookies(u, cookies) } +// ClearCookies 清楚所有cookiejar上的cookies +func (ses *Session) ClearCookies() { + cjar, err := cookiejar.New(&cookiejar.Options{PublicSuffixList: publicsuffix.List}) + if err != nil { + panic(err) + } + ses.cookiejar = cjar + ses.client.Jar = ses.cookiejar +} + // Get 请求 func (ses *Session) Get(url string) *Workflow { wf := NewWorkflow(ses) diff --git a/session_test.go b/session_test.go index 8a59bce..1e35f8f 100644 --- a/session_test.go +++ b/session_test.go @@ -340,37 +340,43 @@ func TestSession_SetConfigInsecure(t *testing.T) { func TestSession_Cookies(t *testing.T) { ses := NewSession() - resp, err := ses.Get("http://httpbin.org/cookies/set").AddKVCookie("a", "1").Execute() - if err != nil { - t.Error("cookies set error", err) - } + t.Run("set cookie", func(t *testing.T) { - if !regexp.MustCompile(`"a": "1"`).MatchString(resp.DContent) { - t.Error(resp.DContent) - } + resp, err := ses.Get("http://httpbin.org/cookies/set").AddKVCookie("a", "1").Execute() + if err != nil { + t.Error("cookies set error", err) + } + if !regexp.MustCompile(`"a": "1"`).MatchString(resp.DContent) { + t.Error(resp.DContent) + } + }) } func TestSession_Header(t *testing.T) { chromeua := "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36" ses := NewSession() - ses.Header.Add(HeaderKeyUA, chromeua) - resp, err := ses.Get("https://www.baidu.com").Execute() - if err != nil { - t.Error("cookies set error", err) - } - if len(resp.DContent) <= 5000 { - t.Error(resp.DContent, len(resp.DContent)) - } + t.Run("ua header test", func(t *testing.T) { - ses = NewSession() - resp, err = ses.Get("https://www.baidu.com").AddHeader(HeaderKeyUA, chromeua).Execute() - if err != nil { - t.Error("cookies set error", err) - } + ses.Header.Add(HeaderKeyUA, chromeua) + resp, err := ses.Get("https://www.baidu.com").Execute() + if err != nil { + t.Error("cookies set error", err) + } - if len(resp.DContent) <= 5000 { - t.Error(resp.DContent, len(resp.DContent)) - } + if len(resp.DContent) <= 5000 { + t.Error(resp.DContent, len(resp.DContent)) + } + + ses = NewSession() + resp, err = ses.Get("https://www.baidu.com").AddHeader(HeaderKeyUA, chromeua).Execute() + if err != nil { + t.Error("cookies set error", err) + } + + if len(resp.DContent) <= 5000 { + t.Error(resp.DContent, len(resp.DContent)) + } + }) }