mirror of
https://github.com/gospider007/requests.git
synced 2025-12-24 13:57:52 +08:00
sync
This commit is contained in:
20
cookies.go
20
cookies.go
@@ -91,26 +91,6 @@ func ReadCookies(val any) (Cookies, error) {
|
|||||||
return any2Cookies(cook)
|
return any2Cookies(cook)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// read set cookies or parse set cookies,support json,map,[]string,http.Header,string
|
|
||||||
//
|
|
||||||
// func ReadSetCookies(val any) (Cookies, error) {
|
|
||||||
// switch cook := val.(type) {
|
|
||||||
// case Cookies:
|
|
||||||
// return cook, nil
|
|
||||||
// case []*http.Cookie:
|
|
||||||
// return Cookies(cook), nil
|
|
||||||
// case string:
|
|
||||||
// http.ParseCookie()
|
|
||||||
// return http.ParseSetCookie(cook)
|
|
||||||
// case http.Header:
|
|
||||||
// return readSetCookies(cook), nil
|
|
||||||
// case []string:
|
|
||||||
// return readSetCookies(http.Header{"Set-Cookie": cook}), nil
|
|
||||||
// default:
|
|
||||||
// return any2Cookies(cook)
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
func any2Cookies(val any) (Cookies, error) {
|
func any2Cookies(val any) (Cookies, error) {
|
||||||
switch cooks := val.(type) {
|
switch cooks := val.(type) {
|
||||||
case map[string]string:
|
case map[string]string:
|
||||||
|
|||||||
39
jar.go
39
jar.go
@@ -8,15 +8,21 @@ import (
|
|||||||
"golang.org/x/net/publicsuffix"
|
"golang.org/x/net/publicsuffix"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
type Jar interface { // size=8
|
||||||
|
ClearCookies()
|
||||||
|
GetCookies(u *url.URL) Cookies
|
||||||
|
SetCookies(*url.URL, Cookies)
|
||||||
|
}
|
||||||
|
|
||||||
// cookies jar
|
// cookies jar
|
||||||
type Jar struct {
|
type jar struct {
|
||||||
jar *cookiejar.Jar
|
jar *cookiejar.Jar
|
||||||
}
|
}
|
||||||
|
|
||||||
// new cookies jar
|
// new cookies jar
|
||||||
func NewJar() *Jar {
|
func NewJar() *jar {
|
||||||
j, _ := cookiejar.New(nil)
|
j, _ := cookiejar.New(nil)
|
||||||
return &Jar{
|
return &jar{
|
||||||
jar: j,
|
jar: j,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -34,7 +40,12 @@ func (obj *Client) SetCookies(href *url.URL, cookies ...any) error {
|
|||||||
if obj.option.Jar == nil {
|
if obj.option.Jar == nil {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
return obj.option.Jar.SetCookies(href, cookies...)
|
cooks, err := any2cookies(href, cookies...)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
obj.option.Jar.SetCookies(href, cooks)
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// clear cookies
|
// clear cookies
|
||||||
@@ -46,7 +57,7 @@ func (obj *Client) ClearCookies() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Get cookies
|
// Get cookies
|
||||||
func (obj *Jar) GetCookies(u *url.URL) Cookies {
|
func (obj *jar) GetCookies(u *url.URL) Cookies {
|
||||||
return obj.jar.Cookies(u)
|
return obj.jar.Cookies(u)
|
||||||
}
|
}
|
||||||
func getDomain(u *url.URL) string {
|
func getDomain(u *url.URL) string {
|
||||||
@@ -58,14 +69,13 @@ func getDomain(u *url.URL) string {
|
|||||||
}
|
}
|
||||||
return domain
|
return domain
|
||||||
}
|
}
|
||||||
|
func any2cookies(u *url.URL, cookies ...any) (Cookies, error) {
|
||||||
// Set cookies
|
|
||||||
func (obj *Jar) SetCookies(u *url.URL, cookies ...any) error {
|
|
||||||
domain := getDomain(u)
|
domain := getDomain(u)
|
||||||
|
var result Cookies
|
||||||
for _, cookie := range cookies {
|
for _, cookie := range cookies {
|
||||||
cooks, err := ReadCookies(cookie)
|
cooks, err := ReadCookies(cookie)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return cooks, err
|
||||||
}
|
}
|
||||||
for _, cook := range cooks {
|
for _, cook := range cooks {
|
||||||
if cook.Path == "" {
|
if cook.Path == "" {
|
||||||
@@ -75,13 +85,18 @@ func (obj *Jar) SetCookies(u *url.URL, cookies ...any) error {
|
|||||||
cook.Domain = domain
|
cook.Domain = domain
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
obj.jar.SetCookies(u, cooks)
|
result = append(result, cooks...)
|
||||||
}
|
}
|
||||||
return nil
|
return result, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// Set cookies
|
||||||
|
func (obj *jar) SetCookies(u *url.URL, cookies Cookies) {
|
||||||
|
obj.jar.SetCookies(u, cookies)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Clear cookies
|
// Clear cookies
|
||||||
func (obj *Jar) ClearCookies() {
|
func (obj *jar) ClearCookies() {
|
||||||
jar, _ := cookiejar.New(nil)
|
jar, _ := cookiejar.New(nil)
|
||||||
obj.jar = jar
|
obj.jar = jar
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -76,11 +76,12 @@ type ClientOption struct {
|
|||||||
LocalAddr *net.TCPAddr
|
LocalAddr *net.TCPAddr
|
||||||
Dns *net.UDPAddr //dns
|
Dns *net.UDPAddr //dns
|
||||||
AddrType gtls.AddrType //dns parse addr type
|
AddrType gtls.AddrType //dns parse addr type
|
||||||
Jar *Jar //custom cookies
|
Jar Jar //custom cookies
|
||||||
TlsConfig *tls.Config
|
TlsConfig *tls.Config
|
||||||
UtlsConfig *utls.Config
|
UtlsConfig *utls.Config
|
||||||
|
|
||||||
//other option
|
//other option
|
||||||
|
UserAgent string //headers User-Agent value
|
||||||
GetProxy func(ctx context.Context, url *url.URL) (string, error) //proxy callback:support https,http,socks5 proxy
|
GetProxy func(ctx context.Context, url *url.URL) (string, error) //proxy callback:support https,http,socks5 proxy
|
||||||
GetAddrType func(host string) gtls.AddrType
|
GetAddrType func(host string) gtls.AddrType
|
||||||
}
|
}
|
||||||
@@ -118,7 +119,7 @@ type RequestOption struct {
|
|||||||
LocalAddr *net.TCPAddr
|
LocalAddr *net.TCPAddr
|
||||||
Dns *net.UDPAddr //dns
|
Dns *net.UDPAddr //dns
|
||||||
AddrType gtls.AddrType //dns parse addr type //tls timeout,default:15
|
AddrType gtls.AddrType //dns parse addr type //tls timeout,default:15
|
||||||
Jar *Jar //custom cookies
|
Jar Jar //custom cookies
|
||||||
TlsConfig *tls.Config
|
TlsConfig *tls.Config
|
||||||
UtlsConfig *utls.Config
|
UtlsConfig *utls.Config
|
||||||
|
|
||||||
@@ -128,6 +129,7 @@ type RequestOption struct {
|
|||||||
Host string
|
Host string
|
||||||
Referer string //set headers referer value
|
Referer string //set headers referer value
|
||||||
ContentType string //headers Content-Type value
|
ContentType string //headers Content-Type value
|
||||||
|
UserAgent string //headers User-Agent value
|
||||||
Cookies any // cookies,support :json,map,str,http.Header
|
Cookies any // cookies,support :json,map,str,http.Header
|
||||||
|
|
||||||
Params any //url params,join url query,json,map
|
Params any //url params,join url query,json,map
|
||||||
|
|||||||
Reference in New Issue
Block a user