【问题标题】:C# - How to detect if website was visitedC# - 如何检测网站是否被访问
【发布时间】:2016-05-13 23:13:38
【问题描述】:

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

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

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

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

我不知道如何解决这个问题。

【问题讨论】:

  • 嗯,从技术上讲,如果页面包含来自 facebook 的小部件,用户访问了 facebook...也许您可以添加像 Fiddler 这样的代理中间件?,然后您可以阅读Http 请求并确定访问的路由是否符合您的条件

标签: c# web sniffer visited


【解决方案1】:

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

nslookup facebook.com

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-19
      • 1970-01-01
      • 2012-04-15
      • 1970-01-01
      • 1970-01-01
      • 2017-07-18
      相关资源
      最近更新 更多