cgbsmy 发表于 2022-11-17 11:55

关于cookie问题,为什么你们备份了不能用,找到了解决方法

本帖最后由 cgbsmy 于 2022-11-17 21:17 编辑

1.复制cookie时要选择复制而不能直接复制值,因为有字符要转义
2.你们复制的时候都是没有带domain,所以在使用cookie时签到不能用,比如52pj
3.为什么有些论坛想退出账号不行,因为恢复cookie时,bbs.级无法访问到www.级,同第2点
4.京东或淘宝一下子过期的,可以把备份的再恢复cookie刷新页面,马上又可以使用了


void SetCookie(LPCWSTR uri, LPWSTR lpCookie)
{
      if (webviewWindow2)
      {
                if (cookieManager)
                {
//            cookieManager->DeleteAllCookies();
                        LPWSTRcStart = lpCookie;
                        while (cStart)
                        {
                              LPWSTR cValue = lstrstr(cStart, L"=");
                              if (cValue > cStart && cValue != NULL)
                              {
                                        cValue = L'\0';
                                        LPWSTR cName = cStart;
                                        cValue += 1;
                                        cStart = lstrstr(cValue, L"; ");
                                        if (cStart != NULL)
                                        {
                                                cStart = L'\0';
                                                cStart += 2;
                                        }
                  LPWSTR cUri = lstrstr(cValue, L" ");
                  if (cUri)
                  {
                        cUri = L'\0';
                        cUri += 1;
                  }
                                        wil::com_ptr<ICoreWebView2Cookie> cookie;
                  if(cUri)
                                          cookieManager->CreateCookie(cName, cValue, cUri, L"/", &cookie);
                  else
                        cookieManager->CreateCookie(cName, cValue, uri, L"/", &cookie);
                                        cookieManager->AddOrUpdateCookie(cookie.get());
                              }
                              else
                                        cStart = NULL;
                        }
                }
      }
}
void ViewCookie(LPWSTR wUri)
{
    std::wstring uri = wUri;
    HWND hWnd = hWeb;
      if (cookieManager)
      {
                cookieManager->GetCookies(uri.c_str(),
                        Callback<ICoreWebView2GetCookiesCompletedHandler>(
                              (HRESULT error_code, ICoreWebView2CookieList* list) -> HRESULT {
                                        std::wstring result,result1;
                                        UINT cookie_list_size;
                                        list->get_Count(&cookie_list_size);
                                        if (cookie_list_size == 0)
                                        {
                                                result += L"No cookies found.";
                                        }
                                        else
                                        {
                                                result = L"<input type='button' id='copy' onclick=document.getElementById('cookie').select();document.execCommand('copy');alert('已复制'); value='复制' /><textarea id='cookie' style='width:100%;height:39%;'>";
                        result1 = L"<input type='button' id='copy' onclick=document.getElementById('domain').select();document.execCommand('copy');alert('已复制'); value='复制带Domain' /><textarea id='domain' style='width:100%;height:55%;'>";
                        for (UINT i = 0; i < cookie_list_size; ++i)
                                                {
                                                      wil::com_ptr<ICoreWebView2Cookie> cookie;
                                                      list->GetValueAtIndex(i, &cookie);
                                                      if (cookie.get())
                                                      {
                                                                wil::unique_cotaskmem_string domain;
                                                                cookie->get_Domain(&domain);
                                                                wil::unique_cotaskmem_string name;
                                                                cookie->get_Name(&name);
                                                                wil::unique_cotaskmem_string value;
                                                                cookie->get_Value(&value);
                              result += name.get();
                              result += L"=";
                              result += value.get();
                                                                result1 += name.get();
                                                                result1 += L"=";
                                                                result1 += value.get();
                              result1 += L" ";
                              result1 += domain.get();
                                                                if (i != cookie_list_size - 1)
                                                                {
                                                                        result += L"; ";
                                    result1 += L"; ";
                                                                }
                                                      }
                                                }
                        result += L"</textarea><br/>";
                        result1 += L"</textarea>";
                        result += result1;
                        webviewWindow3->NavigateToString(result.c_str());
                                        }
                                        return S_OK;
                              })
                        .Get());
      }
}

RKCN 发表于 2022-11-18 23:37

buy360 发表于 2022-11-17 13:38
没太懂怎么使用的

同问,没太理解...

作者是想表达,从浏览器中复制出来的 cookie 实际上是没有 domain 的这个意思么?
至于作者提到的第 4 点,我就完全没有理解出来,如何恢复,即然已经过期,服务端还会正常识别么?

hhhh2333 发表于 2023-3-12 10:45

请教下1.2.3.9 没有这个功能啊。2.2.6.6点击XX秒后获取,左侧那个是不是要登录?或者输入什么值得买的个人中心网址,点击获取?什么值得买的网站不是进入个人中心获取cookie吗?
搞迷糊了,自己在浏览器F12看的和软件获取的不一样。{:1_924:}

wmsj666 发表于 2022-11-17 12:31

感谢分享

buy360 发表于 2022-11-17 13:38

没太懂怎么使用的

KSPprince 发表于 2022-11-17 13:52

谢谢分享

lvcaolhx 发表于 2022-11-17 14:16

楼主发个成品吧

lhp462 发表于 2022-11-17 14:20

感谢楼主,学到了

yingchengfeng 发表于 2022-11-17 16:30


谢谢分享

NINE09 发表于 2022-11-17 16:36

谢谢分享

bjznhxy 发表于 2022-11-17 16:56

感谢分享

kj20220228 发表于 2022-11-17 17:17

跟我 之前遇到的问题一样,不过已经解决了
页: [1] 2
查看完整版本: 关于cookie问题,为什么你们备份了不能用,找到了解决方法