c# WebBrowser 获取cookie
时间: 2023-07-24 15:10:40 浏览: 170
你可以使用 WebBrowser 控件的 DocumentCompleted 事件来获取页面的 cookie。以下是一个示例代码:
```
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
string cookies = webBrowser1.Document.Cookie;
// 处理 cookie
}
```
在 DocumentCompleted 事件中,可以通过 WebBrowser.Document 属性来获取页面的 DOM 对象。通过 DOM 对象的 Cookie 属性,可以获取页面的 cookie 值。获取到 cookie 后,你可以根据需要进行处理。
相关问题
C# ChromiumWebBrowser 获取Storage
在C#中使用ChromiumWebBrowser控件,实际上它基于Chromium Embedded Framework (CEF),访问网页的存储通常涉及使用CEF的JavaScript API。不过,由于CEF主要是C++库,C#中通常是通过COM Interop或者第三方库间接访问的。
首先,你需要添加对CEF的引用,并通过`ChromiumWebBrowser`对象调用`ExecuteScriptAsync`方法来执行JavaScript代码,获取和操作存储。例如,为了获取cookies,你可以这样做:
```csharp
using ChromiumWebBrowser.Interop;
// 执行JavaScript获取cookies
string jsCode = @"
var cookies = document.cookie.split(';');
var result = [];
for (var i = 0; i < cookies.length; i++) {
var cookie = cookies[i].trim();
if (cookie != '') {
result.push({name: decodeURIComponent(cookie.split('=')[0]), value: decodeURIComponent(cookie.split('=')[1])});
}
};
result";
IJSValueWrapper cookiesResult = await webBrowser.ExecuteScriptAsync(jsCode);
```
对于localStorage和sessionStorage,你可以在JavaScript中分别获取它们:
```csharp
string localStorageJs = @"
try {
localStorage.getItem('key');
} catch(e) {
// handle error...
}
";
string sessionStorageJs = @"
try {
sessionStorage.getItem('key');
} catch(e) {
// handle error...
}
";
```
同样地,需要将这些字符串传递给`ExecuteScriptAsync`并解析返回的结果。
阅读全文