mirror of
https://github.com/gospider007/requests.git
synced 2025-12-24 13:57:52 +08:00
sync
This commit is contained in:
10
go.mod
10
go.mod
@@ -6,11 +6,11 @@ require (
|
||||
github.com/gospider007/bar v0.0.0-20241205091858-06f3c7e16dd9
|
||||
github.com/gospider007/bs4 v0.0.0-20241216122612-aa3f29179e6f
|
||||
github.com/gospider007/gson v0.0.0-20241216122450-fb66d0ba2a07
|
||||
github.com/gospider007/gtls v0.0.0-20250102091721-c5d429cea809
|
||||
github.com/gospider007/http2 v0.0.0-20241222151842-034aa1d46e9d
|
||||
github.com/gospider007/http3 v0.0.0-20250102093206-281d03368c89
|
||||
github.com/gospider007/gtls v0.0.0-20250107100054-2a14fa6fc9c5
|
||||
github.com/gospider007/http2 v0.0.0-20250107095809-0f8c60040d4a
|
||||
github.com/gospider007/http3 v0.0.0-20250107095941-a36b210aca37
|
||||
github.com/gospider007/ja3 v0.0.0-20250107091445-e294e50de314
|
||||
github.com/gospider007/proxy v0.0.0-20250103020907-1a1fa54066e4
|
||||
github.com/gospider007/proxy v0.0.0-20250108001210-7c1a3d5eabb6
|
||||
github.com/gospider007/re v0.0.0-20241216142712-efbef8d55ea2
|
||||
github.com/gospider007/tools v0.0.0-20250107090942-5b406ab8a72b
|
||||
github.com/gospider007/websocket v0.0.0-20250107091829-c78035a103b2
|
||||
@@ -66,7 +66,7 @@ require (
|
||||
github.com/tidwall/sjson v1.2.5 // indirect
|
||||
github.com/ulikunitz/xz v0.5.12 // indirect
|
||||
github.com/zeebo/blake3 v0.2.4 // indirect
|
||||
go.mongodb.org/mongo-driver v1.17.1 // indirect
|
||||
go.mongodb.org/mongo-driver v1.17.2 // indirect
|
||||
go.uber.org/mock v0.5.0 // indirect
|
||||
go.uber.org/multierr v1.11.0 // indirect
|
||||
go.uber.org/zap v1.27.0 // indirect
|
||||
|
||||
20
go.sum
20
go.sum
@@ -104,20 +104,20 @@ github.com/gospider007/bs4 v0.0.0-20241216122612-aa3f29179e6f h1:/pbT94pif600rZw
|
||||
github.com/gospider007/bs4 v0.0.0-20241216122612-aa3f29179e6f/go.mod h1:M3XPdOCrwkB1UJiaF506o8KCDpRKnkzZBQ5PWitVc90=
|
||||
github.com/gospider007/gson v0.0.0-20241216122450-fb66d0ba2a07 h1:cqsuxxIKxbRG/xRPNwgFUfvGKc992snPjn5WlXkCtnA=
|
||||
github.com/gospider007/gson v0.0.0-20241216122450-fb66d0ba2a07/go.mod h1:XcFiXq3t2+b1x9zezQV/FbuB5Y1rdUrtvpJRbxZXef4=
|
||||
github.com/gospider007/gtls v0.0.0-20250102091721-c5d429cea809 h1:77XBmuHNxogRA6hXEf9mNczj1t88El0/qLUPqaYAyZ4=
|
||||
github.com/gospider007/gtls v0.0.0-20250102091721-c5d429cea809/go.mod h1:QDqmcdji96nHRCfyMpZK3TX2s3O3BX3GcjJC2uqttSY=
|
||||
github.com/gospider007/http2 v0.0.0-20241222151842-034aa1d46e9d h1:HJv2HOsvZ+7yf+6cxqGL/DWPQx//6hyLOmoECsh0OBk=
|
||||
github.com/gospider007/http2 v0.0.0-20241222151842-034aa1d46e9d/go.mod h1:b8VbmpEUTyGR8B8h4MGY2E/5klXqs/WziEgTZx5kU3I=
|
||||
github.com/gospider007/http3 v0.0.0-20250102093206-281d03368c89 h1:385FtT3O5xBn8jd5a817beXoMUuvpzAbFDIQkcq/p+w=
|
||||
github.com/gospider007/http3 v0.0.0-20250102093206-281d03368c89/go.mod h1:SxK+7jYxg+eqFL5I5jQsKpagfR1u1YySI0LTCcagCbo=
|
||||
github.com/gospider007/gtls v0.0.0-20250107100054-2a14fa6fc9c5 h1:c0payCC+agt1c+SK66VYXcs8eFktGlxWhK+t6V/6PPc=
|
||||
github.com/gospider007/gtls v0.0.0-20250107100054-2a14fa6fc9c5/go.mod h1:qIlB6X0WLv9QVqo/LLqkml0JDKSjeL3x4tI1QCINU94=
|
||||
github.com/gospider007/http2 v0.0.0-20250107095809-0f8c60040d4a h1:Gx/aemk7BFyjguVXWS9oxNHjhmcz67gtGNbNyVaahOE=
|
||||
github.com/gospider007/http2 v0.0.0-20250107095809-0f8c60040d4a/go.mod h1:3uzGktvy4KnYZm+DwWNui4RsvPUQSSphJ1VTtfO1tE0=
|
||||
github.com/gospider007/http3 v0.0.0-20250107095941-a36b210aca37 h1:i9WhiyjKwaU2imUof0i95WhcGCx8HHTTCnkHzEIlWq8=
|
||||
github.com/gospider007/http3 v0.0.0-20250107095941-a36b210aca37/go.mod h1:6zmeD45uQFfHLWTsgAUP4FXgdj6MUTGyQar091dTDtw=
|
||||
github.com/gospider007/ja3 v0.0.0-20250107091445-e294e50de314 h1:HAdIVngGI5Hj7tSF5nV0YCze+G24ck+9qGf5H/VT4hw=
|
||||
github.com/gospider007/ja3 v0.0.0-20250107091445-e294e50de314/go.mod h1:LyhufzO6wrBlxeilbUJElfEdDNdD+1v9fB5p30pDAjE=
|
||||
github.com/gospider007/kinds v0.0.0-20240929092451-8f867acde255 h1:X+AM/mgmh/EfyQUjKZp1VFc9TSlrhkwS0eSYeo5fMs4=
|
||||
github.com/gospider007/kinds v0.0.0-20240929092451-8f867acde255/go.mod h1:yZx7Zfp1I4P6CO3TcDyDY5SuXQYr0bZjzT9zG0XrJAI=
|
||||
github.com/gospider007/net v0.0.0-20241216130419-175071962ced h1:vQfZkebsHLjxDk9Wg3neaIsgtyARNmkgrHsh+WroAVY=
|
||||
github.com/gospider007/net v0.0.0-20241216130419-175071962ced/go.mod h1:GrNK3zEmo7N9nuAcOOu4GFw+kvfkYaOMiRSOm38CH7o=
|
||||
github.com/gospider007/proxy v0.0.0-20250103020907-1a1fa54066e4 h1:wawLXebVhD2694M7fsw1B70Ocnm5TOuTr9una1mJkIk=
|
||||
github.com/gospider007/proxy v0.0.0-20250103020907-1a1fa54066e4/go.mod h1:xn8FKZw+YH6rd+aOZiE3PRPKFzW+bdCMKzIcG8L1C78=
|
||||
github.com/gospider007/proxy v0.0.0-20250108001210-7c1a3d5eabb6 h1:FYD97bdMjSoKuhnRy/m1jPmbtgh0Mvk/9SyrH6VDQOU=
|
||||
github.com/gospider007/proxy v0.0.0-20250108001210-7c1a3d5eabb6/go.mod h1:058+64s2TFP/IoAjsLMpjNa8tduvhDfUP68W6xH82XU=
|
||||
github.com/gospider007/re v0.0.0-20241216142712-efbef8d55ea2 h1:ixXFS1DqP0NnHna+b0JKaPqMRYRmahzUADZn7PawQq0=
|
||||
github.com/gospider007/re v0.0.0-20241216142712-efbef8d55ea2/go.mod h1:kr9bUaC42FS019Ak23fSctbTRB2JpfPPg/pSVjQmsws=
|
||||
github.com/gospider007/tools v0.0.0-20250107090942-5b406ab8a72b h1:iiAxiufROgDsuQInI6dAx1CG3m7nMMj3C0SAE84oY7g=
|
||||
@@ -221,8 +221,8 @@ github.com/zeebo/blake3 v0.2.4 h1:KYQPkhpRtcqh0ssGYcKLG1JYvddkEA8QwCM/yBqhaZI=
|
||||
github.com/zeebo/blake3 v0.2.4/go.mod h1:7eeQ6d2iXWRGF6npfaxl2CU+xy2Fjo2gxeyZGCRUjcE=
|
||||
github.com/zeebo/pcg v1.0.1 h1:lyqfGeWiv4ahac6ttHs+I5hwtH/+1mrhlCtVNQM2kHo=
|
||||
github.com/zeebo/pcg v1.0.1/go.mod h1:09F0S9iiKrwn9rlI5yjLkmrug154/YRW6KnnXVDM/l4=
|
||||
go.mongodb.org/mongo-driver v1.17.1 h1:Wic5cJIwJgSpBhe3lx3+/RybR5PiYRMpVFgO7cOHyIM=
|
||||
go.mongodb.org/mongo-driver v1.17.1/go.mod h1:wwWm/+BuOddhcq3n68LKRmgk2wXzmF6s0SFOa0GINL4=
|
||||
go.mongodb.org/mongo-driver v1.17.2 h1:gvZyk8352qSfzyZ2UMWcpDpMSGEr1eqE4T793SqyhzM=
|
||||
go.mongodb.org/mongo-driver v1.17.2/go.mod h1:Hy04i7O2kC4RS06ZrhPRqj/u4DTYkFDAAccj+rVKqgQ=
|
||||
go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU=
|
||||
go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8=
|
||||
go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
|
||||
|
||||
148
option.go
148
option.go
@@ -11,6 +11,8 @@ import (
|
||||
"github.com/gospider007/ja3"
|
||||
"github.com/gospider007/tools"
|
||||
"github.com/gospider007/websocket"
|
||||
"github.com/quic-go/quic-go"
|
||||
uquic "github.com/refraction-networking/uquic"
|
||||
utls "github.com/refraction-networking/utls"
|
||||
)
|
||||
|
||||
@@ -76,6 +78,9 @@ type ClientOption struct {
|
||||
Jar Jar //custom cookies
|
||||
TlsConfig *tls.Config
|
||||
UtlsConfig *utls.Config
|
||||
|
||||
QuicConfig *quic.Config
|
||||
UquicConfig *uquic.Config
|
||||
}
|
||||
|
||||
// Options for sending requests
|
||||
@@ -238,146 +243,3 @@ func (obj *Client) newRequestOption(option RequestOption) (RequestOption, error)
|
||||
}
|
||||
return option, err
|
||||
}
|
||||
|
||||
// func (obj *Client) newRequestOption(option RequestOption) RequestOption {
|
||||
// // start
|
||||
// if !option.Ja3Spec.IsSet() {
|
||||
// option.Ja3Spec = obj.option.Ja3Spec
|
||||
// }
|
||||
// if !option.Ja3 {
|
||||
// option.Ja3 = obj.option.Ja3
|
||||
// }
|
||||
// if !option.UJa3Spec.IsSet() {
|
||||
// option.UJa3Spec = obj.option.UJa3Spec
|
||||
// }
|
||||
|
||||
// if !option.H2Ja3Spec.IsSet() {
|
||||
// option.H2Ja3Spec = obj.option.H2Ja3Spec
|
||||
// }
|
||||
// if option.Proxy == "" {
|
||||
// option.Proxy = obj.option.Proxy
|
||||
// }
|
||||
// if len(option.Proxys) == 0 {
|
||||
// option.Proxys = obj.option.Proxys
|
||||
// }
|
||||
// if !option.ForceHttp1 {
|
||||
// option.ForceHttp1 = obj.option.ForceHttp1
|
||||
// }
|
||||
// if !option.DisCookie {
|
||||
// option.DisCookie = obj.option.DisCookie
|
||||
// }
|
||||
// if !option.DisDecode {
|
||||
// option.DisDecode = obj.option.DisDecode
|
||||
// }
|
||||
// if !option.DisUnZip {
|
||||
// option.DisUnZip = obj.option.DisUnZip
|
||||
// }
|
||||
// if !option.Bar {
|
||||
// option.Bar = obj.option.Bar
|
||||
// }
|
||||
// if !option.H3 {
|
||||
// option.H3 = obj.option.H3
|
||||
// }
|
||||
// if option.Logger == nil {
|
||||
// option.Logger = obj.option.Logger
|
||||
// }
|
||||
// if option.Headers == nil {
|
||||
// option.Headers = obj.option.Headers
|
||||
// }
|
||||
// if option.Timeout == 0 {
|
||||
// option.Timeout = obj.option.Timeout
|
||||
// }
|
||||
// if option.ResponseHeaderTimeout == 0 {
|
||||
// option.ResponseHeaderTimeout = obj.option.ResponseHeaderTimeout
|
||||
// }
|
||||
// if option.TlsHandshakeTimeout == 0 {
|
||||
// option.TlsHandshakeTimeout = obj.option.TlsHandshakeTimeout
|
||||
// }
|
||||
// if option.TlsConfig == nil {
|
||||
// option.TlsConfig = obj.option.TlsConfig
|
||||
// }
|
||||
// if option.UtlsConfig == nil {
|
||||
// option.UtlsConfig = obj.option.UtlsConfig
|
||||
// }
|
||||
// if option.OrderHeaders == nil {
|
||||
// option.OrderHeaders = obj.option.OrderHeaders
|
||||
// }
|
||||
// if option.OptionCallBack == nil {
|
||||
// option.OptionCallBack = obj.option.OptionCallBack
|
||||
// }
|
||||
// if option.ResultCallBack == nil {
|
||||
// option.ResultCallBack = obj.option.ResultCallBack
|
||||
// }
|
||||
// if option.ErrCallBack == nil {
|
||||
// option.ErrCallBack = obj.option.ErrCallBack
|
||||
// }
|
||||
// if option.RequestCallBack == nil {
|
||||
// option.RequestCallBack = obj.option.RequestCallBack
|
||||
// }
|
||||
// if option.MaxRetries == 0 {
|
||||
// option.MaxRetries = obj.option.MaxRetries
|
||||
// }
|
||||
// if option.MaxRedirect == 0 {
|
||||
// option.MaxRedirect = obj.option.MaxRedirect
|
||||
// }
|
||||
// if option.Headers == nil {
|
||||
// option.Headers = obj.option.Headers
|
||||
// }
|
||||
// if option.Timeout == 0 {
|
||||
// option.Timeout = obj.option.Timeout
|
||||
// }
|
||||
// if option.ResponseHeaderTimeout == 0 {
|
||||
// option.ResponseHeaderTimeout = obj.option.ResponseHeaderTimeout
|
||||
// }
|
||||
// if option.TlsHandshakeTimeout == 0 {
|
||||
// option.TlsHandshakeTimeout = obj.option.TlsHandshakeTimeout
|
||||
// }
|
||||
// if option.DialOption.DialTimeout == 0 {
|
||||
// option.DialOption.DialTimeout = obj.option.DialOption.DialTimeout
|
||||
// }
|
||||
// if option.DialOption.KeepAlive == 0 {
|
||||
// option.DialOption.KeepAlive = obj.option.DialOption.KeepAlive
|
||||
// }
|
||||
// if option.DialOption.LocalAddr == nil {
|
||||
// option.DialOption.LocalAddr = obj.option.DialOption.LocalAddr
|
||||
// }
|
||||
// if option.DialOption.AddrType == 0 {
|
||||
// option.DialOption.AddrType = obj.option.DialOption.AddrType
|
||||
// }
|
||||
// if option.DialOption.Dns == nil {
|
||||
// option.DialOption.Dns = obj.option.DialOption.Dns
|
||||
// }
|
||||
// if option.DialOption.GetAddrType == nil {
|
||||
// option.DialOption.GetAddrType = obj.option.DialOption.GetAddrType
|
||||
// }
|
||||
// if option.Jar == nil {
|
||||
// option.Jar = obj.option.Jar
|
||||
// }
|
||||
// //end
|
||||
// if option.MaxRetries < 0 {
|
||||
// option.MaxRetries = 0
|
||||
// }
|
||||
// if !option.Ja3Spec.IsSet() && option.Ja3 {
|
||||
// option.Ja3Spec = ja3.DefaultJa3Spec()
|
||||
// }
|
||||
// if !option.UJa3Spec.IsSet() && option.Ja3 {
|
||||
// option.UJa3Spec = ja3.DefaultUJa3Spec()
|
||||
// }
|
||||
// if option.UserAgent == "" {
|
||||
// option.UserAgent = obj.option.UserAgent
|
||||
// }
|
||||
// if option.DisCookie {
|
||||
// option.Jar = nil
|
||||
// }
|
||||
// if option.DisProxy {
|
||||
// option.Proxy = ""
|
||||
// }
|
||||
// if option.GetProxy == nil {
|
||||
// option.GetProxy = obj.option.GetProxy
|
||||
// }
|
||||
// if option.GetProxys == nil {
|
||||
// option.GetProxys = obj.option.GetProxys
|
||||
// }
|
||||
|
||||
// return option
|
||||
// }
|
||||
|
||||
@@ -117,7 +117,11 @@ func (obj *roundTripper) ghttp3Dial(ctx context.Context, option *RequestOption,
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
netConn, err := quic.DialEarly(ctx, udpConn, &net.UDPAddr{IP: remoteAddress.IP, Port: remoteAddress.Port}, tlsConfig, nil)
|
||||
var quicConfig *quic.Config
|
||||
if option.UquicConfig != nil {
|
||||
quicConfig = option.QuicConfig.Clone()
|
||||
}
|
||||
netConn, err := quic.DialEarly(ctx, udpConn, &net.UDPAddr{IP: remoteAddress.IP, Port: remoteAddress.Port}, tlsConfig, quicConfig)
|
||||
conn = obj.newConnecotr()
|
||||
conn.Conn = http3.NewClient(netConn, func() {
|
||||
conn.forceCnl(errors.New("http3 client close"))
|
||||
@@ -143,12 +147,16 @@ func (obj *roundTripper) uhttp3Dial(ctx context.Context, option *RequestOption,
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
var quicConfig *uquic.Config
|
||||
if option.UquicConfig != nil {
|
||||
quicConfig = option.UquicConfig.Clone()
|
||||
}
|
||||
netConn, err := (&uquic.UTransport{
|
||||
Transport: &uquic.Transport{
|
||||
Conn: udpConn,
|
||||
},
|
||||
QUICSpec: &spec,
|
||||
}).DialEarly(ctx, &net.UDPAddr{IP: remoteAddress.IP, Port: remoteAddress.Port}, tlsConfig, nil)
|
||||
}).DialEarly(ctx, &net.UDPAddr{IP: remoteAddress.IP, Port: remoteAddress.Port}, tlsConfig, quicConfig)
|
||||
conn = obj.newConnecotr()
|
||||
conn.Conn = http3.NewUClient(netConn, func() {
|
||||
conn.forceCnl(errors.New("http3 client close"))
|
||||
|
||||
Reference in New Issue
Block a user