mirror of
https://github.com/gospider007/requests.git
synced 2025-12-24 13:57:52 +08:00
sync
This commit is contained in:
20
dial.go
20
dial.go
@@ -133,10 +133,18 @@ func (obj *Dialer) dialContext(ctx *Response, network string, addr Address, isPr
|
||||
return con, err
|
||||
}
|
||||
func (obj *Dialer) DialContext(ctx *Response, network string, addr Address) (net.Conn, error) {
|
||||
return obj.dialContext(ctx, network, addr, false)
|
||||
conn, err := obj.dialContext(ctx, network, addr, false)
|
||||
if err != nil {
|
||||
err = tools.WrapError(err, "DialContext error")
|
||||
}
|
||||
return conn, err
|
||||
}
|
||||
func (obj *Dialer) ProxyDialContext(ctx *Response, network string, addr Address) (net.Conn, error) {
|
||||
return obj.dialContext(ctx, network, addr, true)
|
||||
conn, err := obj.dialContext(ctx, network, addr, true)
|
||||
if err != nil {
|
||||
err = tools.WrapError(err, "ProxyDialContext error")
|
||||
}
|
||||
return conn, err
|
||||
}
|
||||
func (obj *Dialer) DialProxyContext(ctx *Response, network string, proxyTlsConfig *tls.Config, proxyUrls ...Address) (net.PacketConn, net.Conn, error) {
|
||||
proxyLen := len(proxyUrls)
|
||||
@@ -150,9 +158,8 @@ func (obj *Dialer) DialProxyContext(ctx *Response, network string, proxyTlsConfi
|
||||
oneProxy := proxyUrls[index]
|
||||
remoteUrl := proxyUrls[index+1]
|
||||
if index == 0 {
|
||||
conn, err = obj.dialProxyContext(ctx, network, oneProxy)
|
||||
if err != nil {
|
||||
return packCon, conn, err
|
||||
if conn, err = obj.dialProxyContext(ctx, network, oneProxy); err != nil {
|
||||
break
|
||||
}
|
||||
}
|
||||
packCon, conn, err = obj.verifyProxyToRemote(ctx, conn, proxyTlsConfig, oneProxy, remoteUrl, index == proxyLen-2, true)
|
||||
@@ -212,6 +219,9 @@ func (obj *Dialer) verifyProxyToRemote(ctx *Response, conn net.Conn, proxyTlsCon
|
||||
case <-ctx.Context().Done():
|
||||
return packCon, conn, context.Cause(ctx.Context())
|
||||
case <-done:
|
||||
if err != nil {
|
||||
err = tools.WrapError(err, "verifyProxyToRemote error")
|
||||
}
|
||||
return packCon, conn, err
|
||||
}
|
||||
}
|
||||
|
||||
12
go.mod
12
go.mod
@@ -7,12 +7,12 @@ require (
|
||||
github.com/gospider007/bs4 v0.0.0-20250221153846-5f06efc2ebf1
|
||||
github.com/gospider007/gson v0.0.0-20250221154009-98d1695297de
|
||||
github.com/gospider007/gtls v0.0.0-20250217075148-cad34209c0ae
|
||||
github.com/gospider007/http2 v0.0.0-20250221154021-1366bc240764
|
||||
github.com/gospider007/http3 v0.0.0-20250221154026-be54f80e5184
|
||||
github.com/gospider007/http2 v0.0.0-20250226135657-bd12c18bfa85
|
||||
github.com/gospider007/http3 v0.0.0-20250226135718-f7f291b88480
|
||||
github.com/gospider007/ja3 v0.0.0-20250221154036-c583ec1f60a4
|
||||
github.com/gospider007/proxy v0.0.0-20250221154359-9d745b93f9f6
|
||||
github.com/gospider007/re v0.0.0-20250217075352-bcb79f285d6c
|
||||
github.com/gospider007/tools v0.0.0-20250221154605-e0d63fd3e79b
|
||||
github.com/gospider007/tools v0.0.0-20250226135821-5d2fbfa9054d
|
||||
github.com/gospider007/websocket v0.0.0-20250221154625-dbca4eba1fab
|
||||
github.com/quic-go/quic-go v0.50.0
|
||||
github.com/refraction-networking/uquic v0.0.6
|
||||
@@ -46,7 +46,7 @@ require (
|
||||
github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect
|
||||
github.com/json-iterator/go v1.1.12 // indirect
|
||||
github.com/klauspost/compress v1.18.0 // indirect
|
||||
github.com/klauspost/cpuid/v2 v2.2.9 // indirect
|
||||
github.com/klauspost/cpuid/v2 v2.2.10 // indirect
|
||||
github.com/klauspost/pgzip v1.2.6 // indirect
|
||||
github.com/libdns/libdns v0.2.3 // indirect
|
||||
github.com/mholt/acmez/v3 v3.0.1 // indirect
|
||||
@@ -66,13 +66,13 @@ 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.2 // indirect
|
||||
go.mongodb.org/mongo-driver v1.17.3 // 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
|
||||
go.uber.org/zap/exp v0.3.0 // indirect
|
||||
go4.org v0.0.0-20230225012048-214862532bf5 // indirect
|
||||
golang.org/x/crypto v0.34.0 // indirect
|
||||
golang.org/x/crypto v0.35.0 // indirect
|
||||
golang.org/x/exp v0.0.0-20250218142911-aa4b98e5adaa // indirect
|
||||
golang.org/x/image v0.24.0 // indirect
|
||||
golang.org/x/mod v0.23.0 // indirect
|
||||
|
||||
14
go.sum
14
go.sum
@@ -59,6 +59,7 @@ github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9
|
||||
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
|
||||
github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY=
|
||||
github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
|
||||
github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI=
|
||||
github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI=
|
||||
github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8=
|
||||
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
|
||||
@@ -108,8 +109,12 @@ github.com/gospider007/gtls v0.0.0-20250217075148-cad34209c0ae h1:w0FETfH2q/N1B8
|
||||
github.com/gospider007/gtls v0.0.0-20250217075148-cad34209c0ae/go.mod h1:VoExB3KZrF8CwtvNfLWtLG5OcDWElgQ3dsjs/C+6f04=
|
||||
github.com/gospider007/http2 v0.0.0-20250221154021-1366bc240764 h1:MYeVyTA++3l5YeXjEFHfYU3II7ufZSplHIlE6pW31Gc=
|
||||
github.com/gospider007/http2 v0.0.0-20250221154021-1366bc240764/go.mod h1:2+tAfJBMjihghMV0c09jA6kScoRn3hBQxgVM1ntMLqQ=
|
||||
github.com/gospider007/http2 v0.0.0-20250226135657-bd12c18bfa85 h1:8HbRWRJacp7fkL1svCYru3UX7wnyrEw5UkDIoLlhFKQ=
|
||||
github.com/gospider007/http2 v0.0.0-20250226135657-bd12c18bfa85/go.mod h1:2+tAfJBMjihghMV0c09jA6kScoRn3hBQxgVM1ntMLqQ=
|
||||
github.com/gospider007/http3 v0.0.0-20250221154026-be54f80e5184 h1:eoreZ2QcnMOqFoswlNJeJWzfberRLngXn0z+TArhUow=
|
||||
github.com/gospider007/http3 v0.0.0-20250221154026-be54f80e5184/go.mod h1:qxy521ewxMMvL7Vr4e45mSqSZuWzO978WqYGEIrTa5I=
|
||||
github.com/gospider007/http3 v0.0.0-20250226135718-f7f291b88480 h1:nBiIJNsMXonhivkXKU29WBo9hJctR1lcMPLThuwDMcI=
|
||||
github.com/gospider007/http3 v0.0.0-20250226135718-f7f291b88480/go.mod h1:qxy521ewxMMvL7Vr4e45mSqSZuWzO978WqYGEIrTa5I=
|
||||
github.com/gospider007/ja3 v0.0.0-20250221154036-c583ec1f60a4 h1:965mrrn3KPilX8wjNqnFS/6WybVbK9JVoDbeOy7EMVo=
|
||||
github.com/gospider007/ja3 v0.0.0-20250221154036-c583ec1f60a4/go.mod h1:nSdl4OoJTcSQm0UXDkxhID/fBdn5yOby3fyCMrl+Xkk=
|
||||
github.com/gospider007/kinds v0.0.0-20250217075226-10f199f7215d h1:+Fih572EdNmYCK1L82MyWOj9tAwIgZ2JqepmasAclg8=
|
||||
@@ -122,6 +127,8 @@ github.com/gospider007/re v0.0.0-20250217075352-bcb79f285d6c h1:8/Cf+c2680tkWJ+u
|
||||
github.com/gospider007/re v0.0.0-20250217075352-bcb79f285d6c/go.mod h1:dd8aDIUG1vDPP5r+vHBtiUK0Zn6uk3SsWt1ZvmCCHLs=
|
||||
github.com/gospider007/tools v0.0.0-20250221154605-e0d63fd3e79b h1:4Vamrbjg14m49Edhw8etVrowBilbDqv/S0pKnMXOVls=
|
||||
github.com/gospider007/tools v0.0.0-20250221154605-e0d63fd3e79b/go.mod h1:7D9VPN+5ZUvoX0EnI5ksmaOrXfZpF+n2bKR9DlInBAU=
|
||||
github.com/gospider007/tools v0.0.0-20250226135821-5d2fbfa9054d h1:Kbzt9ceuK1OhqFwTehmjrwG38weQ9DRtJQoWsUeL8sQ=
|
||||
github.com/gospider007/tools v0.0.0-20250226135821-5d2fbfa9054d/go.mod h1:7D9VPN+5ZUvoX0EnI5ksmaOrXfZpF+n2bKR9DlInBAU=
|
||||
github.com/gospider007/websocket v0.0.0-20250221154625-dbca4eba1fab h1:Cqxnb3BZwwQUnx5RX4NKZGpmNjdVSWdzfVMt24GhRsc=
|
||||
github.com/gospider007/websocket v0.0.0-20250221154625-dbca4eba1fab/go.mod h1:j3vzSZFDOYqtJrEZ3m3XRCFBFnZrton9CeQgRN81ffs=
|
||||
github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
|
||||
@@ -145,6 +152,8 @@ github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYW
|
||||
github.com/klauspost/cpuid v1.2.0/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek=
|
||||
github.com/klauspost/cpuid/v2 v2.2.9 h1:66ze0taIn2H33fBvCkXuv9BmCwDfafmiIVpKV9kKGuY=
|
||||
github.com/klauspost/cpuid/v2 v2.2.9/go.mod h1:rqkxqrZ1EhYM9G+hXH7YdowN5R5RGN6NK4QwQ3WMXF8=
|
||||
github.com/klauspost/cpuid/v2 v2.2.10 h1:tBs3QSyvjDyFTq3uoc/9xFpCuOsJQFNPiAhYdw2skhE=
|
||||
github.com/klauspost/cpuid/v2 v2.2.10/go.mod h1:hqwkgyIinND0mEev00jJYCxPNVRVXFQeu1XKlok6oO0=
|
||||
github.com/klauspost/pgzip v1.2.6 h1:8RXeL5crjEUFnR2/Sn6GJNWtSQ3Dk8pq4CL3jvdDyjU=
|
||||
github.com/klauspost/pgzip v1.2.6/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs=
|
||||
github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI=
|
||||
@@ -155,6 +164,7 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
|
||||
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
|
||||
github.com/libdns/libdns v0.2.3 h1:ba30K4ObwMGB/QTmqUxf3H4/GmUrCAIkMWejeGl12v8=
|
||||
github.com/libdns/libdns v0.2.3/go.mod h1:4Bj9+5CQiNMVGf87wjX4CY3HQJypUHRuLvlsfsZqLWQ=
|
||||
github.com/mholt/acmez v1.2.0 h1:1hhLxSgY5FvH5HCnGUuwbKY2VQVo8IU7rxXKSnZ7F30=
|
||||
github.com/mholt/acmez/v3 v3.0.1 h1:4PcjKjaySlgXK857aTfDuRbmnM5gb3Ruz3tvoSJAUp8=
|
||||
github.com/mholt/acmez/v3 v3.0.1/go.mod h1:L1wOU06KKvq7tswuMDwKdcHeKpFFgkppZy/y0DFxagQ=
|
||||
github.com/mholt/archives v0.1.0 h1:FacgJyrjiuyomTuNA92X5GyRBRZjE43Y/lrzKIlF35Q=
|
||||
@@ -226,6 +236,8 @@ 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.2 h1:gvZyk8352qSfzyZ2UMWcpDpMSGEr1eqE4T793SqyhzM=
|
||||
go.mongodb.org/mongo-driver v1.17.2/go.mod h1:Hy04i7O2kC4RS06ZrhPRqj/u4DTYkFDAAccj+rVKqgQ=
|
||||
go.mongodb.org/mongo-driver v1.17.3 h1:TQyXhnsWfWtgAhMtOgtYHMTkZIfBTpMTsMnd9ZBeHxQ=
|
||||
go.mongodb.org/mongo-driver v1.17.3/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=
|
||||
@@ -253,6 +265,8 @@ golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v
|
||||
golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk=
|
||||
golang.org/x/crypto v0.34.0 h1:+/C6tk6rf/+t5DhUketUbD1aNGqiSX3j15Z6xuIDlBA=
|
||||
golang.org/x/crypto v0.34.0/go.mod h1:dy7dXNW32cAb/6/PRuTNsix8T+vJAqvuIy5Bli/x0YQ=
|
||||
golang.org/x/crypto v0.35.0 h1:b15kiHdrGCHrP6LvwaQ3c03kgNhhiMgvlhxHQhmg2Xs=
|
||||
golang.org/x/crypto v0.35.0/go.mod h1:dy7dXNW32cAb/6/PRuTNsix8T+vJAqvuIy5Bli/x0YQ=
|
||||
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
||||
golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
||||
golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
|
||||
|
||||
4
http.go
4
http.go
@@ -221,6 +221,9 @@ func (obj *conn2) run() (err error) {
|
||||
obj.keepSendDisable()
|
||||
go obj.httpWrite(task, task.req.Header.Clone())
|
||||
task.res, task.err = http.ReadResponse(obj.r, nil)
|
||||
if task.res != nil {
|
||||
task.res.Request = task.req
|
||||
}
|
||||
if task.res != nil && task.res.Body != nil && task.err == nil {
|
||||
rawBody := task.res.Body
|
||||
pr, pw := io.Pipe()
|
||||
@@ -354,7 +357,6 @@ func (obj *conn2) Stream() io.ReadWriteCloser {
|
||||
r: obj.r,
|
||||
w: obj.conn,
|
||||
}
|
||||
// return obj.conn
|
||||
}
|
||||
func (obj *conn2) httpWrite(task *httpTask, rawHeaders http.Header) {
|
||||
defer func() {
|
||||
|
||||
@@ -321,6 +321,7 @@ func (obj *Response) IsSSE() bool {
|
||||
// read body
|
||||
func (obj *Response) ReadBody() (err error) {
|
||||
obj.readBodyLock.Lock()
|
||||
defer obj.readBodyLock.Unlock()
|
||||
if obj.readBody {
|
||||
return nil
|
||||
}
|
||||
@@ -333,7 +334,6 @@ func (obj *Response) ReadBody() (err error) {
|
||||
obj.webSocket = websocket.NewClientConn(newFakeConn(obj.rawConn.connStream()), websocket.GetResponseHeaderOption(obj.response.Header))
|
||||
}
|
||||
}
|
||||
obj.readBodyLock.Unlock()
|
||||
}()
|
||||
obj.readBody = true
|
||||
bBody := bytes.NewBuffer(nil)
|
||||
|
||||
@@ -270,9 +270,6 @@ func (obj *roundTripper) dialConnecotr(ctx *Response, conne *connecotr, h2 bool)
|
||||
conne.Conn = newConn2(conne.forceCtx, conne.c, func(err error) {
|
||||
conne.forceCnl(tools.WrapError(err, "http1 client close"))
|
||||
})
|
||||
// conne.Conn = newRoudTrip(conne.forceCtx, conne.c, func(err error) {
|
||||
// conne.forceCnl(tools.WrapError(err, "http1 client close"))
|
||||
// })
|
||||
}
|
||||
return err
|
||||
}
|
||||
@@ -376,7 +373,7 @@ func (obj *roundTripper) newRoudTrip(task *reqTask) {
|
||||
task.reqCtx.isNewConn = true
|
||||
conn, err := obj.dial(task.reqCtx)
|
||||
if err != nil {
|
||||
task.err = err
|
||||
task.err = tools.WrapError(err, "newRoudTrip dial error")
|
||||
if task.reqCtx.option.ErrCallBack != nil {
|
||||
task.reqCtx.err = err
|
||||
if err2 := task.reqCtx.option.ErrCallBack(task.reqCtx); err2 != nil {
|
||||
|
||||
4
tools.go
4
tools.go
@@ -198,8 +198,6 @@ func NewRequestWithContext(ctx context.Context, method string, u *url.URL, body
|
||||
if body != nil {
|
||||
if v, ok := body.(interface{ Len() int }); ok {
|
||||
req.ContentLength = int64(v.Len())
|
||||
} else {
|
||||
req.ContentLength = -1
|
||||
}
|
||||
if _, ok := body.(io.Seeker); ok {
|
||||
req.Body = &requestBody{body}
|
||||
@@ -208,8 +206,6 @@ func NewRequestWithContext(ctx context.Context, method string, u *url.URL, body
|
||||
} else {
|
||||
req.Body = io.NopCloser(body)
|
||||
}
|
||||
} else {
|
||||
req.ContentLength = -1
|
||||
}
|
||||
return req, nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user