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:
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)

View File

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