From 120e8d0686157497e838af0339c2290df5ef57ac Mon Sep 17 00:00:00 2001 From: 2dust <31833384+2dust@users.noreply.github.com> Date: Sat, 16 Aug 2025 20:05:56 +0800 Subject: [PATCH] Fixed a bug in parsing subscription result https://github.com/2dust/v2rayN/issues/7734 --- v2rayN/ServiceLib/Handler/ConfigHandler.cs | 5 +++++ v2rayN/ServiceLib/Handler/Fmt/BaseFmt.cs | 9 +-------- v2rayN/ServiceLib/Handler/Fmt/HtmlPageFmt.cs | 11 +++++++++++ 3 files changed, 17 insertions(+), 8 deletions(-) create mode 100644 v2rayN/ServiceLib/Handler/Fmt/HtmlPageFmt.cs diff --git a/v2rayN/ServiceLib/Handler/ConfigHandler.cs b/v2rayN/ServiceLib/Handler/ConfigHandler.cs index 981fd2f5..8450cba8 100644 --- a/v2rayN/ServiceLib/Handler/ConfigHandler.cs +++ b/v2rayN/ServiceLib/Handler/ConfigHandler.cs @@ -1412,6 +1412,11 @@ public class ConfigHandler { profileItem = V2rayFmt.ResolveFull(strData, subRemarks); } + //Is Html Page + if (profileItem is null && HtmlPageFmt.IsHtmlPage(strData)) + { + return -1; + } //Is Clash configuration if (profileItem is null) { diff --git a/v2rayN/ServiceLib/Handler/Fmt/BaseFmt.cs b/v2rayN/ServiceLib/Handler/Fmt/BaseFmt.cs index 61614f13..965efbb1 100644 --- a/v2rayN/ServiceLib/Handler/Fmt/BaseFmt.cs +++ b/v2rayN/ServiceLib/Handler/Fmt/BaseFmt.cs @@ -220,14 +220,7 @@ public class BaseFmt protected static bool Contains(string str, params string[] s) { - foreach (var item in s) - { - if (str.Contains(item, StringComparison.OrdinalIgnoreCase)) - { - return true; - } - } - return false; + return s.All(item => str.Contains(item, StringComparison.OrdinalIgnoreCase)); } protected static string WriteAllText(string strData, string ext = "json") diff --git a/v2rayN/ServiceLib/Handler/Fmt/HtmlPageFmt.cs b/v2rayN/ServiceLib/Handler/Fmt/HtmlPageFmt.cs new file mode 100644 index 00000000..38d139d4 --- /dev/null +++ b/v2rayN/ServiceLib/Handler/Fmt/HtmlPageFmt.cs @@ -0,0 +1,11 @@ +using SkiaSharp; + +namespace ServiceLib.Handler.Fmt; + +public class HtmlPageFmt : BaseFmt +{ + public static bool IsHtmlPage(string strData) + { + return Contains(strData, "