.NET兼职社区
.NET兼职社区
.NET兼职社区
.NET兼职社区
.NET兼职社区
.NET兼职社区
我实现的方式有三种,一种是通过JS注入cookie的方式,第二种是通过读取本地化存储的用户数据实现,第三种是发送请求的时候,对请求头进行修改。
一、JS注入的方式
这种方式需要逆向分析下需要的参数,对不熟悉JS逆向的不是很友好。
这里给出参考代码。
点击按钮,跳转到指定的url,页面加载完成后,注入JS。代码中有注释。
private void ButtonGo_Click(object sender, RoutedEventArgs e)
{
if (webView != null && webView.CoreWebView2 != null)
{
webView.CoreWebView2.NavigationCompleted += ActionCompleted;
webView.CoreWebView2.Navigate(addressBar.Text);
}
}
#region 可以成功实现cookie登录
private async void ActionCompleted(object? sender, CoreWebView2NavigationCompletedEventArgs e)
{
string cookieString = $"document.cookie='{
_cookie}';";
await webView.CoreWebView2.AddScriptToExecuteOnDocumentCreatedAsync(cookieString); //通过js注入cookie 这种方式注入完成后需要刷新页面
// 刷新页面 isLoadCookie 表示cookie加载完成后就不要再重定向了 避免事件链无限触发
if (!isLoadCookie)
{
webView.CoreWebView2.Navigate(addressBar.Text);
}
//加载完成
isLoadCookie = true;
}
#endregion
二、读取用户本地化数据
这种方式是比较简单的方式,不需要分析别人网页,无脑加载就行。适合不想麻烦的人。
#region 成功实现cookie登录 。用户数据存储 通过指定用户数据目录的存储和加载。也可以实现自动登录,如果你之前登录过,WebView2会把登录的用户信息存储在userDataFolder中,下次再指定相同的文件,WebView2会自动获取用户数据。如果想实现用户切换,可以为每个用户独立一个UserData文件夹,切换的时候加载不同的文件夹,就OK。
string userDataFolder = System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "WebView2", "UserData");
Directory.