苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

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

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

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

查看: 5072|回复: 3

[HttpHelper] Dz论坛登录 获取验证码的时候 2次返回的cook一样 应该不一样

[复制链接]
发表于 2016-11-3 09:37:01 | 显示全部楼层 |阅读模式
post登录dz论坛测试了一下 获取验证码的时候 2次请求应该不一样 但是实际获取的确是一样的老大 这是什么情况  附上源码
[C#] 纯文本查看 复制代码
 string formhash;
        string loginHash;
        string secondHash;
        string cookiesQian;
        public Form1()
        {

            InitializeComponent();
            HttpHelper help = new HttpHelper();
            HttpItem item = new HttpItem()
            {
                URL = "http://data.loulanpo.com/member.php?mod=logging&action=login",
                Method = "get",
                ContentType = "text/html; charset=gbk",
            };

            HttpResult result = help.GetHtml(item);
            string html = result.Html;
            cookiesQian = result.Cookie;
            string idhash = HttpHelper.GetBetweenHtml(html, "<span id=\"seccode_", "\"></span>");
            formhash = HttpHelper.GetBetweenHtml(html, "<input type=\"hidden\" name=\"formhash\" value=\"", "\" />");
            loginHash = HttpHelper.GetBetweenHtml(html, "loginhash=", "\"");
            secondHash = HttpHelper.GetBetweenHtml(html, "<span id=\"seccode_", "\"></span>");
            string sssss = ConvertDateTimeInt(DateTime.Now);
            HttpItem itemQian = new HttpItem()
            {
                URL= "http://data.loulanpo.com/misc.php?mod=seccode&action=update&idhash="+idhash+"&"+ ConvertDateTimeInt(DateTime.Now) + "&modid=member::logging",
                Referer = "http://data.loulanpo.com/member.php?mod=logging&action=login",
                Accept= "application/javascript, */*;q=0.8",
                UserAgent= "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko",
                Host = "data.loulanpo.com",
                Method ="GET",                
                Cookie =cookiesQian,
            };
            HttpResult resultQian = help.GetHtml(itemQian);
            string update = HttpHelper.GetBetweenHtml(resultQian.Html, "height=\"30\" src=\"", "\" class=");
            cookiesQian = itemQian.Cookie;
            HttpItem image1 = new HttpItem()
            {
                URL = "http://data.loulanpo.com/" + update,
                Referer = "http://data.loulanpo.com/member.php?mod=logging&action=login",
                Method = "GET",//URL  可选项 默认为Get   
                ContentType = "image/png",
                Accept = "image/png, image/svg+xml, image/*;q=0.8, */*;q=0.5",
                UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko",
                Host = "	data.loulanpo.com",
                Cookie = cookiesQian,
            };
            string collesi = image1.Cookie;
            this.pictureBox1.Image = help.GetImage(image1);
            HttpResult xxxxx = help.GetHtml(image1);
            string ddddd= xxxxx.Html;
        }
        
        /// <summary>
        /// 将c# DateTime时间格式转换为Unix时间戳格式
        /// </summary>
        /// <param name="time">时间</param>
        /// <returns>long</returns>
        public static string ConvertDateTimeInt(System.DateTime time)
        {
            //double intResult = 0;
            System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1, 0, 0, 0, 0));
            long t = (time.Ticks - startTime.Ticks) / 10;
            string s = "0." + t.ToString();
            return s;
        }


下面是post的cookies图片
1.jpg 2.jpg


1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
发表于 2016-11-3 09:47:45 | 显示全部楼层
单纯验证码同一台电脑两次获取一样很正常,服务端应该是把你两次当成了一个会话,还有一种情况就是“Cookie本身是在登录页面产生的,你只访问验证码页面是不会变化的。
 楼主| 发表于 2016-11-3 09:54:38 | 显示全部楼层
站长苏飞 发表于 2016-11-3 09:47
单纯验证码同一台电脑两次获取一样很正常,服务端应该是把你两次当成了一个会话,还有一种情况就是“Cookie ...

用的代码获取的是一样的 但是用的浏览器抓包就会看到其实第一次和第二次的Cookies是不一样的  
老大
这个问题我需要怎么解决那 ?
发表于 2016-11-3 10:28:07 | 显示全部楼层
908811288 发表于 2016-11-3 09:54
用的代码获取的是一样的 但是用的浏览器抓包就会看到其实第一次和第二次的Cookies是不一样的  
老大
...

浏览器和直接Get或者Post的原理都不一样,不能一概而论,你直接使用登录页面Cookie,先获取登录页面Cookie,再拿这个Cookie获取验证码,这样就不需要关心验证码页面Cookie了
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

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

GMT+8, 2024-12-29 02:00

© 2014-2021

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