fix: 更新 DownloadFile 函数以解析 URL,增强 TLS 配置并改进重试逻辑
This commit is contained in:
parent
fda4cca833
commit
5b63594110
35
util/url.go
35
util/url.go
@ -65,21 +65,40 @@ func normalizeURL(rawURL string) string {
|
||||
}
|
||||
|
||||
// DownloadFile 下载文件到指定目录,返回带有正确扩展名的完整文件路径
|
||||
func DownloadFile(url string, dirPath string) (filepath string, err error) {
|
||||
// 创建自定义的HTTP客户端
|
||||
func DownloadFile(urlStr string, dirPath string) (filepath string, err error) {
|
||||
// 解析URL获取域名
|
||||
parsedURL, err := url.Parse(urlStr)
|
||||
if err != nil {
|
||||
return "", fmt.Errorf("URL解析失败: %v", err)
|
||||
}
|
||||
|
||||
// 创建基础传输配置
|
||||
transport := &http.Transport{
|
||||
ForceAttemptHTTP2: true,
|
||||
}
|
||||
|
||||
// 如果是腾讯的特定域名,使用特殊的TLS配置
|
||||
if strings.HasSuffix(parsedURL.Host, ".qq.com.cn") {
|
||||
transport.TLSClientConfig = &tls.Config{
|
||||
MinVersion: tls.VersionTLS12,
|
||||
MaxVersion: tls.VersionTLS12,
|
||||
CipherSuites: []uint16{
|
||||
tls.TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,
|
||||
},
|
||||
}
|
||||
transport.ForceAttemptHTTP2 = false
|
||||
}
|
||||
|
||||
// 创建HTTP客户端
|
||||
client := &http.Client{
|
||||
Transport: &http.Transport{
|
||||
TLSClientConfig: &tls.Config{
|
||||
InsecureSkipVerify: true,
|
||||
},
|
||||
},
|
||||
Transport: transport,
|
||||
}
|
||||
|
||||
// 发送 HTTP GET 请求
|
||||
var resp *http.Response
|
||||
var maxRetry = 100
|
||||
var retry = 0
|
||||
for resp, err = client.Get(url); err != nil && retry < maxRetry; resp, err = client.Get(url) {
|
||||
for resp, err = client.Get(urlStr); err != nil && retry < maxRetry; resp, err = client.Get(urlStr) {
|
||||
fmt.Printf("下载失败,正在重试... 错误: %v\n", err)
|
||||
retry++
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user