.net 解析Transfer-Encoding:chunked 秒掉網上無用方案

來源:互聯網
上載者:User

標籤:.com   頭部   htm   bsp   pre   stringbu   需要   網站   請求   

昨天在爬資料時,發現某個網站Response.Get過來的資料一直是為空白。當時就很奇怪,認真看下了回應標頭。發現Transfer-Encoding:chunked這個玩意
網上查了下資料
一般情況HTTP的Header包含Content-Length域來指明報文體的長度。
有時候服務產生HTTP回應是無法確定訊息大小的,比如大檔案的下載,或者後台需要複雜的邏輯才能全部處理頁面的請求,這時用需要即時產生訊息長度,伺服器一般使用chunked編碼。

在進行Chunked編碼傳輸時,在回複訊息的Headers有transfer-encoding域值為chunked,表示將用chunked編碼傳輸內容。使用chunked編碼的Headers如下(可以利用FireFox的FireBug外掛程式或HttpWatch查看Headers資訊,HttpWatch還可以查看chunked的個數):

編碼使用若干個Chunk組成,由一個標明長度為0的chunk結束,每個Chunk有兩部分組成,第一部分是該Chunk的長度和長度單位(一般不寫),第二部分就是指定長度的內容,每個部分用CRLF(全稱carriage return/line feed 斷行符號換行)隔開。在最後一個長度為0的Chunk中的內容是稱為footer的內容,是一些沒有寫的頭部內容。

這上面是網上的原話,具體更詳細的可以去參考裡面看看

不過網上很多關於chunked .net解析都是tmd無用,把代碼貼出來,後面的小哥們不要再痛苦。

哥當時也是寫不出解析代碼,想著網上找找,國內找的都千扁一屢,最後在國外論壇找到了方案。

最後通過Fiddler調試看到,POST的網站有返回Content-Length,此時心都炸了。找了半天,你居然告訴我,是有Length返回。但是瀏覽器F12看到的卻是Transfer-Encoding:chunked。
試著在Fiddler上面類比調試,看看請求前,請求後的變化。
把瀏覽器要求標頭內容複寫到Fiddler的參數裡面,點擊exec,響應地區顯示為空白。我的神喲這tmd什麼情況,參數有問題?,認真對照一下吧,總會發現有問題
。。。。。
當時我沒有特別注意Cookie,也沒有傳過去,Cookie為空白。把瀏覽器裡面的Cookie資訊拷貝進去。exec,斷點命中了。。。。。。。。。當時是多麼的開心,說明這個網站的POST必須要cookie

解析代碼也找到,那再把.net代碼檢查下。運行,拿到了資料。。。。不寫了

貼代碼

StringBuilder sb1 = new StringBuilder();Byte[] buf = new byte[256];Stream resStream = myHttpWebResponse.GetResponseStream();resStream = new GZipStream(resStream, CompressionMode.Decompress);string tmpString = null;int count = 0;do{count = resStream.Read(buf, 0, buf.Length - 1);if (count != 0){tmpString = Encoding.UTF8.GetString(buf, 0, count);sb1.Append(tmpString);}} while (count > 0);

 

參考
https://imququ.com/post/transfer-encoding-header-in-http.html
還有一個網站找不到了,可憐了。

http://www.dayuji1000.com/vrtechnews/index.html
http://www.xafuda.cn/article/jnd3.5.html

.net 解析Transfer-Encoding:chunked 秒掉網上無用方案

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.