当前位置:首页 > 大杂烩 > 正文内容

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

高老师7年前 (2017-09-23)大杂烩2679

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

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

//精简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;
}
//合并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;


}	

扫描二维码推送至手机访问。

版权声明:本文由高久峰个人博客发布,如需转载请注明出处。

本文链接:https://blog.20230611.cn/post/501.html

分享给朋友:

“c#合并cookies,.net合并cookies,c#更新cookies,” 的相关文章

c#中string和StringBuilder效率对比

c#中string和StringBuilder效率对比

    c#中string和StringBuilder直接看看执行速度。(2).String类型累计赋值Test               ...

svn自动更新到网站

svn自动更新到网站

【一】.钩子文件的设置和创建(1).打开hooks目录,可以看到有一个post-commit.tmpl文件,这是一个模板文件。复制一份,重命名为post-commit,将其用户组设为www,并设置为可执行。chown www:www post-commitchmod +x post-commit(2...

Git本地仓库学习

Git本地仓库学习

1.全局用户信息设置 git  config  --global  user.name  gaojiufeng git  config  --global  user.email  392223903...

Git推送文件到远程仓库

Git推送文件到远程仓库

1.远程仓库的协作模式开发者把自己最新的版本推到线上仓库,同时把线上仓库的最新代码,拉到自己本地即可2.注册git帐号国外: http://www.github.com国内: http://git.oschina.net2.在码云创建项目,不要初始化readmegit push https://gi...

Git日志查看和版本切换

Git日志查看和版本切换

日志查看:git log版本切换:方式1:git  reset  --hard  HEAD^   倒退一个版本git  reset  --hard  HEAD^^  倒退两个版本方式2:(版本号的形式,建议版本号码补充完...

c#关闭计算机的代码

c#关闭计算机的代码

    1.关机Process.Start("shutdown", "-s -t 0");    2. 注销  Proc...