c#用HttpWebRequest发送https请求时,如何添加ssl层握手包的header头里的User-Agent?

weixin_38302952 2017-12-02 02:35:25
最近用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#的天生缺陷,请大家给提供一个解决问题的方向,谢谢了……
...全文
1554 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_46395892 2021-05-14
  • 打赏
  • 举报
回复
楼主问题解决了没
C# 轰轰烈 2019-02-15
  • 打赏
  • 举报
回复
兄弟对不起,来晚了!!!! HttpWebRequest.UserAgent=“XXXXXXX”;
qq_31107977 2017-12-02
  • 打赏
  • 举报
回复
把这个东西加到header里面 看看
weixin_38302952 2017-12-02
  • 打赏
  • 举报
回复
HttpWebRequest.Headers["User-Agent"] = "XXXXXXX"; 也试过了,C#并不支持这样的写法。只能用 HttpWebRequest.UserAgent 这个。
weixin_38302952 2017-12-02
  • 打赏
  • 举报
回复
HttpWebRequest.UserAgent 一开始就加了的,但它只在get、post那些https包里有,在刚开始的那个connect的http包里没有。

110,502

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧