C#HttpHelper官方产品发布与源码下载---苏飞版
导读部分
-------------------------------------------------------------------------------------------------------------
C#基类库苏飞版--系列教程导航
http://www.sufeinet.com/thread-655-1-1.html
介绍
C#HttpHelper实现了C#HttpWebRequest抓取时无视编码,无视证书,无视Cookie,并且实现的代理的功能,使用它您可以进行Get和Post请求,可以很方便 的设置Cookie,证书,代理,编码问题您不用管,因为类会自动为您识别网页的编码。
这个类是我以前写百度,Google,Soso,Sogou等网络蜘蛛时使用的,经过上千万个网站的测试,上万个网站抓取的例子总结出来的,中间的方法也是我实验了很久之后方案,所以大家可以放心使用。
我不敢说100%,但是应该是99%的网站都没有问题,都可以无视编码,证书,和Cookie,如果你确实发现那个网站在使用本类过程中有问题,出现乱码,或者是获取不了,不能带Cookie,不能带证书等问题,我非常乐意您能联系我,提出您的问题,您也可以直接回复本帖子,我会第一时间进行解答。
本类永久开源免费,万能框架,只是使用Httphelper类写出来的一个作品,和类本身没有关系,大家不会误会哦! Httphelper类是免费的,收费的是使用Httphelper类写出的万能框架!
Httphelper代码在线预览
购买类库版(万能框架),功能强大10倍http://httphelper.sufeinet.com/
1.HttpHelper类下载
HttpHelper-V2.2.9.zip(6.62 KB, 下载次数: 791)
代码生成器:http://www.sufeinet.com/thread-3690-1-1.html 如果你不会使用类可以使用这个工具直接生成访问代码,非常方便
下载之前你首先要注册成为会员哦,注册之后就可以直接下载啦
以下是各个版本的HttpHelper类下载链接
以后HttpHelper类就不再提供多个版本了,只提供最新的Net2.0和4.0版本的。当然也有可能提供3.5或者是更高版本的,而不是像现在提供多个版本类,只对Net版本进行开发。希望大家喜欢
我相信这样功能会更全面一些。
.Net4.0 最新版本下载
注意哦,如果不是本站注册会员是没有权限下载的HttpHelperV20.0.9.zip(6.62 KB, 下载次数: 1505)
支持.netcore版本,可以直接引用
本版本是Net4.0的第一个版本,功能远远超过2.0,并且使用最新最潮的技术,从性能和稳定性上有质的飞越
历史版本:HttpHelperV20.0.7.zip(6.54 KB, 下载次数: 311)
HttpHelperV2.0.2.zip(6.54 KB, 下载次数: 549)
HttpHelperV2.0.1.zip(6.54 KB, 下载次数: 258)
HttpHelperV1.9.1.rar(6.4 KB, 下载次数: 2002)
HttpHelperV1.9.rar(6.4 KB, 下载次数: 4610)
HttpHelperV1.9.rar(6.4 KB, 下载次数: 1378)
HttpHelperV1.8-Net4.0版本.zip(6.38 KB, 下载次数: 3418)
HttpHelper_4.0.zip(6.37 KB, 下载次数: 106065)
.Net2.0版本HttpHelper_2.0.rar(6.67 KB, 下载次数: 153524)
HttpHelperV1.8-Net2.0版.zip(6.72 KB, 下载次数: 3307)
相关链接
Httphelper类源码下载:http://www.sufeinet.com/thread-3-1-1.html
Httphelper类在线代码生成器:http://www.sufeinet.com/thread-3690-1-1.html
Httphelper类原理:http://www.sufeinet.com/thread-6-1-1.html
Httphelper类教程:http://www.sufeinet.com/forum.ph ... action=view&ctid=23
Httphelper类例子:http://www.sufeinet.com/forum.ph ... action=view&ctid=22
HttpCookieHelper帮助类:http://www.sufeinet.com/thread-2382-1-1.html
Httphelper头信息(ContentType)默认为text/html无懈可击
2.在webBrowser中取Cookie的方法
在很多情况下我们会使用间进程的webBrowser去实现一些网页的请求和抓去,这个时候有部分网页是取不到Cookie的,那怎么办呢?下面我提供一个方法,应该99%的都能取到,
//取当前webBrowser登录后的Cookie值 [DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError = true)] static extern bool InternetGetCookieEx(string pchURL, string pchCookieName, StringBuilder pchCookieData, ref int pcchCookieData, int dwFlags, object lpReserved); //取出Cookie,当登录后才能取 private static string GetCookieString(string url) { // Determine the size of the cookie int datasize = 256; StringBuilder cookieData = new StringBuilder(datasize); if (!InternetGetCookieEx(url, null, cookieData, ref datasize, 0x00002000, null)) { if (datasize < 0) return null; // Allocate stringbuilder large enough to hold the cookie cookieData = new StringBuilder(datasize); if (!InternetGetCookieEx(url, null, cookieData, ref datasize, 0x00002000, null)) return null; } return cookieData.ToString(); }
3.去掉所有的Html代码
/// <summary> /// 过滤html标签 /// </summary> /// <param name="strHtml">html的内容</param> /// <returns></returns> public static string StripHTML(string stringToStrip) { // paring using RegEx // stringToStrip = Regex.Replace(stringToStrip, "</p(?:\\s*)>(?:\\s*)<p(?:\\s*)>", "\n\n", RegexOptions.IgnoreCase | RegexOptions.Compiled); stringToStrip = Regex.Replace(stringToStrip, "", "\n", RegexOptions.IgnoreCase | RegexOptions.Compiled); stringToStrip = Regex.Replace(stringToStrip, "\"", "''", RegexOptions.IgnoreCase | RegexOptions.Compiled); stringToStrip = StripHtmlXmlTags(stringToStrip); return stringToStrip; } private static string StripHtmlXmlTags(string content) { return Regex.Replace(content, "<[^>]+>", "", RegexOptions.IgnoreCase | RegexOptions.Compiled); }
方法如上面所示直接调用StripHTML方法就行了
4.设置URl格式的问题
public static string URLDecode(string text) { return HttpUtility.UrlDecode(text, Encoding.Default); } public static string URLEncode(string text) { return HttpUtility.UrlEncode(text, Encoding.Default); }
5.HttpHelper类使用方法,
使用方法如下
HttpHelper http = new HttpHelper(); HttpItem item = new HttpItem() { URL = "http://www.sufeinet.com",//URL 必需项 Encoding = null,//编码格式(utf-8,gb2312,gbk) 可选项 默认类会自动识别 //Encoding = Encoding.Default, Method = "get",//URL 可选项 默认为Get Timeout = 100000,//连接超时时间 可选项默认为100000 ReadWriteTimeout = 30000,//写入Post数据超时时间 可选项默认为30000 IsToLower = false,//得到的HTML代码是否转成小写 可选项默认转小写 Cookie = "",//字符串Cookie 可选项 UserAgent = "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)",//用户的浏览器类型,版本,操作系统 可选项有默认值 Accept = "text/html, application/xhtml+xml, */*",// 可选项有默认值 ContentType = "text/html",//返回类型 可选项有默认值 Referer = "http://www.sufeinet.com",//来源URL 可选项 Allowautoredirect = true,//是否根据301跳转 可选项 CerPath = "d:\\123.cer",//证书绝对路径 可选项不需要证书时可以不写这个参数 Connectionlimit = 1024,//最大连接数 可选项 默认为1024 Postdata = "C:\\PERKYSU_20121129150608_ScrubLog.txt",//Post数据 可选项GET时不需要写 PostDataType = PostDataType.FilePath,//默认为传入String类型,也可以设置PostDataType.Byte传入Byte类型数据 ProxyIp = "192.168.1.105:8015",//代理服务器ID 端口可以直接加到后面以:分开就行了 可选项 不需要代理 时可以不设置这三个参数 ProxyPwd = "123456",//代理服务器密码 可选项 ProxyUserName = "administrator",//代理服务器账户名 可选项 ResultType = ResultType.Byte,//返回数据类型,是Byte还是String PostdataByte = System.Text.Encoding.Default.GetBytes("测试一下"),//如果PostDataType为Byte时要设置本属性的值 CookieCollection = new System.Net.CookieCollection(),//可以直接传一个Cookie集合进来 }; item.Header.Add("测试Key1", "测试Value1"); item.Header.Add("测试Key2", "测试Value2"); //得到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; //把得到的Byte转成图片 Image img = byteArrayToImage(result.ResultByte); } /// <summary> /// 字节数组生成图片 /// </summary> /// <param name="Bytes">字节数组</param> /// <returns>图片</returns> private Image byteArrayToImage(byte[] Bytes) { MemoryStream ms = new MemoryStream(Bytes); Image outputImg = Image.FromStream(ms); return outputImg; }}
本例子是一个统一的标准写法,大家可以根据需要自行修改,在下面还会有对特定功能的说明请大家继续看
6.最简单的Post与Get的写法
HttpHelper http = new HttpHelper(); HttpItem item = new HttpItem() { URL = "http://www.sufeinet.com",//URL这里都是测试 必需项 Method = "get",//URL 可选项 默认为Get }; //得到HTML代码 HttpResult result = http.GetHtml(item); item = new HttpItem() { URL = "http://tool.sufeinet.com",//URL这里都是测试URl 必需项 Encoding = null,//编码格式(utf-8,gb2312,gbk) 可选项 默认类会自动识别 //Encoding = Encoding.Default, Method = "post",//URL 可选项 默认为Get Postdata = "user=123123&pwd=1231313" }; //得到新的HTML代码 result = http.GetHtml(item);
7.HttpHelper设置Header参考的方法
HttpHelper http = new HttpHelper(); HttpItem item = new HttpItem() { URL = "http://www.sufeinet.com",//URL 必需项 Encoding = null,//编码格式(utf-8,gb2312,gbk) 可选项 默认类会自动识别 //Encoding = Encoding.Default, Method = "get",//URL 可选项 默认为Get }; item.Header.Add("测试Key1", "测试Value1"); item.Header.Add("测试Key2", "测试Value2"); //得到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;
下面我列出一些不能直接Add的参数
8.HttpHelper获取图片的方式
HttpHelper http = new HttpHelper(); HttpItem item = new HttpItem() { URL = "http://www.sufeinet.com",//URL 必需项 Encoding = null,//编码格式(utf-8,gb2312,gbk) 可选项 默认类会自动识别 //Encoding = Encoding.Default, ResultType = ResultType.Byte }; //得到HTML代码 HttpResult result = http.GetHtml(item); if (result.StatusCode == System.Net.HttpStatusCode.OK) { //表示访问成功,具体的大家就参考HttpStatusCode类 } //表示StatusCode的文字说明与描述 string statusCodeDescription = result.StatusDescription; //把得到的Byte转成图片 Image img = byteArrayToImage(result.ResultByte); } /// <summary> /// 字节数组生成图片 /// </summary> /// <param name="Bytes">字节数组</param> /// <returns>图片</returns> private Image byteArrayToImage(byte[] Bytes) { MemoryStream ms = new MemoryStream(Bytes); Image outputImg = Image.FromStream(ms); return outputImg; }
9.二次或多次使用Cookie的方式
字符串Cookie
HttpHelper http = new HttpHelper(); HttpItem item = new HttpItem() { URL = "http://www.sufeinet.com",//URL这里都是测试 必需项 Encoding = null,//编码格式(utf-8,gb2312,gbk) 可选项 默认类会自动识别 //Encoding = Encoding.Default, Method = "get",//URL 可选项 默认为Get }; //得到HTML代码 HttpResult result = http.GetHtml(item); item = new HttpItem() { URL = "http://tool.sufeinet.com",//URL这里都是测试URl 必需项 Encoding = null,//编码格式(utf-8,gb2312,gbk) 可选项 默认类会自动识别 //Encoding = Encoding.Default, Method = "get",//URL 可选项 默认为Get Cookie = result.Cookie, }; //得到新的HTML代码 result = http.GetHtml(item);
CookieCollection类型的Cookie使用方法
HttpHelper http = new HttpHelper(); HttpItem item = new HttpItem() { URL = "http://www.sufeinet.com",//URL这里都是测试 必需项 Encoding = null,//编码格式(utf-8,gb2312,gbk) 可选项 默认类会自动识别 //Encoding = Encoding.Default, Method = "get",//URL 可选项 默认为Get ResultCookieType = ResultCookieType.CookieCollection }; //得到HTML代码 HttpResult result = http.GetHtml(item); item = new HttpItem() { URL = "http://tool.sufeinet.com",//URL这里都是测试URl 必需项 Encoding = null,//编码格式(utf-8,gb2312,gbk) 可选项 默认类会自动识别 //Encoding = Encoding.Default, Method = "get",//URL 可选项 默认为Get CookieCollection = result.CookieCollection, ResultCookieType = ResultCookieType.CookieCollection }; //得到新的HTML代码 result = http.GetHtml(item);
共有条评论 网友评论