我们都知道,不管你是做爬虫也好,采集工具也罢,它们的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, , ); // 接下来就是设置访问的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= 包含完整的组件下载,使用教程,心得和源代码分享

SuperWebClient -一个基于CURL的.NET HTTP/HTTPS模拟神组件(1)的更多相关文章

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

    今天我们讨论SuperWebClient组件使用中的几个简单主题 1: UserAgent2: Cookies3: POST登录 1:UserAgent这个是客户端标识信息,此信息是用于鉴别正在访问W ...

  2. 一个基于nodejs,支持http/https的中间人(MITM)代理,便于渗透测试和开发调试。

    源码地址:https://github.com/wuchangming/node-mitmproxy node-mitmproxy node-mitmproxy是一个基于nodejs,支持http/h ...

  3. 手把手写一个基于Spring Boot框架下的参数校验组件(JSR-303)

    前言 之前参与的新开放平台研发的过程中,由于不同的接口需要对不同的入参进行校验,这就涉及到通用参数的校验封装,如果不进行封装,那么写出来的校验代码将会风格不统一.校验工具类不一致.维护风险高等其它因素 ...

  4. Yoshino: 一个基于React的可定制化的PC组件库

    Github: https://github.com/Yoshino-UI... Docs: https://yoshino-ui.github.io/#/ Cli-Tool: https://git ...

  5. 【原创】强撸基于 .NET 的 Redis Cluster 集群访问组件

    Hello 大家好,我是TANZAME,我们又见面了.今天我们来聊聊怎么手撸一个 Redis Cluster 集群客户端,纯手工有干货,您细品. 随着业务增长,线上环境的QPS暴增,自然而然将当前的单 ...

  6. 模拟登录神器之PHP基于cURL实现自动模拟登录类

    一.构思 从Firefox浏览器拷贝cURL命令(初始页.提交.提交后) 自动分析curl形成模拟登录代码 默认参数:ssl/302/gzip 二.实现 接口 (一)根据curl信息执行并解析结果 p ...

  7. 简单的php基于curl的反向代理程序

    起因: 经理:需要实现一个反向代理? 我:  简单,nginx分分钟配置好. 经理:嗯?没有nginx? 我: nodejs也行啊,网上有例子分分钟搞定. 经理:嗯?只有虚拟主机,只能上传php程序? ...

  8. SDKMAN一个基于命令行界面的SDK用户环境管理程序

    1.背景 使用过Python开发的朋友,应该了解到Python2和Python3语法的差异,有时候从网上下载了基于不同解释器的代码,要来回切换版本, 使用起来不是很方便,有时候甚至很麻烦.于是有人发明 ...

  9. psutil一个基于python的跨平台系统信息跟踪模块

    受益于这个模块的帮助,在这里我推荐一手. https://pythonhosted.org/psutil/#processes psutil是一个基于python的跨平台系统信息监视模块.在pytho ...

随机推荐

  1. 3)Java学习笔记:内部类

    什么是内部类 内部类是指在一个外部类的内部再定义一个类.内部类作为外部类的一个成员,并且依附于外部类而存在的.内部类可为静态,可用protected和private修饰(而外部类只能使用public和 ...

  2. Bagging和Boosting 概念及区别

    Bagging和Boosting都是将已有的分类或回归算法通过一定方式组合起来,形成一个性能更加强大的分类器,更准确的说这是一种分类算法的组装方法.即将弱分类器组装成强分类器的方法. 首先介绍Boot ...

  3. bootstrap-datepicker的简单使用

    先说datepicker. github上的地址是:https://github.com/eternicode/bootstrap-datepicker. 效果如下: 在bundle里面引用添加js ...

  4. 关于js中window.location.href,location.href,parent.location.href,top.location.href用法

    "window.location.href"."location.href"是本页面跳转 "parent.location.href"是上一 ...

  5. 封装bt轮播图淡入淡出效果样式

    <!--BT轮播图-->    <div data-ride="carousel" class="carousel slide carousel_inn ...

  6. JS基础知识:Javascript事件触发列表

    Javascript是一种由Netscape的LiveScript发展而来的原型化继承的基于对象的动态类型的区分大小写的客户端脚本语言,主要目的是为了解决服务器端语言. JavaScript使我们有能 ...

  7. Brackets - 强大免费的开源跨平台Web前端开发工具IDE (HTML/CSS/Javascript代码编辑器)

    Brackets 是一个免费.开源且跨平台的 HTML/CSS/JavaScript 前端 WEB 集成开发环境 (IDE工具).该项目由 Adobe 创建和维护,根据MIT许可证发布,支持 Wind ...

  8. Java 获取url参数

    1. 方式一:使用HttpServletRequest对象 String id = arg0.getParameter("id"); mv.addObject("id&q ...

  9. HTML <div> 和<span>

    HTML <div> 和<span> HTML 可以通过 <div> 和 <span>将元素组合起来. HTML 区块元素 大多数 HTML 元素被定义 ...

  10. BootstrapTable(附源码) Bootstrap结合BootstrapTable的使用,分为两种模试显示列表。

    引用的css: <link href="@Url.Content("~/Css/bootstrap.min.css")" rel="styles ...