2

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

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

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

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

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

4

2 回答 2

0

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

nslookup facebook.com

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

于 2016-05-13T13:57:42.380 回答
0

我的建议是使用Titanium Web Proxy,并利用该OnRequest事件来跟踪调用中对某些域(存储在SessionEventArgs.ProxySession.Request.Url)属性中的OnRequest调用。您甚至可以在结果/请求发出之前对其进行修改。但是,请注意,此库确实会覆盖您当前的系统代理设置。

于 2016-05-13T15:13:38.087 回答