当我在FB上分享我的一个页面时,我想显示一些不同的东西。问题是,我不喜欢使用og:元素,而是识别FB user-agent。
那是什么?我找不到了。
发布于 2011-12-25 04:54:17
有关用户代理字符串的列表,请查找here。截至2015年9月,使用最多的是facebookexternalhit/*和Facebot。由于您还没有说明您试图识别用户代理的语言,所以我不能告诉您更多信息。如果您确实希望在PHP中识别Facebook bot,请使用
if (
strpos($_SERVER["HTTP_USER_AGENT"], "facebookexternalhit/") !== false ||
strpos($_SERVER["HTTP_USER_AGENT"], "Facebot") !== false
) {
// it is probably Facebook's bot
}
else {
// that is not Facebook
}更新:Facebook已经将Facebot添加到他们可能的用户代理字符串列表中,所以我更新了我的代码以反映这一变化。此外,代码现在对未来可能的更改更具可预测性。
发布于 2012-08-14 22:06:59
“Facebook的用户代理字符串是
/1.1 (+http://www.facebook.com/externalhit_uatext.php)...”
嗨
小的,但重要的,修正-> Facebook外部点击使用2个不同的用户代理:
facebookexternalhit/1.0 (+http://www.facebook.com/externalhit_uatext.php)
facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php) 将您的fitler设置为仅1.1可能会导致1.0版本的过滤问题。
有关Facebook机器人(和其他机器人)的更多信息,请参考Botopedia.org -一个Comunity来源的机器人目录,由Incapsula提供支持。
除了user-agent数据,目录还提供IP验证选项,允许您交叉验证IP/User-Agent,从而帮助防止冒充尝试。
发布于 2011-12-25 05:01:18
以下是Facebook crawlers用户代理:
FacebookExternalHit/1.1
FacebookExternalHit/1.0或
facebookexternalhit/1.0 (+http://www.facebook.com/externalhit_uatext.php)
facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)请注意,版本号可能会更改。所以使用正则表达式查找爬虫名称,然后显示您的内容。
更新:
您可以在PHP中使用此代码来检查Facebook用户代理
if(preg_match('/^FacebookExternalHit\/.*?/i',$agent)){
print "Facebook User-Agent";
// process here for Facebook
}以下是ASP.NET代码。您可以使用此函数检查useragent是否为Facebook的用户代理。
public static bool IsFacebook(string userAgent)
{
userAgent = userAgent.ToLower();
return userAgent.Contains("facebookexternalhit");
} 注意:
你为什么需要这样做呢?当你在Facebook上分享到你的网站的链接时,facebook会抓取它并解析它,以获得一些数据来显示你页面上的缩略图、标题和一些内容,但它会链接回你的网站。
此外,我认为这将导致网站的伪装,即显示不同的数据给用户和爬虫。伪装不被认为是一种好的做法,搜索引擎和网站可能会注意到它。
更新:从2014年5月28日起,Facebook还增加了一个新的用户代理。
Facebot你可以在https://developers.facebook.com/docs/sharing/webmasters/crawler上了解更多关于facebook爬虫的信息
https://stackoverflow.com/questions/8626812
复制相似问题