c# - 如何创建一个简单的 c# http 监视器/拦截器?

标签 c# http monitoring blocking

我正在阅读接近我希望的问题 ( How to create a simple proxy in C#?)。

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

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

最佳答案

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

您可以在 child 不到 10 岁时开始使用代理服务器。之后,他们将弄清楚如何绕过代理(或运行他们自己的绕过代理的客户端应用程序)。在青少年早期,您可以使用原始套接字。 将此程序键入 Visual Studio (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);
        }
    }
}

请注意,这只是一个“片段”,缺乏适当的设计和错误检查。 [请不要使用“原样”——您只是请求了一个良好的开端] 将 IP 地址更改为您的机器。运行程序 AS Administrator(在命令行中使用“runas”,或右键单击“以管理员身份运行”)。只有管​​理员可以在现代版本的 Windows 上创建和使用原始套接字。坐下来观看表演。

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

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

我个人为 AIM (AOL Instant Messenger)、HTTP、MSN messenger (Windows Live Messenger)、POP 和 SMTP 设置了过滤器。今天,HTTP 几乎无所不包,因为如今的 children 更喜欢 facebook 墙而不是 AIM。

随着 children 进入青春期早期到中期,您会希望停止监控。有人说这是为了让 child “长大”,但真正的原因是“你不想知道”。我退而求其次,只收集 get 请求的 URL,以及明文形式的用户名/密码(用于紧急情况)(pop、基本身份验证等)。

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

正如之前有人所说,这仅在目标机器上运行时有效(我在家里的所有机器上运行一个副本)。否则,为了简单的监控,请检查您的路由器 - 我的路由器有一些不错的日志记录功能。

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

关于c# - 如何创建一个简单的 c# http 监视器/拦截器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/924449/

相关文章:

C# [Out] [MarshalAs(..) 到 VB.NET

c# - 有没有更有效的方法来获取 C# 中给定日期的前一个星期一

http - 使用 HTTP 的 WCF 自定义用户名身份验证

http - 有什么工具可以区分 HTTP 请求/响应吗?

go - 如何在 prometheus/client_golang 中禁用 go_collector 指标

performance - 哪些服务可用于监控前端性能?

c# - 为什么C#限制了可以声明为const的类型集?

c# - Guid 应包含 32 位数字和 4 个破折号 (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)。错误?

java - Viewing Http Calls With Fiddler - 看不到Java程序Http流量

windows - 监控服务器、进程、服务、任务调度程序状态