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= 包含完整的組件下載,使用教程,心得和源代碼分享


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM