试图检测Facebook对我的网络应用程序的调用

时间:2012-04-24 19:00:54

标签: asp.net-mvc facebook httprequest

在我的asp.net MVC应用程序中,我试图知道这是否是Facebook正在调用我的一个网址(当我的网站链接作为FB状态共享时,FB尝试获取一些元标记opengraph)。我已经尝试了空的URlReferrer和显示IP地址的UserHostName。

2 个答案:

答案 0 :(得分:0)

你可以像Tejs建议的那样做,比如:

IPHostEntry IpEntry = Dns.GetHostByAddress(HttpContext.Current.Request.UserHostAddress); 
//OR
IPHostEntry IpEntry = Dns.GetHostByAddress(HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"]);
if(IpEntry.HostName.Contains("facebook.com"))
{
  //Coming from facebook.com
}

答案 1 :(得分:0)

似乎可以这样做:

if ((!string.IsNullOrWhiteSpace(HttpContext.Request.UserAgent) && HttpContext.Request.UserAgent.ToLower().Contains("facebookexternalhit")) ||
    ((HttpContext.Request.UrlReferrer != null) && HttpContext.Request.UrlReferrer.Host.ToLower().Contains("facebook.com")))

通过这种方式,我知道Facebook是否正在抓取opengraph数据,或者是否有人点击了facebook页面上的共享链接。