This commit is contained in:
gospider
2025-02-28 21:00:17 +08:00
parent 8c02757e99
commit 7db53c2417
5 changed files with 8 additions and 40 deletions

View File

@@ -108,7 +108,7 @@ func (obj *Client) do(ctx *Response) (err error) {
return nil return nil
} }
ctx.request.Response = ctx.response ctx.request.Response = ctx.response
ctx.request.Header = defaultHeaders() ctx.request.Header = make(http.Header)
ctx.request.Header.Set("Referer", ctx.Request().URL.String()) ctx.request.Header.Set("Referer", ctx.Request().URL.String())
for key := range ctx.request.Header { for key := range ctx.request.Header {
if val := ctx.Request().Header.Get(key); val != "" { if val := ctx.Request().Header.Get(key); val != "" {

View File

@@ -468,7 +468,6 @@ func (obj *Dialer) Socks5UdpProxy(ctx *Response, proxyAddress Address, remoteAdd
} }
func (obj *Dialer) clientVerifyHttps(ctx context.Context, conn net.Conn, proxyAddress Address, remoteAddress Address) (err error) { func (obj *Dialer) clientVerifyHttps(ctx context.Context, conn net.Conn, proxyAddress Address, remoteAddress Address) (err error) {
hdr := make(http.Header) hdr := make(http.Header)
hdr.Set("User-Agent", tools.UserAgent)
if proxyAddress.User != "" && proxyAddress.Password != "" { if proxyAddress.User != "" && proxyAddress.Password != "" {
hdr.Set("Proxy-Authorization", "Basic "+tools.Base64Encode(proxyAddress.User+":"+proxyAddress.Password)) hdr.Set("Proxy-Authorization", "Basic "+tools.Base64Encode(proxyAddress.User+":"+proxyAddress.Password))
} }

View File

@@ -4,26 +4,12 @@ import (
"fmt" "fmt"
"net/http" "net/http"
"github.com/gospider007/tools"
"gopkg.in/errgo.v2/fmt/errors" "gopkg.in/errgo.v2/fmt/errors"
) )
func defaultHeaders() http.Header {
return http.Header{
"User-Agent": []string{tools.UserAgent},
"Connection": []string{"keep-alive"},
"Accept": []string{"text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7"},
"Accept-Encoding": []string{"gzip, deflate, br, zstd"},
"Accept-Language": []string{tools.AcceptLanguage},
"Sec-Ch-Ua": []string{tools.SecChUa},
"Sec-Ch-Ua-Mobile": []string{"?0"},
"Sec-Ch-Ua-Platform": []string{`"Windows"`},
}
}
func (obj *RequestOption) initOrderHeaders() (http.Header, error) { func (obj *RequestOption) initOrderHeaders() (http.Header, error) {
if obj.Headers == nil { if obj.Headers == nil {
return defaultHeaders(), nil return make(http.Header), nil
} }
switch headers := obj.Headers.(type) { switch headers := obj.Headers.(type) {
case http.Header: case http.Header:

22
sepc.go
View File

@@ -4,7 +4,7 @@ import (
"bytes" "bytes"
"encoding/hex" "encoding/hex"
"errors" "errors"
"log" "net/textproto"
"slices" "slices"
"strings" "strings"
@@ -30,16 +30,6 @@ func (obj *Spec) String() string {
return tools.BytesToString(obj.raw) return tools.BytesToString(obj.raw)
} }
var defaultHeaderKeys = []string{
"Accept",
"Accept-Encoding",
"Accept-Language",
"Sec-Ch-Ua",
"Sec-Ch-Ua-Mobile",
"Sec-Ch-Ua-Platform",
"User-Agent",
}
type Spec struct { type Spec struct {
OrderHeaders [][2]string OrderHeaders [][2]string
raw []byte raw []byte
@@ -91,7 +81,6 @@ func ParseGospiderSpec(value string) (*GospiderSpec, error) {
if spec.TLSSpec, err = ja3.ParseSpec(b); err != nil { if spec.TLSSpec, err = ja3.ParseSpec(b); err != nil {
return nil, err return nil, err
} }
log.Print("发送请求:", spec.TLSSpec.CipherSuites)
} }
if specs[1] != "" { if specs[1] != "" {
b, err := hex.DecodeString(specs[1]) b, err := hex.DecodeString(specs[1])
@@ -127,7 +116,7 @@ func (obj *RequestOption) initSpec() error {
if obj.orderHeaders == nil { if obj.orderHeaders == nil {
orderData := NewOrderData() orderData := NewOrderData()
for _, kv := range gospiderSpec.H1Spec.OrderHeaders { for _, kv := range gospiderSpec.H1Spec.OrderHeaders {
if slices.Contains(defaultHeaderKeys, strings.ToLower(kv[0])) { if slices.Contains(tools.DefaultHeaderKeys, kv[0]) {
orderData.Add(kv[0], kv[1]) orderData.Add(kv[0], kv[1])
} else { } else {
orderData.Add(kv[0], nil) orderData.Add(kv[0], nil)
@@ -140,10 +129,11 @@ func (obj *RequestOption) initSpec() error {
if obj.orderHeaders == nil { if obj.orderHeaders == nil {
orderData := NewOrderData() orderData := NewOrderData()
for _, kv := range gospiderSpec.H2Spec.OrderHeaders { for _, kv := range gospiderSpec.H2Spec.OrderHeaders {
if slices.Contains(defaultHeaderKeys, strings.ToLower(kv[0])) { key := textproto.CanonicalMIMEHeaderKey(kv[0])
orderData.Add(kv[0], kv[1]) if slices.Contains(tools.DefaultHeaderKeys, key) {
orderData.Add(key, kv[1])
} else { } else {
orderData.Add(kv[0], nil) orderData.Add(key, nil)
} }
} }
obj.orderHeaders = orderData obj.orderHeaders = orderData

View File

@@ -7,7 +7,6 @@ import (
"testing" "testing"
"github.com/gospider007/requests" "github.com/gospider007/requests"
"github.com/gospider007/tools"
) )
func TestOrderHeaders(t *testing.T) { func TestOrderHeaders(t *testing.T) {
@@ -15,9 +14,6 @@ func TestOrderHeaders(t *testing.T) {
headers := requests.NewOrderData() headers := requests.NewOrderData()
headers.Add("Accept-Encoding", "gzip, deflate, br") headers.Add("Accept-Encoding", "gzip, deflate, br")
headers.Add("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7") headers.Add("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7")
headers.Add("User-Agent", tools.UserAgent)
headers.Add("Accept-Language", tools.AcceptLanguage)
headers.Add("Sec-Ch-Ua", tools.SecChUa)
headers.Add("Sec-Ch-Ua-Mobile", "?0") headers.Add("Sec-Ch-Ua-Mobile", "?0")
headers.Add("Sec-Ch-Ua-Platform", `"Windows"`) headers.Add("Sec-Ch-Ua-Platform", `"Windows"`)
resp, err := requests.Get(nil, "https://tools.scrapfly.io/api/fp/anything", requests.RequestOption{ resp, err := requests.Get(nil, "https://tools.scrapfly.io/api/fp/anything", requests.RequestOption{
@@ -58,9 +54,6 @@ func TestOrderHeaders2(t *testing.T) {
headers := map[string]any{ headers := map[string]any{
"Accept-Encoding": "gzip, deflate, br", "Accept-Encoding": "gzip, deflate, br",
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7",
"User-Agent": tools.UserAgent,
"Accept-Language": tools.AcceptLanguage,
"Sec-Ch-Ua": tools.SecChUa,
"Sec-Ch-Ua-Mobile": "?0", "Sec-Ch-Ua-Mobile": "?0",
"Sec-Ch-Ua-Platform": `"Windows"`, "Sec-Ch-Ua-Platform": `"Windows"`,
} }