c#/WPF

[WPF / CefSharp] 쿠키 확인 및 수정

루다대디 2024. 3. 19. 15:18

CefSharp에서 개발자도구 열기

//여기서 browser는 ChromiumWebBrowser
browser.ShowDevTools();

 

F12로 열지 못하고
위 함수를 호출해야 개발자도구가 열림
F12로 열리도록 하려면 아래와같이 추가해야함

 

private void Window_KeyDown(object sender, KeyEventArgs e)
{
    if (e.Key == Key.F12)
    {
        browser.ShowDevTools();
    }
}

쿠키값 확인

CefSharp 개발자도구

 

 private async void browser_FrameLoadEnd(object sender, FrameLoadEndEventArgs e)
 {
     if (e.Frame.IsMain)
     {
         // 쿠키 관리자에 액세스
         var cookieManager = browser.GetCookieManager();

         // 현재 URL의 모든 쿠키 가져오기
         var cookies = await cookieManager.VisitAllCookiesAsync();

         foreach (var data in cookies)
         {
             if (data.Name == "au_id")
             {
                 Debug.WriteLine($"이름: {data.Name}, 값: {data.Value}, 도메인: {data.Domain}, path: {data.Path}");
             }
         }
     }
 }

쿠키값 변경

첫번째방법

가져온 쿠키값을 바로 변경

 private async void browser_FrameLoadEnd(object sender, FrameLoadEndEventArgs e)
 {
     if (e.Frame.IsMain)
     {
         // 쿠키 관리자에 액세스
         var cookieManager = browser.GetCookieManager();

         // 현재 URL의 모든 쿠키 가져오기
         var cookies = await cookieManager.VisitAllCookiesAsync();

         foreach (var data in cookies)
         {
             if (data.Name == "au_id")
             {
                 Debug.WriteLine($"이름: {data.Name}, 값: {data.Value}, 도메인: {data.Domain}, path: {data.Path}");
		 data.Value = "46ab59d1c8df2f13-60d138d218b3c512c64-3514";
 		 //data.HttpOnly = true;
 		 await cookieManager.SetCookieAsync("https://www.mina-gram.com", data);
             }
         }
     }
 }

 

 

두번째방법

새로운 쿠키객체 생성

 private async void browser_FrameLoadEnd(object sender, FrameLoadEndEventArgs e)
 {
     if (e.Frame.IsMain)
     {
         var url = e.Frame.Url;

         // 쿠키 관리자에 액세스
         var cookieManager = browser.GetCookieManager();

         // 현재 URL의 모든 쿠키 가져오기
         var cookies = await cookieManager.VisitAllCookiesAsync();

         #region auid 값 변경            
         // 쿠키 변경
         var cookie = new Cookie()
         {
             Name = "au_id",
             Value = "46ab59d1c8df2f13-60d138d218b3c512c64-3514",
             Domain = ".www.mina-gram.com",
             Path = "/", // 쿠키 경로
             Expires = null
         };

         await cookieManager.SetCookieAsync("https://www.mina-gram.com", cookie);
         #endregion

         foreach (var data in cookies)
         {
             if (data.Name == "au_id")
             {
                 Debug.WriteLine($"이름: {data.Name}, 값: {data.Value}, 도메인: {data.Domain}, path: {data.Path}");
             }
         }
     }
 }