我想制作一个程序来检测某个网站是否被用户打开/访问过,例如facebook.com。无论使用何种Web浏览器,它都必须工作。
我考虑过检查DNS缓存中的记录,它会起作用,但是存在问题 - 它会产生误报。为什么,因为有些页面包含facebook小部件。在这种情况下,我不需要访问fb以使facebook.com出现在我的DNS缓存中,它会一直出现在我访问包含fb小部件的网站上。
第二个想法是寻找活跃的TCP连接,但它也不起作用。
最后一个想法是嗅到交通。我在Wireshark中进行了简单的测试,并且存在与检查DNS缓存记录相同的问题,更准确地说是误报。此外,fb使用https协议,所以我看不出那么简单的地址,我必须从DNS获取他们的IP,然后尝试在嗅探的流量中找到它们。
我没有更多的想法如何解决这个问题。
答案 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
)属性中的调用打电话。您甚至可以在结果/请求出去之前修改它们。但请注意,此库会覆盖您当前的系统代理设置。