diff --git a/src/Snap.Hutao/Snap.Hutao/Core/CoreEnvironment.cs b/src/Snap.Hutao/Snap.Hutao/Core/CoreEnvironment.cs index 1781289c..4684dc78 100644 --- a/src/Snap.Hutao/Snap.Hutao/Core/CoreEnvironment.cs +++ b/src/Snap.Hutao/Snap.Hutao/Core/CoreEnvironment.cs @@ -29,6 +29,11 @@ internal static class CoreEnvironment /// public const string HoyolabMobileUA = $"Mozilla/5.0 (Linux; Android 12) Mobile miHoYoBBS/{HoyolabXrpcVersion}"; + /// + /// Hoyolab iPhone 移动端请求UA + /// + public const string HoyolabOsMobileUA = "Mozilla/5.0 (iPhone; CPU iPhone OS 16_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) miHoYoBBSOversea/2.28.0"; + /// /// 米游社 Rpc 版本 /// diff --git a/src/Snap.Hutao/Snap.Hutao/Model/Binding/User/User.cs b/src/Snap.Hutao/Snap.Hutao/Model/Binding/User/User.cs index b82c61fc..784ff099 100644 --- a/src/Snap.Hutao/Snap.Hutao/Model/Binding/User/User.cs +++ b/src/Snap.Hutao/Snap.Hutao/Model/Binding/User/User.cs @@ -106,7 +106,7 @@ internal sealed class User : ObservableObject User user = new(inner); bool isOk = false; - // TODO: need a flag to indentify hoyoverse account + // TODO: need a flag to identify hoyoverse account if (user.Entity.Stoken != null) { isOk = await user.InitializeCoreAsync(token).ConfigureAwait(false); diff --git a/src/Snap.Hutao/Snap.Hutao/Service/DailyNote/DailyNoteNotifier.cs b/src/Snap.Hutao/Snap.Hutao/Service/DailyNote/DailyNoteNotifier.cs index 69f168ce..619d007f 100644 --- a/src/Snap.Hutao/Snap.Hutao/Service/DailyNote/DailyNoteNotifier.cs +++ b/src/Snap.Hutao/Snap.Hutao/Service/DailyNote/DailyNoteNotifier.cs @@ -62,7 +62,7 @@ internal sealed class DailyNoteNotifier string? attribution = SH.ServiceDailyNoteNotifierAttribution; - // TODO: need a flag to indentify hoyoverse account + // TODO: need a flag to identify hoyoverse account // For global server, stoken is null if (entry.User.Stoken == null) { diff --git a/src/Snap.Hutao/Snap.Hutao/View/Dialog/SignInWebViewDialog.xaml.cs b/src/Snap.Hutao/Snap.Hutao/View/Dialog/SignInWebViewDialog.xaml.cs index 175a6e8f..44c3d0e7 100644 --- a/src/Snap.Hutao/Snap.Hutao/View/Dialog/SignInWebViewDialog.xaml.cs +++ b/src/Snap.Hutao/Snap.Hutao/View/Dialog/SignInWebViewDialog.xaml.cs @@ -47,9 +47,19 @@ internal sealed partial class SignInWebViewDialog : ContentDialog return; } - coreWebView2.SetCookie(user.CookieToken, user.Ltoken, null).SetMobileUserAgent(); - signInJsInterface = new(coreWebView2, scope.ServiceProvider); - coreWebView2.Navigate("https://webstatic.mihoyo.com/bbs/event/signin-ys/index.html?act_id=e202009291139501"); + // TODO: need a flag to identify hoyoverse account + if (user.Stoken == null) + { + coreWebView2.SetCookie(user.CookieToken, user.Ltoken, null).SetOsMobileUserAgent(); + signInJsInterface = new(coreWebView2, scope.ServiceProvider); + coreWebView2.Navigate("https://act.hoyolab.com/ys/event/signin-sea-v3/index.html?act_id=e202102251931481&hyl_presentation_style=fullscreen"); + } + else + { + coreWebView2.SetCookie(user.CookieToken, user.Ltoken, null).SetMobileUserAgent(); + signInJsInterface = new(coreWebView2, scope.ServiceProvider); + coreWebView2.Navigate("https://webstatic.mihoyo.com/bbs/event/signin-ys/index.html?act_id=e202009291139501"); + } } private void OnContentDialogClosed(ContentDialog sender, ContentDialogClosedEventArgs args) diff --git a/src/Snap.Hutao/Snap.Hutao/Web/Bridge/CoreWebView2Extension.cs b/src/Snap.Hutao/Snap.Hutao/Web/Bridge/CoreWebView2Extension.cs index 3decfd09..c32bd1ab 100644 --- a/src/Snap.Hutao/Snap.Hutao/Web/Bridge/CoreWebView2Extension.cs +++ b/src/Snap.Hutao/Snap.Hutao/Web/Bridge/CoreWebView2Extension.cs @@ -23,6 +23,17 @@ internal static class CoreWebView2Extension return webView; } + /// + /// 设置 移动端UA + /// + /// webview2 + /// 链式调用的WebView2 + public static CoreWebView2 SetOsMobileUserAgent(this CoreWebView2 webView) + { + webView.Settings.UserAgent = Core.CoreEnvironment.HoyolabOsMobileUA; + return webView; + } + /// /// 设置WebView2的Cookie /// diff --git a/src/Snap.Hutao/Snap.Hutao/Web/Hoyolab/Takumi/Event/Calculate/CalculateClient.cs b/src/Snap.Hutao/Snap.Hutao/Web/Hoyolab/Takumi/Event/Calculate/CalculateClient.cs index 940ee413..65ae7028 100644 --- a/src/Snap.Hutao/Snap.Hutao/Web/Hoyolab/Takumi/Event/Calculate/CalculateClient.cs +++ b/src/Snap.Hutao/Snap.Hutao/Web/Hoyolab/Takumi/Event/Calculate/CalculateClient.cs @@ -44,7 +44,7 @@ internal sealed class CalculateClient public async Task> ComputeAsync(Model.Entity.User user, AvatarPromotionDelta delta, CancellationToken token = default) { Response? resp; - // TODO: need a flag to indentify hoyoverse account + // TODO: need a flag to identify hoyoverse account if (user.Stoken == null) { resp = await httpClient