我正在尝试构建一个应用程序,可以在用户访问我的数据库中存在的网站时通知用户有关网站特定信息的信息。这必须以独立于浏览器的方式完成,以便用户在访问网站时始终可以看到信息(无论他或她使用什么浏览器或其他工具访问网站)。
我的第一个(部分成功)方法是使用System.Net.Sockets.Socket类等查看数据包。不幸的是,我发现这种方法仅在用户具有管理员权限时才有效。当然,这不是我想要的。我的目标是用户可以安装一个可以立即使用的相对简单的程序。
在此之后我去寻找替代方案,并找到了很多关于WinPcap和它的一些.NET包装器(我告诉过你我正在编程c#.NET吗?)。但是使用WinPcap我发现它必须安装在用户的电脑上,并且有一种方法可以引用一些dll文件和代码。我已经看过将WinPcap作为安装程序的先决条件,但这也很麻烦。
好吧,长话短说。我想在我的应用程序中知道我的用户正在访问的网站。我认为必须通过查看网络的数据包来完成,但无法找到一个好的解决方案。我的应用程序是用C#.NET(4.0)构建的。
答案 0 :(得分:1)
一个简单的想法:不是直接监控流量,而是安装一个浏览器扩展,向您发送页面的当前URL。然后,您可以检查该URL是否在您的数据库中,并可选择使用浏览器扩展向用户显示一条消息。
这就像Invisible Hand这样的扩展工作......它扫描当前页面并将相关数据发送回服务器进行处理。如果找到任何内容,它会使用浏览器扩展框架将这些结果传回给用户。 (使用警告或窗口顶部的栏等)。
答案 1 :(得分:1)
您可以使用Fiddler来监控互联网流量。 它是
Web调试代理,用于记录计算机和Internet之间的所有HTTP(S)流量。 Fiddler允许您检查流量,设置断点,并“输入”传入或传出的数据。 Fiddler包含一个功能强大的基于事件的脚本子系统,可以使用任何.NET语言进行扩展。
它是可编写脚本的,可以很容易used from .NET。
答案 2 :(得分:0)
答案 3 :(得分:0)
简单直接的方法是将comupter DNS更改为指向您的应用程序。 这将导致所有DNS流量通过您的应用程序,可以嗅探,然后重定向到真正的DNS服务器。 它还可以为您节省过滤掉emule / torrent流量的麻烦,因为它通常可以使用纯IP地址(这也可能是一个问题,因为它可以通过使用IP地址进行浏览来规避)。
- How to change windows DNS Servers
另一种简单的方法是配置(程序化)浏览器代理以通过您的服务器,这将使您的生活更轻松,但对用户来说将更加明显。
答案 4 :(得分:0)
如果用户正在合作,您可以让他们将浏览器设置为使用您提供的代理服务。这将拦截所有网络流量,随心所欲地做任何事情(在数据库中查找,通知用户等),然后将其传递到原始位置。如果更适合您的情况,请在本地系统或远程系统上运行代理。
如果用户没有合作,或者您不想让他们更改浏览器设置,您可以使用其中一个数据包嗅探解决方案,例如fiddler。