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 下载文件到指定目录,返回带有正确扩展名的完整文件路径
|
// DownloadFile 下载文件到指定目录,返回带有正确扩展名的完整文件路径
|
||||||
func DownloadFile(url string, dirPath string) (filepath string, err error) {
|
func DownloadFile(urlStr string, dirPath string) (filepath string, err error) {
|
||||||
// 创建自定义的HTTP客户端
|
// 解析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{
|
client := &http.Client{
|
||||||
Transport: &http.Transport{
|
Transport: transport,
|
||||||
TLSClientConfig: &tls.Config{
|
|
||||||
InsecureSkipVerify: true,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 发送 HTTP GET 请求
|
// 发送 HTTP GET 请求
|
||||||
var resp *http.Response
|
var resp *http.Response
|
||||||
var maxRetry = 100
|
var maxRetry = 100
|
||||||
var retry = 0
|
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)
|
fmt.Printf("下载失败,正在重试... 错误: %v\n", err)
|
||||||
retry++
|
retry++
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user