苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 14809|回复: 2

[反馈建议] 关于IsUpdateCookie和Cookiet处理的一点意见

[复制链接]
发表于 2022-12-6 00:27:09 | 显示全部楼层 |阅读模式
我不知道管理员是否还一直在更新程序,我也是前不久才购买的,研究了一下。总觉得在Cookie的一些处理上不太合理。既然都买了,也在用着,我看论坛都没什么人了。也提点意见吧。1、IsUpdateCookie
这个功能,总觉得好鸡肋,直接把 String 的 Cookie 和 CookieCollection 相等了。在实际的运用过程中,至少在我实际运用的过程中,几乎从来没用过这种做法,除非该请求本身不带Cookie,这样操作无可厚非。但如果本身就有Cookie呢?
举例
[C#] 纯文本查看 复制代码
signinfo=4655aadasdfasdf3asfasdf
PHPSESSID=eedfefasdfadsfefasdfdas

这是请求时 String Cookie,当我请求后,Response的Header有一个 Set-Cookie 项,内容为
[C#] 纯文本查看 复制代码
PHPSESSID=abcdefghijklmn

,那么,IsUpdateCookie 的功能应该是把请求时带的 Cookie 的 【PHPSESSID】项修改为 Response.Headers["Set-Cookie"] 的对应的值,那么更新后 Cookie 的值就应该为
[C#] 纯文本查看 复制代码
signinfo=4655aadasdfasdf3asfasdf
PHPSESSID=abcdefghijklmn

这样我觉得才是应该的。

2、GetMergeCookie
这个就有点和我刚才说的那个差不多了。这里有一个去重,但去的是整个item,如果按照我的上一个例 ,那么同样会出现2个 PHPSESSID,这里是不是去重也要判断一下?或者定义一下Cookie的Name?如果相同,则保留 Cookie2 的对应的值?

[C#] 纯文本查看 复制代码
internal static string GetMergeCookie(string cookie1, string cookie2)
        {
            if (string.IsNullOrWhiteSpace(cookie1))//新的是空的
            {
                return cookie2;//返回老的
            }
            if (string.IsNullOrWhiteSpace(cookie2))//老的是空的
            {
                return cookie1;//返回新的
            }
            List<string> cookielist = new List<string>();//结果
            string[] list_1 = cookie1.ToString().Split(';');
            string[] list_2 = cookie2.ToString().Split(';');
            foreach (string item in list_1)
            {
                //排除重复项
                if (cookielist.Contains(item)) continue;
                //对接Cookie基本的Key和Value串
                cookielist.Add(string.Format("{0} ", item.Trim()));
            }
            foreach (string item in list_2)
            {
                //排除重复项
                if (cookielist.Contains(item)) continue;
                //对接Cookie基本的Key和Value串
                cookielist.Add(string.Format("{0}", item));
            }
            return string.Join(";", cookielist);
        }


当然,以上两个问题,要自己来解决都很简单,没有难度,处理一下就好了。但总归这整套一直在更新,自己写的这些方法,等下一次更新,又要自己来改一次,难免有点麻烦,所以想请管理员瞅瞅,看下次更新的时候,可否把上述问题看如何解决一下?如果说得不好或不对的地方,还请见谅。


1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
发表于 2022-12-15 10:20:15 | 显示全部楼层
第一个的意思就是更新为新的Cookie,这个不是合并两个Cookie,应用场景还是很多的,如果是合并要吧自己来维护,这里我建议还是先保持

第二个问题确实会存在你说的问题,这个稍后的更新,我会处理一下。会以Key值做为判断保留第二个list的值,
发表于 2023-5-15 14:03:22 | 显示全部楼层
遇到重复 且需要更新 我也是自己处理的 这个应该完善下
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-12-25 02:54

© 2014-2021

快速回复 返回顶部 返回列表