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

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

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

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

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

查看: 7394|回复: 3

[HttpHelper] cookie问题【已解决】

[复制链接]
发表于 2016-6-16 23:06:16 | 显示全部楼层 |阅读模式
做了一个模拟登录的但是一直不能把cookie携带进去,实在搞晕了,求助代码如下
[C#] 纯文本查看 复制代码
        HttpHelper http = new HttpHelper();
        HttpItem item = new HttpItem();
        string cookie = "";
//自动使用
        private void Form1_Load(object sender, EventArgs e)
        {
            pictureBox1.Image = getImg();
        }
        //发送数据
        private void button2_Click(object sender, EventArgs e)
        {
            textBox2.Text = gethtml();
        }
//获取图片
        private Image getImg()
        {
            item = new HttpItem()
            {
                URL = "http://127.0.0.1/validate.aspx?t="+DateTime.Now,
                Method = "get",//URL     可选项 默认为Get 
                Timeout = 50000,//连接超时时间     可选项默认为100000  
                ReadWriteTimeout = 30000,//写入Post数据超时时间     可选项默认为30000  
                ContentType = "text/html",// 设置cookie类型
                Accept = "*/*",
            };
            //返回cookie
            HttpResult result = http.GetHtml(item);
            string coo = result.Cookie;
            coo = HttpHelper.GetSmallCookie(coo);
            cookie = coo;
            //变成图片
            Image img = http.GetImage(item);
            return img;
        }
        private string gethtml()
        {
            string coo = cookie;
            //获取方框内的数值
            string abc = textBox1.Text.Trim();
            //创建Httphelper参数对象
            item = new HttpItem()
            {
                URL = "http://127.0.0.1/json/dologinc.aspx?",//URL     必需项    
                Method = "post",//URL     可选项 默认为Get 
                ContentType = "application/x-www-form-urlencoded",
                Timeout = 50000,//连接超时时间     可选项默认为100000  
                ReadWriteTimeout = 30000,//写入Post数据超时时间     可选项默认为30000  
                IsToLower = false,//得到的HTML代码是否转成小写     可选项默认转小写
                Cookie = coo,
                Referer = "http://127.0.0.1/bgim/account/login.htm", //来源
                Postdata = "VerifyCode=" + abc + "name=admin&password=admin&isSec=0&cid=0&systemversion=4_4",//Post要发送的数据
                PostDataType = PostDataType.String,
            };
            HttpResult result = http.GetHtml(item);
            MessageBox.Show(result.Cookie, coo); //消息箱子打印出对比
            string html = result.Html;
            return html;
        }


楼主是自学,如果有基础错误也麻烦指导一下.
按照我自己的想法 应该是 result.Cookie 跟coo应该是相同的,但是post过去的cookie一直都是错的 返回的也一直是验证码错误



1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
 楼主| 发表于 2016-6-17 05:07:29 | 显示全部楼层
找到问题了。。get了两次,cookie早变了。
发表于 2016-6-17 08:27:49 | 显示全部楼层
Cookie只能获取一次,而且每次提取验证码要带上这个Cookie
第一先访问登录界面,获取Cookie
第二带上Cookie提取验证码
第三带上Cookie和验证码一起提交
记着这个Cookie必须是第一步获取的不能改变,否则就不是一个会话了,就好比你在你电脑上获取一个验证码,我在我电脑上也打开这个登录界面,录入你获取的验证码一样,那是没任何用的。
保证是同一个人,同一个会话的基础就是Cookie要相同
 楼主| 发表于 2016-6-17 11:11:09 | 显示全部楼层
站长苏飞 发表于 2016-6-17 08:27
Cookie只能获取一次,而且每次提取验证码要带上这个Cookie
第一先访问登录界面,获取Cookie
第二带上Cook ...

是的,谢谢老大已经解决问题了,他是登录页面有一个cookie 验证码又有一个不一样的,我把他们都放一起就覆盖了,用+= 连起来一起post过去就解决了,
现在在研究爬数据的问题了,老大结贴吧
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

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

GMT+8, 2024-11-23 13:38

© 2014-2021

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