前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >c#合并cookies,.net合并cookies,c#更新cookies,

c#合并cookies,.net合并cookies,c#更新cookies,

原创
作者头像
Thinker1024
发布2023-07-02 17:19:40
1850
发布2023-07-02 17:19:40
举报
文章被收录于专栏:编程语言的世界

小网站中我们curl模拟登陆可能只需要保存一个登陆成功的Cookies就等请求全站权限,但是对于大网站则不可以,不同接口生成的cookies可能不同。

最新在编写微信网页版winform请求。需要将登陆的cookies更新内容特别整理。

代码语言:javascript
复制
//精简Cookie将自动去掉\r\n换行符号,path,expires,domain,去重复等多余选项
internal static string GetSmallCookie(string strcookie)
{
    string result;
    if (string.IsNullOrWhiteSpace(strcookie))
    {
        result = string.Empty;
    }
    else
    {
        List<string> list = new List<string>();
        string[] array = strcookie.ToString().Split(new string[]
        {
            ",",
            ";"
        }, StringSplitOptions.RemoveEmptyEntries);
        string[] array2 = array;
        for (int i = 0; i < array2.Length; i++)
        {
            string text = array2[i];
            string text2 = text.ToLower().Trim().Replace("\r\n", string.Empty).Replace("\n", string.Empty);
            if (!string.IsNullOrWhiteSpace(text2))
            {
                if (text2.Contains("="))
                {
                    if (!text2.Contains("path="))
                    {
                        if (!text2.Contains("expires="))
                        {
                            if (!text2.Contains("domain="))
                            {
                                if (!list.Contains(text))
                                {
                                    list.Add(string.Format("{0};", text));
                                }
                            }
                        }
                    }
                }
            }
        }
        result = string.Join(";", list);
    }
    return result;
}
代码语言:javascript
复制
//合并Cookie的方法,参数请先使用GetSmallCookie()过滤后使用
public static string updateCookie(string oldcookie, string newcookie)
{
    List<string> oldcookielist = new List<string>();
    if (oldcookie.Contains(";"))
        oldcookielist = new List<string>(oldcookie.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries));
    else
        oldcookielist.Add(oldcookie);

    List<string> newcookielist = new List<string>();
    if (newcookie.Contains(";"))
        newcookielist = new List<string>(newcookie.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries));
    else
        newcookielist.Add(newcookie);

    foreach (string cookie in newcookielist)
    {
        //Console.WriteLine("cookie:" + cookie);
        if (!string.IsNullOrWhiteSpace(cookie))
        {
            if (!string.IsNullOrWhiteSpace(cookie.Split('=')[1])) //判断cookie的value值是为空,不为空时才进行操作
            {
                bool isFind = false; //判断是否是新值
                for (int i = 0; i < oldcookielist.Count; i++)
                {
                    if (cookie.Split('=')[0] == oldcookielist[i].Split('=')[0])
                    {
                        //oldcookielist[i].Split('=')[1] = cookie.Split('=')[1];
                        oldcookielist[i] = cookie;
                        isFind = true;
                        break;
                    }
                }

                if (!isFind) //如果计算后还是false,则表示newcookie里出现新值了,将新值添加到老cookie里
                    oldcookielist.Add(cookie);
            }
        }
    }

    oldcookie = string.Empty;

    for (int i = 0; i < oldcookielist.Count; i++)
        oldcookie += oldcookielist[i] + ";";

    return oldcookie;


}	

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档