Sfoglia il codice sorgente

feat: add SOCKS5 proxy authentication support

- Enhance `NewProxyHttpClient` to handle SOCKS5 proxy authentication
- Extract username and password from proxy URL for SOCKS5 proxy configuration
- Provide optional authentication for SOCKS5 proxy connections
1808837298@qq.com 1 anno fa
parent
commit
0f5c090ad6
1 ha cambiato i file con 13 aggiunte e 2 eliminazioni
  1. 13 2
      service/http_client.go

+ 13 - 2
service/http_client.go

@@ -42,7 +42,6 @@ func NewProxyHttpClient(proxyURL string) (*http.Client, error) {
 		return http.DefaultClient, nil
 	}
 
-	// 解析代理URL
 	parsedURL, err := url.Parse(proxyURL)
 	if err != nil {
 		return nil, err
@@ -57,8 +56,20 @@ func NewProxyHttpClient(proxyURL string) (*http.Client, error) {
 		}, nil
 
 	case "socks5":
+		// 获取认证信息
+		var auth *proxy.Auth
+		if parsedURL.User != nil {
+			auth = &proxy.Auth{
+				User:     parsedURL.User.Username(),
+				Password: "",
+			}
+			if password, ok := parsedURL.User.Password(); ok {
+				auth.Password = password
+			}
+		}
+
 		// 创建 SOCKS5 代理拨号器
-		dialer, err := proxy.SOCKS5("tcp", parsedURL.Host, nil, proxy.Direct)
+		dialer, err := proxy.SOCKS5("tcp", parsedURL.Host, auth, proxy.Direct)
 		if err != nil {
 			return nil, err
 		}