http://www.sufeinet.com/plugin.php?id=keke_group

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

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

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

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

查看: 4953|回复: 1

[求助] 1.8net2.0 处理多级域名的cookies的问题

[复制链接]
发表于 2017-8-26 18:34:58 | 显示全部楼层 |阅读模式
各位高手,苏飞,你们好:

我用HttpHelper 1.8版本(net2.0)下模拟登录的时候出现cookies不能自动增加到下一个访问页面的cookies中去。

我的例子:第一个页面,域名为:https://xui.ptlogin2.qq.com
                                   返回的cookies有域名为xui.ptlogin2.qq.com,和ptlogin2.qq.com 2种domain的。

               当访问第二个页面的时候:https://ssl.ptlogin2.qq.com,上一个页面返回的domain为ptlogin2.qq.com的cookies并没有自动添加到cookies中去。

               代码我是这样处理的(一直使用该类,也没遇到这样的问题):

[C#] 纯文本查看 复制代码

public CookieCollection cookies = new CookieCollection();

rv = vp.vpage(cookies, link, referer, new string[] { "" });
                if (!rv.status)
                {
                    logerror("打开登录界面失败了。" + rv.msg);
                    return rv;
                }

cookies.Add(rv.cookies); //每访问一个页面都会把返回的cookies增加到cookies中去
rv = vp.vpage(cookies, link, referer, new string[] { "" }, "*/*");
                if (!rv.status)
                {
                    logerror("检查失败了。" + rv.msg);
                    return rv;
                }



下面是vpage的方法,输出的cookies数量是正确的。:

public HttpReturnValue vpage(CookieCollection cookies, string link, string referer, string[] needstr,string accept=null)
        {
            HttpReturnValue rv = new HttpReturnValue();
            rv.status = false;
            try
            {
                PageVisit pv = new PageVisit();
                HttpItem hi = new HttpItem();
                hi.URL = link;
                if (cookies != null)
                {
                    log.Info("当前cookies数量:" + cookies.Count); //这里输出的数量是正确的
                    hi.CookieCollection = cookies;
                }

                if (!string.IsNullOrEmpty(referer))
                {
                    hi.Referer = referer;
                }

                hi.UserAgent = AllUa.ua;
                if (accept == null)
                {
                    hi.Header.Add("upgrade-insecure-requests", "1");
                    hi.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*; q=0.8";

                }
                else
                {
                    hi.Accept = accept;

                }

                hi.Header.Add("Accept-Encoding", "gzip, deflate, br");
                hi.Header.Add("Accept-Language", "zh-CN,zh;q=0.8");
                HttpReturnValue rvv = pv.visitPageReturnHtmlAndCookiesV2(hi, needstr, null, 0, 3, null);

                return rvv;


            }
            catch (Exception e)
            {
                rv.status = false;
                rv.msg = e.ToString();
                log.Error(e.ToString());
                return rv;
            }

        }



访问第一个页面返回的cookies:
页面1.PNG

访问第二个页面没有附带上第一个页面访问的cookies,多个一个是我添加的。
[C#] 纯文本查看 复制代码
Cookie ck1 = new Cookie();
            ck1.Name = "_qpsvr_localtk";
            ck1.Value = ""+mr.functionMathRandom();
            ck1.Domain = ".qq.com";
            ck1.Path = "/";
            q.cookies.Add(ck1);


页面2.PNG


1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
发表于 2017-8-28 08:20:54 | 显示全部楼层
用,.CookieContainer 试试
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

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

GMT+8, 2024-12-22 18:57

© 2014-2021

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