我想找到一个合适的解决方案来跟踪用户访问的网址和HTML内容,并向用户提供更多信息。该解决方案应该为最终用户带来最小的影响。
我不想为不同的浏览器编写插件。这很难维护。 我不接受代理方法,因为我不想更改任何用户的代理设置。 我的应用程序是用C#编写的,目标是Windows。最好是解决方案也可以支持其他操作系统。
根据我的研究,我发现以下方法看起来对我有用,但所有这些方法都有其缺点,我无法确定哪一种是最好的。
使用WinPcap WinPcap在不改变任何用户设置的情况下嗅探所有TCP数据包,但只需要安装WinPcap设置,这是我可以接受的。但我有两个问题: 一个。如何将TCP数据包转换为URL和HTML 湾它真的会影响性能吗?我不知道是否所有TCP流量的嗅探器都是这个要求的开销。
查找不同浏览器的历史记录文件 这种方式看似简单,但我想知道解决方案是否稳定。我不确定浏览器是否会稳定地写入历史记录以及何时写入。我的应用程序将在用户离开当前页面之前弹出信息。如果浏览器在用户关闭浏览器时写入历史文件,则该解决方案对我不起作用。
使用FindWindow或accessiblity对象或COM接口查找包含URL的UI元素 我发现这种方式并不完整,例如,Chrome只会显示有效标签的网址,但不会显示所有网址。 另一个缺点是我必须再次请求URL来获取其HTML内容。
欢迎提出任何意见或建议。 顺便说一句,我没有做任何间谍软件。该应用程序正在尝试从网页中查找所有RSS源并将其显示给最终用户。我可以轻松地在浏览器插件中执行此操作,但我真的想支持具有单个UI的多个broswers。感谢。
答案 0 :(得分:0)
虽然这是一篇非常古老的帖子,但我还是想提供一个输入。
WinPcap的方法1是最好的。这适用于任何浏览器,甚至是任何其他已安装应用程序的内置浏览器。该方法也将减少资源消耗。
有一个包含HTTP解析器的库Pcap.Net。您可以构造http流并使用其httpresponsedatagram来解析应用程序可以使用的主体。
此链接有助于为我提供更多见解 - Tcp Session Reconstruction with Winpcap