mirror of
https://github.com/gospider007/requests.git
synced 2025-12-24 13:57:52 +08:00
sync
This commit is contained in:
@@ -6,9 +6,11 @@ import (
|
||||
"io"
|
||||
"net"
|
||||
"strings"
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
"github.com/klauspost/compress/zstd"
|
||||
"github.com/mholt/archives"
|
||||
)
|
||||
|
||||
type CompressionConn struct {
|
||||
@@ -41,32 +43,37 @@ const (
|
||||
CompressionLevelBest CompressionLevel = 2
|
||||
)
|
||||
|
||||
func NewCompression(decode string, leval CompressionLevel) (Compression, error) {
|
||||
func NewCompression(decode string) (Compression, error) {
|
||||
var arch Compression
|
||||
switch strings.ToLower(decode) {
|
||||
case "zstd":
|
||||
options := []zstd.EOption{}
|
||||
options2 := []zstd.DOption{}
|
||||
switch leval {
|
||||
case CompressionLevelFast:
|
||||
options = append(options, zstd.WithEncoderLevel(zstd.SpeedFastest), zstd.WithZeroFrames(true), zstd.WithLowerEncoderMem(true))
|
||||
options2 = append(options2, zstd.WithDecoderLowmem(true))
|
||||
case CompressionLevelBest:
|
||||
options = append(options, zstd.WithEncoderLevel(zstd.SpeedBetterCompression))
|
||||
default:
|
||||
options = append(options, zstd.WithEncoderLevel(zstd.SpeedDefault), zstd.WithZeroFrames(true), zstd.WithLowerEncoderMem(true))
|
||||
options2 = append(options2, zstd.WithDecoderLowmem(true))
|
||||
}
|
||||
case "s2":
|
||||
arch = compression{
|
||||
openReader: func(r io.Reader) (io.ReadCloser, error) {
|
||||
decoder, err := zstd.NewReader(r, options2...)
|
||||
return archives.Sz{
|
||||
S2: archives.S2{
|
||||
Compression: archives.S2LevelBetter,
|
||||
},
|
||||
}.OpenReader(r)
|
||||
},
|
||||
openWriter: func(w io.Writer) (io.WriteCloser, error) {
|
||||
return archives.Sz{
|
||||
S2: archives.S2{
|
||||
Compression: archives.S2LevelBetter,
|
||||
},
|
||||
}.OpenWriter(w)
|
||||
},
|
||||
}
|
||||
case "zstd":
|
||||
arch = compression{
|
||||
openReader: func(r io.Reader) (io.ReadCloser, error) {
|
||||
decoder, err := zstd.NewReader(r)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return decoder.IOReadCloser(), nil
|
||||
},
|
||||
openWriter: func(w io.Writer) (io.WriteCloser, error) {
|
||||
encoder, err := zstd.NewWriter(w, options...)
|
||||
encoder, err := zstd.NewWriter(nil, zstd.WithEncoderLevel(zstd.SpeedDefault))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -117,10 +124,10 @@ func NewCompressionConn(conn net.Conn, arch Compression) (net.Conn, error) {
|
||||
conn: conn,
|
||||
r: r,
|
||||
w: w,
|
||||
// oneFunc: sync.OnceFunc(func() {
|
||||
// defer recover()
|
||||
// w.Close()
|
||||
// }),
|
||||
oneFunc: sync.OnceFunc(func() {
|
||||
defer recover()
|
||||
w.Close()
|
||||
}),
|
||||
}
|
||||
if f, ok := w.(interface{ Flush() error }); ok {
|
||||
ccon.f = f
|
||||
|
||||
11
dial.go
11
dial.go
@@ -169,6 +169,17 @@ func (obj *Dialer) DialProxyContext(ctx *Response, network string, proxyTlsConfi
|
||||
}
|
||||
}
|
||||
packCon, conn, err = obj.verifyProxyToRemote(ctx, conn, proxyTlsConfig, oneProxy, remoteUrl, index == proxyLen-2, true)
|
||||
if err != nil {
|
||||
break
|
||||
}
|
||||
}
|
||||
if err != nil {
|
||||
if conn != nil {
|
||||
conn.Close()
|
||||
}
|
||||
if packCon != nil {
|
||||
packCon.Close()
|
||||
}
|
||||
}
|
||||
return packCon, conn, err
|
||||
}
|
||||
|
||||
13
go.mod
13
go.mod
@@ -5,15 +5,16 @@ go 1.24.0
|
||||
require (
|
||||
github.com/gospider007/bar v0.0.0-20250217074946-47896d8de2ba
|
||||
github.com/gospider007/bs4 v0.0.0-20250413121342-fed910fb00c9
|
||||
github.com/gospider007/gson v0.0.0-20250530002642-aee7c1b761df
|
||||
github.com/gospider007/gson v0.0.0-20250611163241-fa021e9c5531
|
||||
github.com/gospider007/gtls v0.0.0-20250610060422-446e017b9858
|
||||
github.com/gospider007/http2 v0.0.0-20250427082905-4aed0707e580
|
||||
github.com/gospider007/http3 v0.0.0-20250416085920-b642f3f91f47
|
||||
github.com/gospider007/http2 v0.0.0-20250611163252-ee5823d0f04a
|
||||
github.com/gospider007/http3 v0.0.0-20250611163115-77b77de7a3f9
|
||||
github.com/gospider007/ja3 v0.0.0-20250427082442-f7dc5fb959e6
|
||||
github.com/gospider007/re v0.0.0-20250217075352-bcb79f285d6c
|
||||
github.com/gospider007/tools v0.0.0-20250610060552-2e45eaa25022
|
||||
github.com/gospider007/tools v0.0.0-20250611120310-b7d5692a72bf
|
||||
github.com/gospider007/websocket v0.0.0-20250429035144-b1cf6819063a
|
||||
github.com/klauspost/compress v1.18.0
|
||||
github.com/mholt/archives v0.1.2
|
||||
github.com/quic-go/quic-go v0.52.0
|
||||
github.com/refraction-networking/uquic v0.0.6
|
||||
github.com/refraction-networking/utls v1.7.3
|
||||
@@ -37,7 +38,6 @@ require (
|
||||
github.com/dsnet/compress v0.0.2-0.20230904184137-39efe44ab707 // indirect
|
||||
github.com/gaukas/clienthellod v0.4.2 // indirect
|
||||
github.com/gaukas/godicttls v0.0.4 // indirect
|
||||
github.com/go-logr/logr v1.4.3 // indirect
|
||||
github.com/go-task/slim-sprig/v3 v3.0.0 // indirect
|
||||
github.com/gobwas/httphead v0.1.0 // indirect
|
||||
github.com/gobwas/pool v0.2.1 // indirect
|
||||
@@ -53,7 +53,6 @@ require (
|
||||
github.com/kr/pretty v0.3.1 // indirect
|
||||
github.com/libdns/libdns v1.1.0 // indirect
|
||||
github.com/mholt/acmez/v3 v3.1.2 // indirect
|
||||
github.com/mholt/archives v0.1.2 // indirect
|
||||
github.com/miekg/dns v1.1.66 // indirect
|
||||
github.com/minio/minlz v1.0.1 // indirect
|
||||
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
|
||||
@@ -86,7 +85,5 @@ require (
|
||||
golang.org/x/sync v0.15.0 // indirect
|
||||
golang.org/x/sys v0.33.0 // indirect
|
||||
golang.org/x/text v0.26.0 // indirect
|
||||
golang.org/x/time v0.11.0 // indirect
|
||||
golang.org/x/tools v0.34.0 // indirect
|
||||
google.golang.org/protobuf v1.36.6 // indirect
|
||||
)
|
||||
|
||||
16
go.sum
16
go.sum
@@ -108,22 +108,22 @@ github.com/gospider007/blog v0.0.0-20250302134054-8afc12c2a9a7 h1:QP46FdP6nJET+b
|
||||
github.com/gospider007/blog v0.0.0-20250302134054-8afc12c2a9a7/go.mod h1:yDzKXJzaYENfMvleqwdo362NE+BXDhwtKXRUQUWHH+I=
|
||||
github.com/gospider007/bs4 v0.0.0-20250413121342-fed910fb00c9 h1:V/Fuzox1GNZzlZCY548Na3mdfjLmWoSqexa53d3dKyE=
|
||||
github.com/gospider007/bs4 v0.0.0-20250413121342-fed910fb00c9/go.mod h1:KBnaNWpVupRQbPZ6jz2jhX/hnRK1w30RKJvl3Micjws=
|
||||
github.com/gospider007/gson v0.0.0-20250530002642-aee7c1b761df h1:Xi1Sm1caw39tXUVZAuVAVSdJ9x7h0Y1bPOw3sxxkzsM=
|
||||
github.com/gospider007/gson v0.0.0-20250530002642-aee7c1b761df/go.mod h1:+O/+tzjrqz67RehAyJaRApESHo1Z9fuxBeQmQ8GMELw=
|
||||
github.com/gospider007/gson v0.0.0-20250611163241-fa021e9c5531 h1:dzUU4p3u9eaY1vlJFUXueuyuFX+AirdOtrWf/4Z8WfU=
|
||||
github.com/gospider007/gson v0.0.0-20250611163241-fa021e9c5531/go.mod h1:YO6h5iR/nAFAaZ34JJbkJPuMG2nq2mShKWI7llEWRQA=
|
||||
github.com/gospider007/gtls v0.0.0-20250610060422-446e017b9858 h1:Tb+T5YfysjR7Mp22AgrJhMPF28KBgjWkbKj2zi8AyBU=
|
||||
github.com/gospider007/gtls v0.0.0-20250610060422-446e017b9858/go.mod h1:SxhMpxq4EYHlUre2EdQ4dKKGZyvj7+1PYZ2LQ9RO0y4=
|
||||
github.com/gospider007/http2 v0.0.0-20250427082905-4aed0707e580 h1:JLZeCin6giqOV3sAy7BGqFkc+qHvO389O/aTT5JJc1k=
|
||||
github.com/gospider007/http2 v0.0.0-20250427082905-4aed0707e580/go.mod h1:WH7RqG9ecX15uAhzZDr5cbTaTPZST3ST0X4okNDSR5I=
|
||||
github.com/gospider007/http3 v0.0.0-20250416085920-b642f3f91f47 h1:dpV6hkUeMbZrCZSaR99u6TNXry9M3FSga+9CmjZ5Zmo=
|
||||
github.com/gospider007/http3 v0.0.0-20250416085920-b642f3f91f47/go.mod h1:9JjUDTG3PcsH7FBF0VgJIK3x3pn5Goq9no91rAotvKs=
|
||||
github.com/gospider007/http2 v0.0.0-20250611163252-ee5823d0f04a h1:OtgLN7N2rFHxF1HXutXeY33bzNAZ/npzQQ4JlaDZk+8=
|
||||
github.com/gospider007/http2 v0.0.0-20250611163252-ee5823d0f04a/go.mod h1:r0XfXyaHynGBLi0o7SN6KxPL0V7q5sX2JVvk2ISDyH0=
|
||||
github.com/gospider007/http3 v0.0.0-20250611163115-77b77de7a3f9 h1:6OiYSTsyrabSDV0dj5SpAGenpPm8VA20fD/FVzrx/TM=
|
||||
github.com/gospider007/http3 v0.0.0-20250611163115-77b77de7a3f9/go.mod h1:FObAlfJRtytX4nI47Ra+j2mKoJlUmxfraqpeOBX2Bi0=
|
||||
github.com/gospider007/ja3 v0.0.0-20250427082442-f7dc5fb959e6 h1:HA1+KhAvM/ifeyR7wdxYV6Ilg2QCQtflGAmkgrgim8Y=
|
||||
github.com/gospider007/ja3 v0.0.0-20250427082442-f7dc5fb959e6/go.mod h1:xmgdol7ucS7vLvRzedImp09Yi0alKCp76cX+Cm/UVQI=
|
||||
github.com/gospider007/kinds v0.0.0-20250217075226-10f199f7215d h1:+Fih572EdNmYCK1L82MyWOj9tAwIgZ2JqepmasAclg8=
|
||||
github.com/gospider007/kinds v0.0.0-20250217075226-10f199f7215d/go.mod h1:3u6J+nbdWhCNJGiQjq/hKSukn2k6ebjd98rd2+fzKNo=
|
||||
github.com/gospider007/re v0.0.0-20250217075352-bcb79f285d6c h1:8/Cf+c2680tkWJ+ueZ9RLLK5R5R8nhE8pNBUPHjkvkM=
|
||||
github.com/gospider007/re v0.0.0-20250217075352-bcb79f285d6c/go.mod h1:dd8aDIUG1vDPP5r+vHBtiUK0Zn6uk3SsWt1ZvmCCHLs=
|
||||
github.com/gospider007/tools v0.0.0-20250610060552-2e45eaa25022 h1:IPoXe0+GyHjiIPn0Qy7nElpJ81awXUWrCoNholizqV4=
|
||||
github.com/gospider007/tools v0.0.0-20250610060552-2e45eaa25022/go.mod h1:x7fyDzsG7lPJO6Q3D6DIzdUA+J9RAQoyOdmcP1XQF1k=
|
||||
github.com/gospider007/tools v0.0.0-20250611120310-b7d5692a72bf h1:pjI49A7tZuZpxaAd7j+ZGVOCAblAoR4gbr7fau5UNg0=
|
||||
github.com/gospider007/tools v0.0.0-20250611120310-b7d5692a72bf/go.mod h1:x7fyDzsG7lPJO6Q3D6DIzdUA+J9RAQoyOdmcP1XQF1k=
|
||||
github.com/gospider007/websocket v0.0.0-20250429035144-b1cf6819063a h1:DJMk+oALIJg3ArN5/DIPrQagWQL1Qi/c3DlXT9l1dGo=
|
||||
github.com/gospider007/websocket v0.0.0-20250429035144-b1cf6819063a/go.mod h1:0yVYF7b5kRayyUzAVgg6h1x+eZujKoSaA4n2krG5F7g=
|
||||
github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
|
||||
|
||||
@@ -257,7 +257,7 @@ func (obj *roundTripper) dial(ctx *Response) (conn *connecotr, err error) {
|
||||
if len(proxys) > 0 {
|
||||
comp := proxys[len(proxys)-1]
|
||||
if comp.Compression != "" {
|
||||
arch, err = NewCompression(comp.Compression, CompressionLevelBest)
|
||||
arch, err = NewCompression(comp.Compression)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -459,7 +459,6 @@ func (obj *roundTripper) RoundTrip(ctx *Response) (err error) {
|
||||
return err
|
||||
}
|
||||
err = obj.poolRoundTrip(task)
|
||||
// log.Print(err)
|
||||
if err == nil || !task.suppertRetry() {
|
||||
break
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user