我正在阅读那个接近我意愿的问题(How to create a simple proxy in C#?)。
我只想开发一个c#app,例如,监控Firefox,IE等,并记录所有导航页面。根据访问过的页面,我想阻止该网站(如父母过滤器)。
代码片段/样本很好,但如果您能告诉我某些课程的方向,我将不胜感激。 : - )
答案 0 :(得分:18)
我会回答适合父母:ala“家长控制”
当孩子小于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管理员(在命令行上使用“runas”,或右键单击“以管理员身份运行”)。只有管理员才能在现代版本的Windows上创建和使用原始套接字。坐下来观看节目。
所有网络流量都会传递给您的代码(显示在屏幕上,使用此程序看起来不太好。)
下一步是创建一些协议过滤器。了解各种互联网应用程序协议(假设您还不知道),修改程序以检查数据包。查找HTTP协议,并保存适当的数据(如GET请求)。
我个人为AIM(AOL Instant Messenger),HTTP,MSN Messenger(Windows Live Messenger),POP和SMTP设置了过滤器。今天,由于孩子们现在更喜欢Facebook墙到AIM,所以HTTP几乎可以获得所有内容。
当孩子们达到青少年早期到中期时,你会希望退出监控。有人说这是为了让孩子们“长大”,但真正的原因是“ 你不想知道 ”。我回过头来收集明确文本(pop,basic auth等)的获取请求和用户名/密码(用于紧急情况)的URL。
我不知道青少年后期会发生什么;我无法想象事情变得更糟,但我被告知“我还没有看到任何东西”。
就像之前所说的那样,这只适用于在目标机器上运行时(我在房子里的所有机器上运行一个副本)。否则,对于简单的监控检查您的路由器 - 我的具有一些很好的日志记录功能。
我最后的评论是,这个应用程序应该直接用C / C ++编写,而不是Win32 API,并作为在机器上运行管理权限的服务安装。我不认为这种类型的代码适合托管c#。您可以在C#中附加UI以进行监视和控制。您必须设计代码,以便对系统产生零影响。
答案 1 :(得分:7)