From b4a5d7ee29aff106e88195fba1d97fe0fa71d320 Mon Sep 17 00:00:00 2001 From: freekof Date: Sun, 1 Feb 2026 14:16:13 +0800 Subject: [PATCH] Update HttpFmt.cs --- v2rayN/ServiceLib/Handler/Fmt/HttpFmt.cs | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/v2rayN/ServiceLib/Handler/Fmt/HttpFmt.cs b/v2rayN/ServiceLib/Handler/Fmt/HttpFmt.cs index 9aa23b46..487f69cb 100644 --- a/v2rayN/ServiceLib/Handler/Fmt/HttpFmt.cs +++ b/v2rayN/ServiceLib/Handler/Fmt/HttpFmt.cs @@ -7,6 +7,11 @@ public class HttpFmt : BaseFmt return value.Replace(':', ':'); } + private static string EncodeUserInfoPart(string value) + { + return Uri.EscapeDataString(value); + } + public static ProfileItem? Resolve(string str, out string msg) { msg = ResUI.ConfigurationFormatIncorrect; @@ -41,13 +46,15 @@ public class HttpFmt : BaseFmt var userInfo = string.Empty; if (item.Security.IsNotEmpty() && item.Id.IsNotEmpty()) { - userInfo = $"{NormalizeColon(item.Security)}:{NormalizeColon(item.Id)}"; + var security = EncodeUserInfoPart(NormalizeColon(item.Security)); + var id = EncodeUserInfoPart(NormalizeColon(item.Id)); + userInfo = $"{security}:{id}"; } var protocol = item.StreamSecurity == "tls" ? "https://" : "http://"; if (userInfo.IsNotEmpty()) { - return $"{protocol}{Utils.UrlEncode(userInfo)}@{GetIpv6(NormalizeColon(item.Address))}:{item.Port}{remark}"; + return $"{protocol}{userInfo}@{GetIpv6(NormalizeColon(item.Address))}:{item.Port}{remark}"; } else {