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

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

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

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

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

查看: 12031|回复: 7

[教程] 使用Httphelper无视证书的例子|2012-09-27更新报告

[复制链接]
发表于 2012-9-27 09:57:48 | 显示全部楼层 |阅读模式
阅读导航
---------------------------------------------------------------------------------------------------------------
C#Httphelper类下载

更新报告
---------------------------------------------------------------------------------------------------------------
这个跟以前的相比使用上并没有多大变化
首先修改一下HttpItem类增加如下代码
[C#] 纯文本查看 复制代码
  string _CerPath = string.Empty;
        /// <summary>
        /// 证书绝对路径
        /// </summary>
        public string CerPath
        {
            get { return _CerPath; }
            set { _CerPath = value; }
        }

大家看一下验证代码
[C#] 纯文本查看 复制代码
 #region 验证证书

            if (!string.IsNullOrEmpty(objhttpItem.CerPath))
            {
                //这一句一定要写在创建连接的前面。使用回调的方法进行证书验证。
                ServicePointManager.ServerCertificateValidationCallback =
                    new System.Net.Security.RemoteCertificateValidationCallback(CheckValidationResult);

                //初始化对像,并设置请求的URL地址
                request = (HttpWebRequest)WebRequest.Create(GetUrl(objhttpItem.URL));
                //创建证书文件
                X509Certificate objx509 = new X509Certificate(objhttpItem.CerPath);
                //添加到请求里
                request.ClientCertificates.Add(objx509);
            }
            else
            {
                //初始化对像,并设置请求的URL地址
                request = (HttpWebRequest)WebRequest.Create(GetUrl(objhttpItem.URL));
            }
            #endregion


CheckValidationResult方法如下:
[C#] 纯文本查看 复制代码
  //回调验证证书问题
        public bool CheckValidationResult(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors)
        {
            // 总是接受    
            return true;
        }

例子
---------------------------------------------------------------------------------------------------------------
这个和以前的使用方法没有多大分别,只是加了一个参数看下面方法
[C#] 纯文本查看 复制代码
 objHttpItem.URL ="https://sufeinet.com";
            objHttpItem.Encoding = "gb2312";
            objHttpItem.Method = "GET";
            objHttpItem.Referer = "http://sufeinet.com";
            objHttpItem.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:15.0) Gecko/20100101 Firefox/15.0.1";
            objHttpItem.ContentType = "text/html";
            objHttpItem.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
            //objHttpItem.CerPath = "D:\\123.cer";

            //登录sufeinet.com
            string html = objhttp.GetHtml(objHttpItem);
            //取得登录后的Cookie
            objHttpItem.Cookie = objhttp.cookie;

本帖被以下淘专辑推荐:



1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
发表于 2012-10-21 23:00:23 | 显示全部楼层
POST时,未将对象引用设置到对象的实例????
发表于 2012-10-25 16:32:00 | 显示全部楼层
see,3q
发表于 2013-4-25 13:55:50 | 显示全部楼层
证书绝对路径
需要真实存在一个证书吗?证书怎么生成?多个网站能共用一个证书吗?
 楼主| 发表于 2013-4-25 13:58:15 | 显示全部楼层
ZZG 发表于 2013-4-25 13:55
证书绝对路径
需要真实存在一个证书吗?证书怎么生成?多个网站能共用一个证书吗?

我的类是无视证书的,你随便找一个就行,但一定要保证证书的格式是正确的就行了
发表于 2013-4-25 14:14:51 | 显示全部楼层
直接用记事本重命名一个可以吧?不行的话能传一个下载的吗? HttpHelper http = new HttpHelper();
            HttpItem item = new HttpItem();
            item.URL = Url;
            item.Encoding = Encoding.GetEncoding(EncodingFormat.ToUpper());  //得到HTML代码
            HttpResult result = http.GetHtml(item);
            //取出返回的Cookie
            string cookie = result.Cookie;
            //返回的Html内容
            string html = result.Html;
            if (result.StatusCode == System.Net.HttpStatusCode.OK)
            {
                //表示访问成功,具体的大家就参考HttpStatusCode类
            }
            //表示StatusCode的文字说明与描述
            string statusCodeDescription = result.StatusDescription;

            return html;

我是这样调用的,没有指定证书的路径。不知道行不行?
 楼主| 发表于 2013-4-25 14:31:22 | 显示全部楼层
ZZG 发表于 2013-4-25 14:14
直接用记事本重命名一个可以吧?不行的话能传一个下载的吗? HttpHelper http = new HttpHelper();
       ...

没有写证书肯定不行啊,我上面写的很清楚格式必须正确,记事本和证书的格式能一样吗?肯定是不行的啊,你网上找找下载吧,这边提供不了。
发表于 2014-9-5 11:39:56 | 显示全部楼层
顶楼主,顶顶顶
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

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

GMT+8, 2024-11-24 12:13

© 2014-2021

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