如何监听浏览器请求(代理,插件......)?

时间:2012-03-21 11:01:20

标签: c# .net browser proxy add-on

我想知道在Win平台上编写代理的最佳方法是什么,它能够监控浏览器的通信。

方案:监控用户对Chrome,FireFox和IE上预定义网址的访问权限。在每次点击时,我将统计信息发送到带有一些数据的服务器(页面标题)。

到目前为止我找到的方法是代理和浏览器插件。每个人都有自己的优点和缺点。代理方式的主要缺点是处理HTTPS通信。插件的缺点是安装(需要在每个浏览器上安装)和跨浏览器支持。

还有其他方法吗?我可以用.net编写的一些服务,它会在启动时自动挂钩浏览器吗?

谢谢你。

1 个答案:

答案 0 :(得分:1)

您只有两个选择 - 一个http代理,或为每个浏览器编写一个插件。该插件可以只是通过网络将数据转发到中央服务,让您面临挑战,提出所有浏览器都可以提供的通用数据集,以及学习所有插件模型。

在我看来,唯一真正的选择是HTTP(s)代理,因为否则你必须在每次浏览器更改时不断更新插件,或者处理新浏览器可以出现并被使用的事实。 / p>

当然,你不会在操作系统中找到'用户在某个浏览器中浏览网址'事件 - 它只知道在某个本地端口上已经打开了一个套接字连接到远程服务器的端口80/443(或者无论)。

所以我强烈建议建立在Fiddler背后的优秀作品之上并使用Fiddler Core。

http://www.telerik.com/fiddler/fiddlercore

对于https,您必须使用其他证书进行解密和重新加密。如果没有实际解压请求,您所需的信息就无法使用。 Fiddler通过代表客户端向目标服务器打开自己的SSL隧道来实现这一目标,同时在不同的证书下充当客户端的SSL服务器。只要它使用的证书完全受客户端信任,就不会出现问题。

也就是说,这意味着用户无法亲自验证目标站点的标识 - 因此您的系统必须假设任何无效SSL证书的最坏情况并阻止连接。