From b96c2ae68cbdc2c384150d891fa913a59c9dbf27 Mon Sep 17 00:00:00 2001 From: jqqjj Date: Mon, 15 May 2023 00:09:37 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E6=97=A0=E6=B3=95?= =?UTF-8?q?=E5=A4=8D=E7=94=A8=E7=BD=91=E7=BB=9C=E8=BF=9E=E6=8E=A5=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sessions.go | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/sessions.go b/sessions.go index f5bbd61..8963349 100644 --- a/sessions.go +++ b/sessions.go @@ -323,11 +323,13 @@ func (s *Session) Send(preq *models.PrepareRequest, req *url.Request) (*models.R options.Proxy = proxies } - client, err := ja3.NewClient(options) - if err != nil { - return nil, err + if s.client == nil { + client, err := ja3.NewClient(options) + if err != nil { + return nil, err + } + s.client = &client } - s.client = &client } // 是否验证证书 From b3e8a37d2811707e89a8b25a057536d603984e35 Mon Sep 17 00:00:00 2001 From: jqqjj Date: Mon, 15 May 2023 00:52:32 +0800 Subject: [PATCH 2/4] =?UTF-8?q?Session=E7=9A=84client=E9=87=8D=E5=BB=BA?= =?UTF-8?q?=E8=A7=84=E5=88=99=EF=BC=9A=E6=8C=87=E7=BA=B9=E5=8F=98=E6=9B=B4?= =?UTF-8?q?=E6=88=96=E8=80=85client=E4=B8=BA=E7=A9=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sessions.go | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/sessions.go b/sessions.go index 8963349..bc0cfb2 100644 --- a/sessions.go +++ b/sessions.go @@ -4,6 +4,7 @@ import ( "bytes" "compress/flate" "compress/gzip" + "crypto/md5" "crypto/x509" "encoding/binary" "errors" @@ -188,6 +189,7 @@ type Session struct { transport *http.Transport request *http.Request client *http.Client + ja3Hash [16]byte } // 预请求处理 @@ -323,12 +325,15 @@ func (s *Session) Send(preq *models.PrepareRequest, req *url.Request) (*models.R options.Proxy = proxies } - if s.client == nil { + //指纹变更或者client为空才需要重建client + currentHash := md5.Sum([]byte(browser.JA3 + browser.UserAgent)) + if s.ja3Hash != currentHash || s.client == nil { client, err := ja3.NewClient(options) if err != nil { return nil, err } s.client = &client + s.ja3Hash = currentHash } } From b2eb3568d78a90b092b7bec6b9b44087b00dc37a Mon Sep 17 00:00:00 2001 From: jqqjj Date: Tue, 16 May 2023 01:34:14 +0800 Subject: [PATCH 3/4] =?UTF-8?q?=E5=B1=8F=E8=94=BDlength?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- models/PrepareRequest.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models/PrepareRequest.go b/models/PrepareRequest.go index b233abd..773d489 100644 --- a/models/PrepareRequest.go +++ b/models/PrepareRequest.go @@ -165,7 +165,7 @@ func (pr *PrepareRequest) Prepare_body(data *url.Values, files *url.Files, json content_type = "application/x-www-form-urlencoded" body = data.Encode() } - pr.prepare_content_length(body) + //pr.prepare_content_length(body) if content_type != "" && pr.Headers.Get("Content-Type") == "" { pr.Headers.Set("Content-Type", content_type) } From a5c01de180643211931bd7d1f24f7322b1db89c8 Mon Sep 17 00:00:00 2001 From: jqqjj Date: Tue, 16 May 2023 01:42:20 +0800 Subject: [PATCH 4/4] =?UTF-8?q?=E6=9B=B4=E6=8D=A2=E5=BA=93=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api.go | 6 +++--- go.mod | 2 +- models/PrepareRequest.go | 4 ++-- models/Request.go | 2 +- models/Response.go | 2 +- sessions.go | 8 ++++---- url/Params.go | 2 +- url/Request.go | 2 +- url/Values.go | 6 +++--- 9 files changed, 17 insertions(+), 17 deletions(-) diff --git a/api.go b/api.go index 1b5dd6e..57a4874 100644 --- a/api.go +++ b/api.go @@ -1,8 +1,8 @@ package requests import ( - "github.com/wangluozhe/requests/models" - "github.com/wangluozhe/requests/url" + "github.com/jqqjj/requests/models" + "github.com/jqqjj/requests/url" "net/http" ) @@ -46,4 +46,4 @@ func Connect(rawurl string, req *url.Request) (*models.Response, error) { func Trace(rawurl string, req *url.Request) (*models.Response, error) { return Request(http.MethodTrace, rawurl, req) -} \ No newline at end of file +} diff --git a/go.mod b/go.mod index 64ef6d0..2caf23e 100644 --- a/go.mod +++ b/go.mod @@ -1,4 +1,4 @@ -module github.com/wangluozhe/requests +module github.com/jqqjj/requests go 1.20 diff --git a/models/PrepareRequest.go b/models/PrepareRequest.go index 773d489..f2de22f 100644 --- a/models/PrepareRequest.go +++ b/models/PrepareRequest.go @@ -6,10 +6,10 @@ import ( jsonp "encoding/json" "errors" "fmt" + "github.com/jqqjj/requests/url" + "github.com/jqqjj/requests/utils" "github.com/wangluozhe/fhttp" "github.com/wangluozhe/fhttp/cookiejar" - "github.com/wangluozhe/requests/url" - "github.com/wangluozhe/requests/utils" "io" "io/ioutil" "strconv" diff --git a/models/Request.go b/models/Request.go index 2de6c2d..f2cd447 100644 --- a/models/Request.go +++ b/models/Request.go @@ -1,9 +1,9 @@ package models import ( + "github.com/jqqjj/requests/url" "github.com/wangluozhe/fhttp" "github.com/wangluozhe/fhttp/cookiejar" - "github.com/wangluozhe/requests/url" ) type Request struct { diff --git a/models/Response.go b/models/Response.go index 3567c42..8fff695 100644 --- a/models/Response.go +++ b/models/Response.go @@ -5,8 +5,8 @@ import ( "errors" "fmt" "github.com/bitly/go-simplejson" + "github.com/jqqjj/requests/url" "github.com/wangluozhe/fhttp" - "github.com/wangluozhe/requests/url" "io" ) diff --git a/sessions.go b/sessions.go index 040fb15..9ddc12b 100644 --- a/sessions.go +++ b/sessions.go @@ -10,14 +10,14 @@ import ( "errors" "fmt" "github.com/andybalholm/brotli" + "github.com/jqqjj/requests/models" + ja3 "github.com/jqqjj/requests/transport" + "github.com/jqqjj/requests/url" + "github.com/jqqjj/requests/utils" tls "github.com/refraction-networking/utls" "github.com/wangluozhe/fhttp" "github.com/wangluozhe/fhttp/cookiejar" "github.com/wangluozhe/fhttp/http2" - "github.com/wangluozhe/requests/models" - ja3 "github.com/wangluozhe/requests/transport" - "github.com/wangluozhe/requests/url" - "github.com/wangluozhe/requests/utils" "io/ioutil" "log" url2 "net/url" diff --git a/url/Params.go b/url/Params.go index 2ed1883..c33ce26 100644 --- a/url/Params.go +++ b/url/Params.go @@ -1,7 +1,7 @@ package url import ( - "github.com/wangluozhe/requests/utils" + "github.com/jqqjj/requests/utils" "strings" ) diff --git a/url/Request.go b/url/Request.go index 135722e..94b229a 100644 --- a/url/Request.go +++ b/url/Request.go @@ -1,10 +1,10 @@ package url import ( + ja3 "github.com/jqqjj/requests/transport" "github.com/wangluozhe/fhttp" "github.com/wangluozhe/fhttp/cookiejar" "github.com/wangluozhe/fhttp/http2" - ja3 "github.com/wangluozhe/requests/transport" "time" ) diff --git a/url/Values.go b/url/Values.go index fc264e2..e52f0b3 100644 --- a/url/Values.go +++ b/url/Values.go @@ -1,7 +1,7 @@ package url import ( - "github.com/wangluozhe/requests/utils" + "github.com/jqqjj/requests/utils" "strings" ) @@ -13,7 +13,7 @@ func ParseValues(params string) *Values { } for _, l := range strings.Split(params, "&") { value := strings.SplitN(l, "=", 2) - if len(value) == 2{ + if len(value) == 2 { p.Add(value[0], value[1]) } } @@ -44,7 +44,7 @@ type Values struct { // 设置Values参数 func (v *Values) Set(key, value string) { p := map[string][]string{ - key: []string{value,}, + key: []string{value}, } index := SearchStrings(v.indexKey, key) if len(v.indexKey) == 0 || index == -1 {