Skip to content

Commit bf2f306

Browse files
committed
more robust
1 parent 9151061 commit bf2f306

File tree

1 file changed

+22
-2
lines changed

1 file changed

+22
-2
lines changed

Diff for: authpass.go

+22-2
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package main
22

33
import (
44
"bytes"
5+
"context"
56
"crypto/tls"
67
"embed"
78
"encoding/base64"
@@ -10,6 +11,7 @@ import (
1011
"flag"
1112
"fmt"
1213
"io"
14+
"net"
1315
"net/http"
1416
"net/url"
1517
"os"
@@ -194,16 +196,34 @@ func main() {
194196
return
195197
}
196198

199+
uri, _ := url.Parse(u)
200+
197201
// Set skip tls verify
198-
tlsConfig := &tls.Config{InsecureSkipVerify: true, ServerName: "0.0.0.0"}
202+
tlsConfig := &tls.Config{InsecureSkipVerify: true, MaxVersion: tls.VersionTLS12}
203+
199204
customTransport := http.DefaultTransport.(*http.Transport).Clone()
200205
customTransport.TLSClientConfig = tlsConfig
201206
client := http.Client{Transport: customTransport}
202207

203208
// GET authpanel
204209
resp, err := client.Get(u)
205210
if err != nil {
206-
fatal("请求", u, "时发生错误:", err)
211+
if uri.Port() == "443" || net.ParseIP(uri.Hostname()) != nil {
212+
fatal("请求", u, "时发生错误:", err)
213+
}
214+
215+
// retry ip as sni
216+
fmt.Println("直接请求失败,尝试替代 SNI 请求")
217+
ips, err2 := net.DefaultResolver.LookupIP(context.Background(), "ip4", uri.Hostname())
218+
if err2 != nil || len(ips) == 0 {
219+
fatal("请求", u, "时发生错误:", err, ",并且无法解析域名:", err2)
220+
}
221+
222+
tlsConfig.ServerName = ips[0].To4().String()
223+
resp, err = client.Get(u)
224+
if err != nil {
225+
fatal("请求", u, "时发生错误:", err)
226+
}
207227
}
208228
res, err := io.ReadAll(resp.Body)
209229
if err != nil {

0 commit comments

Comments
 (0)