原始http请求解析

时间:2019-01-05 06:53:28

标签: c# httprequest

我正在使用windivert捕获tcp数据包。我成功地通过WinDivertSharp.dll捕获了数据包。现在我只想解析HTTP请求的数据包。为了解析数据包,我使用的是流动代码。

var index = BinaryMatch(messageBody, Encoding.ASCII.GetBytes("\r\n\r\n")) + 4;
var headers = Encoding.ASCII.GetString(messageBody, 0, index);
var memory = new MemoryStream(messageBody);
memory.Position = index;
string body = "";
if (headers.IndexOf("Content-Encoding: gzip") > 0)
{
    using (GZipStream decompressionStream = new GZipStream(memory, CompressionMode.Decompress))
    using (var decompressedMemory = new MemoryStream())
    {
       decompressionStream.CopyTo(decompressedMemory);
       decompressedMemory.Position = 0;
       body = Encoding.UTF8.GetString(decompressedMemory.ToArray());
    }
 }
 else
 {
     body = Encoding.UTF8.GetString(messageBody, index, messageBody.Length - index);
 }    

对于某些网站来说效果很好。但是对于来自https://stackoverflow.com/的http请求,它不起作用。请帮忙解码 http请求各种网络。

1 个答案:

答案 0 :(得分:0)

可能很远,但这可能与WinDivert不解密来自使用https://stackoverflow.com/之类的使用SSL / TLS(HTTPS)的站点的响应有关。

我建议您尝试比较使用HTTP和HTTPS的网站。

希望有帮助!