This commit is contained in:
gospider
2025-02-28 15:17:25 +08:00
parent 877d36c992
commit d2ef065dad
3 changed files with 16 additions and 3 deletions

View File

@@ -226,6 +226,14 @@ func (obj *Dialer) verifyProxyToRemote(ctx *Response, conn net.Conn, proxyTlsCon
return packCon, conn, err
}
}
func (obj *Dialer) LookupIPAddrWithCache(host string) net.IP {
msgDataAny, ok := obj.dnsIpData.Load(host)
if ok {
return msgDataAny.(msgClient).ip
}
return nil
}
func (obj *Dialer) loadHost(ctx *Response, host string) (net.IP, error) {
msgDataAny, ok := obj.dnsIpData.Load(host)
if ok {

View File

@@ -261,7 +261,11 @@ func (obj *roundTripper) dial(ctx *Response) (conn *connecotr, err error) {
}
func (obj *roundTripper) dialConnecotr(ctx *Response, conne *connecotr, h2 bool) (err error) {
if h2 {
if conne.Conn, err = http2.NewClientConn(ctx.Context(), conne.c, ctx.option.gospiderSpec.H2Spec, func(err error) {
var spec *http2.Spec
if ctx.option.gospiderSpec != nil {
spec = ctx.option.gospiderSpec.H2Spec
}
if conne.Conn, err = http2.NewClientConn(ctx.Context(), conne.c, spec, func(err error) {
conne.forceCnl(tools.WrapError(err, "http2 client close"))
}); err != nil {
return err
@@ -276,7 +280,7 @@ func (obj *roundTripper) dialConnecotr(ctx *Response, conne *connecotr, h2 bool)
func (obj *roundTripper) dialAddTls(option *RequestOption, req *http.Request, netConn net.Conn) (net.Conn, bool, error) {
ctx, cnl := context.WithTimeout(req.Context(), option.TlsHandshakeTimeout)
defer cnl()
if option.gospiderSpec.TLSSpec != nil {
if option.gospiderSpec != nil && option.gospiderSpec.TLSSpec != nil {
if tlsConn, err := obj.dialer.addJa3Tls(ctx, netConn, getHost(req), option.gospiderSpec.TLSSpec, option.UtlsConfig.Clone(), option.ForceHttp1); err != nil {
return tlsConn, false, tools.WrapError(err, "add ja3 tls error")
} else {

View File

@@ -4,6 +4,7 @@ import (
"context"
"crypto/tls"
"log"
"net"
"testing"
"fmt"
@@ -89,7 +90,7 @@ func server() {
fmt.Fprint(w, "method is not supported")
}
})
tlsCert, err := gtls.CreateProxyCertWithName("localhost")
tlsCert, err := gtls.CreateCertWithAddr(net.IP{127, 0, 0, 1})
if err != nil {
panic(err)
}