SuperWebClient -一个基于CURL的.NET HTTP/HTTPS模拟神组件(1)

 我们都知道,不管你是做爬虫也好,采集工具也罢,它们的HTTP/HTTPS模拟访问总是一个基础问题,
我估计有很多人和我一样,虽然这样,那样的内置或是第三方类库用了很多,却总是会有一些不如意的问题存在,
亦或是BUG,或是其它功能上的缺陷,今天我给大家带来一份礼物,也是我多年工作和软件开发累计的结晶之一
SuperWebClient,它是基于C语言的老牌开源协议模拟库CURL,我想做PHP的同学不会陌生,玩LINUX类系统的
同学也不会陌生。
       我也做了很长时间的采集工具平台软件,所以对所有对此有需求的同学所遇到的种种问题也是深有体会,不过
有了我今天带来的这个小玩意,相信,你将不会在头疼。SuperWebClient是基于-C语言老牌的CURL库+LIBCURL.NET
的.NET封装,不过LIBCURL.NET这个开源作者已经很久没有更新,我的工作也是站在前人的结晶上进行一些深度的改进
和组装,以期达到自己用起来简单,方便,称手,我也在长时间的使用和打磨,所以现在已经很稳定,也非常高效
,当然,你需要自己引入到你的项目中使用才能感受它的好处。
        作为这个主题的开篇,我演示一段使用SuperWebClient的代码,非常的简单.

 private void button1_Click(object sender, EventArgs e)
        {
            // 首先构建一个 嗨 对象-也就是模拟访问的输入对象
            HttpInput hi = new HttpInput();
            // 需要初始化这个hi,设置是否启用HTTP 1.1,后面是连接和传输超时设定(秒)
            HttpManager.Instance.InitWebClient(hi, true, 60, 60);

            // 接下来就是设置访问的URL,和其它譬如UserAgent,Cookies,Proxy....等等各种特性的设置
            // 一般,我们就设置Url 访问路径,其它都是在有需要的时候设置就可以了
            hi.Url = "http://www.cnblogs.com";
            // 有输入对象,就有对应的输出对象-注意,这个方法是阻塞的,只到结果反馈回来
            // 所以,你可以把代码放入独立的线程或是线程池中进行数据的采集
            HttpOutput ho = HttpManager.Instance.ProcessRequest(hi);
            if (ho.IsOK)
            {
                // 如果HO的标志IsOK成立,则页面访问是成功的,否则就是页面访问失败
                // 遇到失败-你可以自己做后续处理,比如重发起请求或是写LOG
                richTextBox1.Text = ho.TxtData;
            }
            else
            {
                richTextBox1.Text = "页面访问错误";
            }

            // 最后销毁对象
            hi.Dispose();

        }

工程引入

所有的操作已经完成,点击按钮,获得操作结果

是不是很简单,相信有了这个小组件,相关的工作将会变的很轻松!主要注意的是,由于底层是基于C的库,所以发布的项目需要包含msvcr100d.dll 这个C的运行期库一起,

后面我会通过一系列实例教程,来教大家分析协议,抓包,并使用SuperWebClient模拟组件的其它个方面。
有任何问题可以 QQ群 180686092 交流

附件下载 http://www.csharpworker.com/forum.php?mod=viewthread&tid=3&extra= 包含完整的组件下载,使用教程,心得和源代码分享

原文地址:https://www.cnblogs.com/bytekiller/p/SuperWebClient.html