欢乐捕鱼之海底极乐

蘇飛論壇

 找回密碼
 馬上注冊

QQ登錄

只需一步,快速開始

掃一掃,訪問微社區

分布式系統框架(V2.0) 輕松承載百億數據,千萬流量!討論專區 - 源碼下載 - 官方教程

HttpHelper萬能框架(V2.3-含.netcore) HttpHelper官方出品,無敵框架討論區 - 源碼下載 - 在線測試和代碼生成

HttpHelper爬蟲類(V2.0) 最牛的爬蟲類,沒有爬不到只有想不到 源碼 - 代碼生成器 - 討論區 - 教程- 例子

查看: 412174|回復: 315
打印 上一主題 下一主題

[發布] [C#HttpHelper]官方產品發布與源碼下載---蘇飛版

   關閉 [復制鏈接]
跳轉到指定樓層
發表于 2012-6-30 13:16:00 | 只看該作者 回帖獎勵 |正序瀏覽 |閱讀模式
                             C#HttpHelper官方產品發布與源碼下載---蘇飛版
導讀部分
-------------------------------------------------------------------------------------------------------------
C#基類庫蘇飛版--系列教程導航
http://www.gtcwi.tw/thread-655-1-1.html

                      本站是C#HttpHelper類唯一官方網站,唯一更新網站,希望大家收藏關注。
介紹
      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類下載

代碼生成器:http://www.gtcwi.tw/thread-3690-1-1.html   如果你不會使用類可以使用這個工具直接生成訪問代碼,非常方便
下載之前你首先要注冊成為會員哦,注冊之后就可以直接下載啦
以下是各個版本的HttpHelper類下載鏈接
以后HttpHelper類就不再提供多個版本了,只提供最新的Net2.0和4.0版本的。當然也有可能提供3.5或者是更高版本的,而不是像現在提供多個版本類,只對Net版本進行開發。希望大家喜歡
我相信這樣功能會更全面一些。

.Net4.0 最新版本下載

注意哦,如果不是本站注冊會員是沒有權限下載的
HttpHelperV20.0.9.zip (6.62 KB, 下載次數: 895)
   支持.netcore版本,可以直接引用
  1. 本版本是Net4.0的第一個版本,功能遠遠超過2.0,并且使用最新最潮的技術,從性能和穩定性上有質的飛越
復制代碼
歷史版本:
HttpHelperV20.0.7.zip (6.54 KB, 下載次數: 277)
HttpHelperV2.0.2.zip (6.54 KB, 下載次數: 547)
HttpHelperV2.0.1.zip (6.54 KB, 下載次數: 255)

HttpHelperV1.9.1.rar (6.4 KB, 下載次數: 2000)
HttpHelperV1.9.rar (6.4 KB, 下載次數: 4608)
HttpHelperV1.9.rar (6.4 KB, 下載次數: 1376)
HttpHelperV1.8-Net4.0版本.zip (6.38 KB, 下載次數: 3416)
HttpHelper_4.0.zip (6.37 KB, 下載次數: 106059)
.Net2.0版本
HttpHelper_2.0.rar (6.67 KB, 下載次數: 153487)
HttpHelperV1.8-Net2.0版.zip (6.72 KB, 下載次數: 3301)

相關鏈接


Httphelper類源碼下載:http://www.gtcwi.tw/thread-3-1-1.html
Httphelper類在線代碼生成器:http://www.gtcwi.tw/thread-3690-1-1.html
Httphelper類原理http://www.gtcwi.tw/thread-6-1-1.html
Httphelper類教程:http://www.gtcwi.tw/forum.ph ... action=view&ctid=23
Httphelper類例子:http://www.gtcwi.tw/forum.ph ... action=view&ctid=22
HttpCookieHelper幫助類:http://www.gtcwi.tw/thread-2382-1-1.html

Httphelper頭信息(ContentType)默認為text/html無懈可擊

2.在webBrowser中取Cookie的方法

在很多情況下我們會使用間進程的webBrowser去實現一些網頁的請求和抓去,這個時候有部分網頁是取不到Cookie的,那怎么辦呢?下面我提供一個方法,應該99%的都能取到,
[C#] 純文本查看 復制代碼
//取當前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代碼

[C#] 純文本查看 復制代碼
/// <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格式的問題

[C#] 純文本查看 復制代碼
 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類使用方法

使用方法如下
[C#] 純文本查看 復制代碼
HttpHelper http = new HttpHelper();
            HttpItem item = new HttpItem()
            {
                URL = "http://www.gtcwi.tw",//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.gtcwi.tw",//來源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的寫法

[C#] 純文本查看 復制代碼
 HttpHelper http = new HttpHelper();
            HttpItem item = new HttpItem()
            {
                URL = "http://www.gtcwi.tw",//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參考的方法

[C#] 純文本查看 復制代碼
  HttpHelper http = new HttpHelper();
            HttpItem item = new HttpItem()
            {
                URL = "http://www.gtcwi.tw",//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獲取圖片的方式
[C#] 純文本查看 復制代碼
  HttpHelper http = new HttpHelper();
            HttpItem item = new HttpItem()
            {
                URL = "http://www.gtcwi.tw",//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
[C#] 純文本查看 復制代碼
  HttpHelper http = new HttpHelper();
            HttpItem item = new HttpItem()
            {
                URL = "http://www.gtcwi.tw",//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使用方法
[C#] 純文本查看 復制代碼
 HttpHelper http = new HttpHelper();
            HttpItem item = new HttpItem()
            {
                URL = "http://www.gtcwi.tw",//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);


10.以下是對本類提出過建議或者是有杰出貢獻的用戶
------------------------------------------------------------用戶列表--------------------------------------------------------------------------------
myde520               xlj_qq                        xiaotianbao                        Eagle                          changlei                           kidsoft
ReEnter                 cyberarmy                  cyberarmy                        依然在飛翔                 Kiiilo                                 Monn
小小程序員           aspirer





本帖被以下淘專輯推薦:

推薦
 樓主| 發表于 2016-5-5 15:48:05 | 只看該作者
306
 樓主| 發表于 2019-4-23 11:09:14 | 只看該作者
305
 樓主| 發表于 2019-3-27 14:16:35 | 只看該作者
304
 樓主| 發表于 2019-3-27 14:16:24 | 只看該作者
303
 樓主| 發表于 2018-11-27 14:44:28 | 只看該作者
302
 樓主| 發表于 2018-11-26 18:32:40 | 只看該作者
301
 樓主| 發表于 2017-1-16 11:25:57 | 只看該作者
300
 樓主| 發表于 2016-12-5 09:15:13 | 只看該作者
299
 樓主| 發表于 2015-9-8 14:19:42 | 只看該作者
1.修復報未對對像設置到對象實例的Bug
2.增加設置本機出口IP的功能
具體使用方法請大家參考萬能框架教程http://httphelper.sufeinet.com/Course.aspx
298
 樓主| 發表于 2015-5-13 08:40:40 | 只看該作者
更新時間:2015-05-13

1.修復 catch (WebException ex)報錯的問題
2.增加最后訪問的url ResponseUri
3.獲取重定向的URl  RedirectUrl
您需要登錄后才可以回帖 登錄 | 馬上注冊

本版積分規則

QQ|手機版|小黑屋|手機版|聯系我們|關于我們|廣告合作|蘇飛論壇 ( 豫ICP備17001017號-1)

GMT+8, 2019-12-10 05:13

© 2017-2018

快速回復 返回頂部 返回列表
欢乐捕鱼之海底极乐 鸿运彩票安卓 真人龙虎斗赢钱技巧 怎么用软文赚钱 大智慧股票行情查询 北京中彩在线 极速时时彩开奖结果表 手机航空大亨3怎么赚钱 广东36选7走势图表 安徽11选518073124 貂蝉杀蓝球2017119期