我正在使用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请求各种网络。
答案 0 :(得分:0)
可能很远,但这可能与WinDivert
不解密来自使用https://stackoverflow.com/之类的使用SSL / TLS(HTTPS)的站点的响应有关。
我建议您尝试比较使用HTTP和HTTPS的网站。
希望有帮助!