Listen to Browser's requests

后端 未结 6 1763
别跟我提以往
别跟我提以往 2020-12-18 17:22

Using the following code:

HttpListener listener = new HttpListener();
//listener.Prefixes.Add(\"http://*:80/\");
listener.Prefixes.Add(\"http://*:8080/\");
l         


        
6条回答
  •  别那么骄傲
    2020-12-18 17:46

    @L.B I want to write a "proxy"

    Don't reinvent the wheel and just use the FiddlerCore

    public class HttpProxy : IDisposable
    {
        public HttpProxy()
        {
            Fiddler.FiddlerApplication.BeforeRequest += FiddlerApplication_BeforeRequest;
            Fiddler.FiddlerApplication.Startup(8764, true, true);
        }
    
        void FiddlerApplication_BeforeRequest(Fiddler.Session oSession)
        {
            Console.WriteLine(String.Format("REQ: {0}", oSession.url));
        }
    
        public void Dispose()
        {
            Fiddler.FiddlerApplication.Shutdown();
        }
    }
    

    EDIT

    You can start with this rectangular wheel :)

    void SniffPort80()
    {
        byte[] input = new byte[] { 1 };
        Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.IP);
        socket.Bind(new IPEndPoint(IPAddress.Broadcast, 80));
        socket.IOControl(IOControlCode.ReceiveAll, input, null);
    
        byte[] buffer = new byte[0x10000];
    
        Task.Factory.StartNew(() =>
            {
                while (true)
                {
                    int len = socket.Receive(buffer);
                    if (len <= 40) continue; //Poor man's check for TCP payload
                    string bin = Encoding.UTF8.GetString(buffer, 0, len); //Don't trust to this line. Encoding may be different :) even it can contain binary data like images, videos etc.
                    Console.WriteLine(bin);
                }
            });
    }
    

提交回复
热议问题