add ClearCookies method!

This commit is contained in:
huangsimin 2018-10-25 16:12:43 +08:00
parent 21a167304b
commit 025f911c0e
2 changed files with 43 additions and 30 deletions

View File

@ -124,15 +124,11 @@ func (ses *Session) SetConfig(typeConfig TypeConfig, values interface{}) {
case ConfigCookiejar: case ConfigCookiejar:
v := values.(bool) v := values.(bool)
if v { if v {
if ses.cookiejar == nil { if ses.client.Jar == nil {
j, err := cookiejar.New(nil) ses.client.Jar = ses.cookiejar
if err != nil {
panic(err)
}
ses.cookiejar = j
} }
} else { } else {
ses.cookiejar = nil ses.client.Jar = nil
} }
case ConfigProxy: case ConfigProxy:
switch v := values.(type) { switch v := values.(type) {
@ -190,6 +186,7 @@ func (ses *Session) SetCookies(u *url.URL, cookies []*http.Cookie) {
// Cookies 返回 Cookies // Cookies 返回 Cookies
func (ses *Session) Cookies(u *url.URL) []*http.Cookie { func (ses *Session) Cookies(u *url.URL) []*http.Cookie {
return ses.cookiejar.Cookies(u) return ses.cookiejar.Cookies(u)
} }
@ -204,6 +201,16 @@ func (ses *Session) DelCookies(u *url.URL, name string) {
ses.SetCookies(u, cookies) 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 请求 // Get 请求
func (ses *Session) Get(url string) *Workflow { func (ses *Session) Get(url string) *Workflow {
wf := NewWorkflow(ses) wf := NewWorkflow(ses)

View File

@ -340,37 +340,43 @@ func TestSession_SetConfigInsecure(t *testing.T) {
func TestSession_Cookies(t *testing.T) { func TestSession_Cookies(t *testing.T) {
ses := NewSession() ses := NewSession()
resp, err := ses.Get("http://httpbin.org/cookies/set").AddKVCookie("a", "1").Execute() t.Run("set cookie", func(t *testing.T) {
if err != nil {
t.Error("cookies set error", err)
}
if !regexp.MustCompile(`"a": "1"`).MatchString(resp.DContent) { resp, err := ses.Get("http://httpbin.org/cookies/set").AddKVCookie("a", "1").Execute()
t.Error(resp.DContent) 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) { 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" 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 := 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.Run("ua header test", func(t *testing.T) {
t.Error(resp.DContent, len(resp.DContent))
}
ses = NewSession() ses.Header.Add(HeaderKeyUA, chromeua)
resp, err = ses.Get("https://www.baidu.com").AddHeader(HeaderKeyUA, chromeua).Execute() resp, err := ses.Get("https://www.baidu.com").Execute()
if err != nil { if err != nil {
t.Error("cookies set error", err) t.Error("cookies set error", err)
} }
if len(resp.DContent) <= 5000 { if len(resp.DContent) <= 5000 {
t.Error(resp.DContent, len(resp.DContent)) 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))
}
})
} }