通过无线托管网络拦截网页请求

时间:2013-06-22 10:56:45

标签: c# .net

晚安,

我通过以下2个批处理命令在Windows 8笔记本电脑上创建了无线托管网络: “netsh wlan set hostednetwork mode = allow ssid = testing key = 12345678” 和 “netsh wlan start hostednetwork”

之后,设备(基于Android的手机)能够成功连接到笔记本电脑上托管的无线托管网络。我还在C#中的端口1234上创建了一个HttpListener,设备可以使用内置的Web浏览器成功访问:

http://192.168.138.1:1234

但是,主机(我的笔记本电脑)如何拦截和重定向网页请求?也就是说,当设备尝试访问任何网页(例如google.com或facebook.com)时,如何通过我的笔记本电脑运行的.NET程序通知,然后通过发送此网页将设备重定向到另一个网页?

我尝试了以下内容:

HttpListener listener = new HttpListener();
        listener.Prefixes.Add("http://+:80/");
        listener.Start();
        Console.WriteLine("Started");
        while (true)
        {
            var c = listener.GetContext();
            Console.WriteLine("Connection");
            string response = "<HTML><BODY>My web page.<br></BODY></HTML>"; //Redirects device to this
            byte[] b = Encoding.UTF8.GetBytes(response);
            c.Response.ContentLength64 = b.Length;
            c.Response.OutputStream.Write(b, 0, b.Length);
            c.Response.OutputStream.Close();
        }

但是,当我使用该设备访问任何网页(E.G. google.com)时,我的笔记本电脑上运行的程序根本不会提取任何内容。对不起,如果我问了一个重复的问题,我在任何地方找不到它!

1 个答案:

答案 0 :(得分:0)

您需要设置自己的DNS服务器才能实现此目的。问题是您的笔记本电脑为google.com提供DNS查询并收到指向Google服务器而不是您的服务器的IP。

或者,如果您只想重定向几个网站,请在hosts文件中为其添加条目。