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, , ); // 接下来就是设置访问的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)的更多相关文章
- SuperWebClient -一个基于CURL的.NET HTTP/HTTPS模拟神组件(2)
今天我们讨论SuperWebClient组件使用中的几个简单主题 1: UserAgent2: Cookies3: POST登录 1:UserAgent这个是客户端标识信息,此信息是用于鉴别正在访问W ...
- 一个基于nodejs,支持http/https的中间人(MITM)代理,便于渗透测试和开发调试。
源码地址:https://github.com/wuchangming/node-mitmproxy node-mitmproxy node-mitmproxy是一个基于nodejs,支持http/h ...
- 手把手写一个基于Spring Boot框架下的参数校验组件(JSR-303)
前言 之前参与的新开放平台研发的过程中,由于不同的接口需要对不同的入参进行校验,这就涉及到通用参数的校验封装,如果不进行封装,那么写出来的校验代码将会风格不统一.校验工具类不一致.维护风险高等其它因素 ...
- Yoshino: 一个基于React的可定制化的PC组件库
Github: https://github.com/Yoshino-UI... Docs: https://yoshino-ui.github.io/#/ Cli-Tool: https://git ...
- 【原创】强撸基于 .NET 的 Redis Cluster 集群访问组件
Hello 大家好,我是TANZAME,我们又见面了.今天我们来聊聊怎么手撸一个 Redis Cluster 集群客户端,纯手工有干货,您细品. 随着业务增长,线上环境的QPS暴增,自然而然将当前的单 ...
- 模拟登录神器之PHP基于cURL实现自动模拟登录类
一.构思 从Firefox浏览器拷贝cURL命令(初始页.提交.提交后) 自动分析curl形成模拟登录代码 默认参数:ssl/302/gzip 二.实现 接口 (一)根据curl信息执行并解析结果 p ...
- 简单的php基于curl的反向代理程序
起因: 经理:需要实现一个反向代理? 我: 简单,nginx分分钟配置好. 经理:嗯?没有nginx? 我: nodejs也行啊,网上有例子分分钟搞定. 经理:嗯?只有虚拟主机,只能上传php程序? ...
- SDKMAN一个基于命令行界面的SDK用户环境管理程序
1.背景 使用过Python开发的朋友,应该了解到Python2和Python3语法的差异,有时候从网上下载了基于不同解释器的代码,要来回切换版本, 使用起来不是很方便,有时候甚至很麻烦.于是有人发明 ...
- psutil一个基于python的跨平台系统信息跟踪模块
受益于这个模块的帮助,在这里我推荐一手. https://pythonhosted.org/psutil/#processes psutil是一个基于python的跨平台系统信息监视模块.在pytho ...
随机推荐
- MySQL连接数据库报时区错误:java.sql.SQLException: The server time zone value
连接MySQL数据库时报以下时区错误信息: java.sql.SQLException: The server time zone value '�й���ʱ��' is unrecognized ...
- spark中数据的读取与保存
1.文本文件 (1)读取文本文件 JavaRDD<String> input =sc.textFile(dir) (2)保存文本文件 result.saveAsTextFile(dir)) ...
- HDU-1232-畅通工程(并查集)
题目链接http://acm.hdu.edu.cn/showproblem.php?pid=1232考察并查集,(最小生成树)题目很简单用k记录树根的个数,k-1就是还需要建设的路 #include& ...
- MySQL in不走索引
优化前 SELECT* FROM erp_helei mg WHERE mg.num = 602 AND mg.pid IN (10002559,10002561,10002562,10 ...
- depcomp: line 571: exec: g++: not found
../depcomp: line 571: exec: g++: not foundmake[1]: *** [my_new.o] Error 127make[1]: Leaving director ...
- win8 64位+Oracle 11g 64位下使用PL/SQL Developer 的解决办法
1)安装Oracle 11g 64位2)安装32位的Oracle客户端( instantclient-basic-win32-11.2.0.1.0)下载 instantclient-basic-win ...
- Sublime Text3 高亮显示Jade语法 (Windows 环境)
首先下载git clone https://github.com/miksago/jade-tmbundle.git Jade 然后打开sublime --> 菜单栏 --> Prefer ...
- 使用 GitHub, Jekyll 打造自己的免费独立博客
使用 GitHub, Jekyll 打造自己的免费独立博客 GitHub是一个代码托管网站,现在很多开源项目都放在GitHub上. 利用GitHub,可以让全球各地的程序员们一起协作开发.GitHub ...
- gunicorn 简介
gunicorn是一个python Wsgi http server,只支持在Unix系统上运行,来源于Ruby的unicorn项目.Gunicorn使用prefork master-worker ...
- SQLSERVER如何导入数据保持ID不变(ID为自增主键)
使用SQL SERVER最操蛋的就是导入数据,以前用企业管理器直接导数据,导一次骂N次娘,在骂了微软无数次娘之后总结了一个方法揍合着还算受用. 其核心要点就是要将数据结构导入到目标数据库服务器上,再来 ...