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

问题描述:

我想做一个程序,检测用户是否打开/访问某个网站,例如facebook.com。无论使用的网络浏览器如何,它都必须工作。C# - 如何检测网站是否被访问

我想过检查DNS缓存中的记录,它会工作,但有一个问题 - 它会产生误报。为什么,因为有些页面包含Facebook小部件。在这种情况下,我不需要访问fb来让facebook.com出现在我的DNS缓存中,它会在我访问包含fb小部件的网站时出现。

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

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

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

+0

从技术上讲,如果一个页面包含一个来自Facebook的小部件,那么用户访问Facebook时可能无法完成...也许您可以添加代理中间件,如Fiddler?,然后您可以阅读Http请求并确定如果访问路线符合您的标准 – Gusman

你有没有想过禁止或追踪Facebook的IP地址? 我做了一个facebook.com和NSLOOKUP了:

NSLOOKUP facebook.com

非权威的答案: 名称:facebook.com 地址:2A03:2880:F001:1F:脸:b00c: 0:25de 31.13.76.68

我的建议将被使用Titanium Web Proxy,并且,以追踪到特定域(存储在SessionEventArgs.ProxySession.Request.Url)在OnRequest呼叫属性呼叫利用OnRequest事件。你甚至可以在结果/请求出来之前修改它们。但是,请注意,此库确实会覆盖您当前的系统代理设置。