最近用C#在做一個模擬瀏覽器接收https網站資料的工具,遇到問題卡了幾天,請大神指教,不勝感激,所有分數送上。
抓包工具fiddler抓取瀏覽器訪問https網站資料時,會先有一個http的握手包(大概是驗證證書、密鑰等),然后才是https資料包。
如圖所示灰色行:

瀏覽器發送的這個握手包的頭部大概是這樣的:
CONNECT www.hao123.com:443 HTTP/1.1
Host: www.hao123.com:443
Connection: keep-alive
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36
A SSLv3-compatible ClientHello handshake was found. Fiddler extracted the parameters below.
c#用HttpWebRequest發送的握手包就沒有 User-Agent 這一項,查遍了資料,大概理解為這個握手的動作是底層ssl封裝的,在.net框架中并沒有介面去寫它?
注意我指的剛開始握手時http協議的connect這個包,并不是握手成功后https協議的get、post那些包。
請各位大神多多指教,小弟在這里謝謝了。不勝感激。
如果這是c#的天生缺陷,請大家給提供一個解決問題的方向,謝謝了……
uj5u.com熱心網友回復:
把這個東西加到header里面 看看uj5u.com熱心網友回復:
HttpWebRequest.UserAgent 一開始就加了的,但它只在get、post那些https包里有,在剛開始的那個connect的http包里沒有。uj5u.com熱心網友回復:
HttpWebRequest.Headers["User-Agent"] = "XXXXXXX";也試過了,C#并不支持這樣的寫法。只能用 HttpWebRequest.UserAgent 這個。
uj5u.com熱心網友回復:
兄弟對不起,來晚了!!!! HttpWebRequest.UserAgent=“XXXXXXX”;uj5u.com熱心網友回復:
樓主問題解決了沒轉載請註明出處,本文鏈接:https://www.uj5u.com/net/284051.html
標籤:C#
