C# - 如何检测网站是否被访问过

时间:2016-05-13 13:46:08

标签: c# web sniffer visited

我想制作一个程序来检测某个网站是否被用户打开/访问过,例如facebook.com。无论使用何种Web浏览器,它都必须工作。

我考虑过检查DNS缓存中的记录,它会起作用,但是存在问题 - 它会产生误报。为什么,因为有些页面包含facebook小部件。在这种情况下,我不需要访问fb以使facebook.com出现在我的DNS缓存中,它会一直出现在我访问包含fb小部件的网站上。

第二个想法是寻找活跃的TCP连接,但它也不起作用。

最后一个想法是嗅到交通。我在Wireshark中进行了简单的测试,并且存在与检查DNS缓存记录相同的问题,更准确地说是误报。此外,fb使用https协议,所以我看不出那么简单的地址,我必须从DNS获取他们的IP,然后尝试在嗅探的流量中找到它们。

我没有更多的想法如何解决这个问题。

2 个答案:

答案 0 :(得分:0)

您是否考虑过禁止或跟踪Facebook的IP地址? 我为facebook.com做了nslookup并得到了:

nslookup facebook.com

非权威性答案: 姓名:facebook.com 地址:2a03:2880:f001:1f:face:b00c:0:25de           31.13.76.68

答案 1 :(得分:0)

我的建议是使用Titanium Web Proxy,并利用OnRequest事件来跟踪{{1}中某些域(存储在SessionEventArgs.ProxySession.Request.Url)属性中的调用打电话。您甚至可以在结果/请求出去之前修改它们。但请注意,此库会覆盖您当前的系统代理设置。