Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何创建一个简单的c#http监视器/阻止程序?_C#_Http_Monitoring_Blocking - Fatal编程技术网

如何创建一个简单的c#http监视器/阻止程序?

如何创建一个简单的c#http监视器/阻止程序?,c#,http,monitoring,blocking,C#,Http,Monitoring,Blocking,我读到的问题()接近我的愿望 我只是想开发一个c#应用程序,例如,它可以监控Firefox、IE等,并记录所有导航页面。根据访问的页面的不同,我希望阻止该站点(如家长过滤器) 代码片段/示例很好,但如果您能告诉我该类的使用方向,我将不胜感激。:-) 您的方法将取决于您是将此应用程序安装在用于浏览的同一个框上,还是安装在单独的代理服务器上 如果您在单独的服务器上执行此操作,那么在C#/托管代码中完成此操作将更容易,因为您只需编写客户端pc指向的C#代理服务器。System.Net.Sockets命

我读到的问题()接近我的愿望

我只是想开发一个c#应用程序,例如,它可以监控Firefox、IE等,并记录所有导航页面。根据访问的页面的不同,我希望阻止该站点(如家长过滤器)


代码片段/示例很好,但如果您能告诉我该类的使用方向,我将不胜感激。:-)

您的方法将取决于您是将此应用程序安装在用于浏览的同一个框上,还是安装在单独的代理服务器上

如果您在单独的服务器上执行此操作,那么在C#/托管代码中完成此操作将更容易,因为您只需编写客户端pc指向的C#代理服务器。System.Net.Sockets命名空间TcpListener和TcpClient将是您的朋友

但是,如果您要在同一台机器上安装此软件,请看一看,或许可以获得一些想法


希望这能有所帮助。

我将回答适合家长的问题:ala“家长控制”

当孩子们还不到10岁的时候,你可以从代理服务器开始。之后,他们将了解如何绕过代理(或运行自己的绕过代理的客户端应用程序)。在青少年早期,您可以使用原始套接字。 在Visual Studio(C#)中键入此程序

请注意,这只是一个“片段”,缺乏适当的设计和错误检查。[请不要使用“按原样”-您请求的只是一个开头]更改您机器的IP地址。以管理员身份运行程序(使用命令行上的“runas”,或右键单击“以管理员身份运行”)。只有管理员才能在现代版本的windows上创建和使用原始套接字。坐下来看表演吧

所有网络流量都会传送到您的代码中(显示在屏幕上,使用此程序看起来不太好看)

下一步是创建一些协议过滤器。了解各种internet应用程序协议(假设您还不知道),修改程序以检查数据包。查找HTTP协议,并保存适当的数据(如GET请求)

我个人为AIM(AOL Instant Messenger)、HTTP、MSN Messenger(Windows Live Messenger)、POP和SMTP设置了过滤器。如今,HTTP几乎得到了一切,因为现在的孩子们更喜欢facebook墙

当孩子们进入青少年早期至中期时,你会想放弃监控。有人说这是为了让孩子“长大”,但真正的原因是“你不想知道”。我放弃了只收集get请求的URL,以及明文形式的用户名/密码(紧急情况下)(pop、基本身份验证等)

我不知道青少年后期会发生什么;我无法想象事情会变得更糟,但我被告知“我还没有看到任何东西”

正如前面有人所说,这只在目标机器上运行时有效(我在房子里的所有机器上运行一个副本)。否则,为了简单的监控,请检查您的路由器-我的路由器有一些很好的日志功能


我的最后一点意见是,这个应用程序应该直接针对Win32 API用C/C++编写,并作为一个服务安装,在机器上以管理权限运行。我认为这种类型的代码不适合托管c。您可以在C#中附加一个UI以进行监视和控制。您必须设计代码,以便对系统没有明显影响。

您不应该使用
Console.WriteLine(ex)-这毫无意义。要么
ex.Message
(或者类似的东西),要么根本不使用try-catch块。异常的消息将自动写入输出。创建一个安全的ssh隧道,使用Proxifier Portable和Putty到外部代理,所有的工作都是徒劳的:P+1,因为我发现这个答案非常有趣,这将为我的新项目提供一个良好的开端。非常感谢你的这篇文章。请告诉我们关于创建协议过滤器的更多指导。我应该搜索什么?我正在尝试谷歌“HTTP协议过滤器C”,但我不太确定如何处理这个代码写在控制台上的所有随机字符。我怎么能用C++来编写这样的应用程序?我什么也没找到
class Program
{
    static void Main(string[] args)
    {
        try
        {
            byte[] input = BitConverter.GetBytes(1);
            byte[] buffer = new byte[4096];
            Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.IP);
            s.Bind(new IPEndPoint(IPAddress.Parse("192.168.1.91"), 0));
            s.IOControl(IOControlCode.ReceiveAll, input, null);

            int bytes = 0;
            do
            {
                bytes = s.Receive(buffer);
                if (bytes > 0)
                {
                    Console.WriteLine(Encoding.ASCII.GetString(buffer, 0, bytes));
                }
            } while (bytes > 0);
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex);
        }
    }
}