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

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

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

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

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

查看: 21001|回复: 11

[教程] 【万能框架教程】- CookieCollection类型Cookie使用方法

[复制链接]
发表于 2014-9-9 14:49:33 | 显示全部楼层 |阅读模式
导读部分

【HttpHelper万能框架】教程目录贴  http://www.sufeinet.com/thread-9989-1-1.html


教程部分


Cookie是一个存储在客户端,用由服务端验证的东西。这个具体的功能我就不多说了。大家可以去百度
像需要登录,需要验证的网站,都是需要带有Cookie才可以访问的。
下面咱们就一起来看看在万能框架中是怎么样使用Cookie的。
本文主要是介绍使用CookieCollection类型的Cookie方式

第一步引入命名空间
[C#] 纯文本查看 复制代码
using CsharpHttpHelper;
using CsharpHttpHelper.Enum;
using System.Net;


第二步,设置方法如下
[C#] 纯文本查看 复制代码
            //创建Httphelper对象
            HttpHelper http = new HttpHelper();
            //创建Httphelper参数对象
            HttpItem item = new HttpItem()
            {
                URL = "http://www.sufeinet.com",//URL     必需项    
                Method = "get",//URL     可选项 默认为Get   
                ContentType = "text/html",//返回类型    可选项有默认值   
                ResultCookieType = ResultCookieType.CookieCollection
            };
            //请求的返回值对象
            HttpResult result = http.GetHtml(item);
            //获取请求的Cookie
            CookieCollection cookie = result.CookieCollection;

            // 第二次使用Cookie

            //创建Httphelper参数对象
            item = new HttpItem()
            {
                URL = "http://www.sufeinet.com/thread-9989-1-1.html",//URL     必需项    
                Method = "get",//URL     可选项 默认为Get   
                ContentType = "text/html",//返回类型    可选项有默认值   
                CookieCollection = cookie,//把Cookie写入请求串中
                ResultCookieType = ResultCookieType.CookieCollection
            };
            //请求的返回值对象
            result = http.GetHtml(item);

            //获取Html
            string html = result.Html;


第一部分是模拟的登录或者是获取验证的问题,这个具体要怎么做,大家自己抓包实现,呵呵。

第二部分是带上上次获取到的Cookie然后进行第一次的请求。

[C#] 纯文本查看 复制代码
ResultCookieType = ResultCookieType.CookieCollection

这个是必须要设置的,这表示不使用字符串Cookie,将使用CookieCollection类型的Cookie,当然获取和写入时这一句都是必须,
如果不设置将默认使用字符串Cookie,即使是你写了
[C#] 纯文本查看 复制代码
CookieCollection = cookie

也是无效了,这点就谨记
大家也看到了这里不再是
Cookie=cookie而是
[C#] 纯文本查看 复制代码
CookieCollection = cookie

这点也请注意哦

本帖被以下淘专辑推荐:

  • · cookie|主题: 12, 订阅: 1


1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
发表于 2015-1-9 08:06:06 | 显示全部楼层
强烈支持楼主ing……
发表于 2015-2-27 09:45:02 | 显示全部楼层
强烈支持楼主ing……
发表于 2016-11-18 17:54:05 | 显示全部楼层
学习了!
回复

使用道具 举报

发表于 2018-7-27 11:59:44 | 显示全部楼层
本帖最后由 131415 于 2018-7-27 12:02 编辑

还是需要一个例子,测试后才能明白。
我在实际操作的时候,在窗口初始化的时候,获取验证码和cookie,但输入帐户密码点击登陆后,cookie不明白如何才能传递到登陆函数里,在登陆函数里提示“局部变量“cookie”在声明之前无法使用”
链接:http://www.sufeinet.com/thread-20045-1-1.html
发表于 2018-7-27 17:25:36 | 显示全部楼层
第一步是访问网站
第二步获取验证码
第三点点击登录,带Cookie的时候,提示cookie 局部变量,在声明前无法使用

1.png

 楼主| 发表于 2018-7-27 21:03:52 | 显示全部楼层
131415 发表于 2018-7-27 17:25
第一步是访问网站
第二步获取验证码
第三点点击登录,带Cookie的时候,提示cookie 局部变量,在声明前无 ...

把变量放到方法外定义
发表于 2018-7-28 10:19:41 | 显示全部楼层
sufeinet 发表于 2018-7-27 21:03
把变量放到方法外定义

问题就是在这,我有这思路,但没有具体的操作方法。下面这一句,还是不知道该往哪里放。CookieCollection = cookie,//把Cookie写入请求串中
[C#] 纯文本查看 复制代码
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using CsharpHttpHelper;
using CsharpHttpHelper.Enum;
using System.Net;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();

            //创建Httphelper对象
            HttpHelper http = new HttpHelper();
            //创建Httphelper参数对象
            HttpItem item = new HttpItem()
            {
                URL = "http://www.510376.com/tools/regcode.php?verify=08login&t=",//URL     必需项    
                Method = "get",//URL     可选项 默认为Get   
                ContentType = "text/html",//返回类型    可选项有默认值   
                ResultCookieType = ResultCookieType.CookieCollection
            };
            //请求的返回值对象
            HttpResult result = http.GetHtml(item);
            //获取请求的Cookie
            CookieCollection cookie = result.CookieCollection;

            
        }

        private void btnOK_Click(object sender, EventArgs e)
        {
            // 第二次使用Cookie
            HttpHelper http = new HttpHelper();
            //创建Httphelper参数对象
            HttpItem item = new HttpItem()
            {
                URL = "http://www.510376.com/index.php?/ajax/check_login/username/%E4%BF%A1%E9%98%B3%E8%AF%9A%E4%BF%A1%E4%BA%8C%E6%89%8B%E8%BD%A6/password/a123456/regcode/" + txtCode.Text.Trim() + "/verify/08login/expires/604800/cmslogin/1/datatype/json/domain/www.510376.com&callback=jQuery1102033559174329472374_1532680542340&_=1532680542341",//URL     必需项
                Method = "get",//URL     可选项 默认为Get   
                ContentType = "text/html",//返回类型    可选项有默认值   
                CookieCollection = cookie,//把Cookie写入请求串中
                ResultCookieType = ResultCookieType.CookieCollection
            };
            //请求的返回值对象
            HttpResult result = http.GetHtml(item);
            result = http.GetHtml(item);

            //获取Html
            txtHtml.Text = result.Html;
        }

    }
}


发表于 2018-7-28 10:22:28 | 显示全部楼层
sufeinet 发表于 2018-7-27 21:03
把变量放到方法外定义

如果放到外面,最终登录提交的时候还是需要这个变量。
要是两次请求都如你的例子放到一起,又无法获取输入的验证码的变量。
 楼主| 发表于 2018-7-28 11:21:29 | 显示全部楼层
131415 发表于 2018-7-28 10:22
如果放到外面,最终登录提交的时候还是需要这个变量。
要是两次请求都如你的例子放到一起,又无法获取输 ...

[C#] 纯文本查看 复制代码
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using CsharpHttpHelper;
using CsharpHttpHelper.Enum;
using System.Net;
 
namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
//获取请求的Cookie
CookieCollection cookie =null;

        public Form1()
        {
            InitializeComponent();
 
            //创建Httphelper对象
            HttpHelper http = new HttpHelper();
            //创建Httphelper参数对象
            HttpItem item = new HttpItem()
            {
                URL = "http://www.510376.com/tools/regcode.php?verify=08login&t=",//URL     必需项    
                Method = "get",//URL     可选项 默认为Get   
                ContentType = "text/html",//返回类型    可选项有默认值   
                ResultCookieType = ResultCookieType.CookieCollection
            };
            //请求的返回值对象
            HttpResult result = http.GetHtml(item);
            //获取请求的Cookie
 cookie = result.CookieCollection;
 
             
        }
 
        private void btnOK_Click(object sender, EventArgs e)
        {
            // 第二次使用Cookie
            HttpHelper http = new HttpHelper();
            //创建Httphelper参数对象
            HttpItem item = new HttpItem()
            {
                URL = "http://www.510376.com/index.php?/ajax/check_login/username/%E4%BF%A1%E9%98%B3%E8%AF%9A%E4%BF%A1%E4%BA%8C%E6%89%8B%E8%BD%A6/password/a123456/regcode/" + txtCode.Text.Trim() + "/verify/08login/expires/604800/cmslogin/1/datatype/json/domain/www.510376.com&callback=jQuery1102033559174329472374_1532680542340&_=1532680542341",//URL     必需项
                Method = "get",//URL     可选项 默认为Get   
                ContentType = "text/html",//返回类型    可选项有默认值   
                CookieCollection = cookie,//把Cookie写入请求串中
                ResultCookieType = ResultCookieType.CookieCollection
            };
            //请求的返回值对象
            HttpResult result = http.GetHtml(item);
            result = http.GetHtml(item);
 
            //获取Html
            txtHtml.Text = result.Html;
        }
 
    }
}


您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

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

GMT+8, 2024-11-22 06:57

© 2014-2021

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