C# 从数据包头捕获URL

C# 从数据包头捕获URL,c#,.net,pcap,packet-sniffers,C#,.net,Pcap,Packet Sniffers,我想捕获流媒体视频 所以我看到了URL Getter软件,它很好,因为它给了我流媒体链接 然后我试着自己制作一个,所以我使用了vb.NET2010上的PCAP.net库 最后我得到了该代码的链接>> If packet.Ethernet.IpV4.Tcp.Payload IsNot Nothing Then Dim text = Encoding.Default.GetString(packet.Ethernet.IpV4.Tcp.Payload.ToMemory

我想捕获流媒体视频

所以我看到了URL Getter软件,它很好,因为它给了我流媒体链接

然后我试着自己制作一个,所以我使用了vb.NET2010上的PCAP.net库

最后我得到了该代码的链接>>

If packet.Ethernet.IpV4.Tcp.Payload IsNot Nothing Then
                Dim text = Encoding.Default.GetString(packet.Ethernet.IpV4.Tcp.Payload.ToMemoryStream().ToArray())
                Dim match = Regex.Match(text.ToLower(), "(?<=[get|post])\s(?<Path>/.*?)[\?\s].*?http/1\.1.*?host:\s(?<Host>[A-Za-z0-9\-\.]*)", RegexOptions.Singleline)

                    MyStr = match.Groups("Host").Value & match.Groups("Path").Value


            End If
如果packet.Ethernet.IpV4.Tcp.Payload不是空的,那么
Dim text=Encoding.Default.GetString(packet.Ethernet.IpV4.Tcp.Payload.ToMemoryStream().ToArray())
Dim match=Regex.match(text.ToLower(),“(?)?
  • 您应该只读取请求的第一行并解析它
  • 您可以使用
    Uri
    类来获取Uri的一部分

  • 但是,请注意,查询字符串是请求的一部分。您可能不想将其扔掉。

    这个问题似乎离题了,因为它涉及的内容很容易在internet上搜索,并且没有尝试解决方案。请问我如何阅读请求的第一行?对不起,您能给我举个例子吗?哟您可以使用
    StreamReader
    类,甚至可以先在字节流中查找
    0D0A
    (CRLF),然后只解码到该点的数据。HTTP请求可能非常大:)你有其他的解决方案吗?或者是一个很好的例子,在vb.net或C#?哦,你想要查询字符串。那么,你必须修复你的正则表达式,因为它忽略了:)为什么不手动解析该行呢?请阅读HTTP方法,剩下的就是URI。它真的很简单:)感谢您的帮助,t将regex替换为“(?)?