首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何识别Facebook User-Agent

如何识别Facebook User-Agent
EN

Stack Overflow用户
提问于 2011-12-25 04:49:04
回答 11查看 94.3K关注 0票数 58

当我在FB上分享我的一个页面时,我想显示一些不同的东西。问题是,我不喜欢使用og:元素,而是识别FB user-agent。

那是什么?我找不到了。

EN

回答 11

Stack Overflow用户

回答已采纳

发布于 2011-12-25 04:54:17

有关用户代理字符串的列表,请查找here。截至2015年9月,使用最多的是facebookexternalhit/*Facebot。由于您还没有说明您试图识别用户代理的语言,所以我不能告诉您更多信息。如果您确实希望在PHP中识别Facebook bot,请使用

代码语言:javascript
复制
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添加到他们可能的用户代理字符串列表中,所以我更新了我的代码以反映这一变化。此外,代码现在对未来可能的更改更具可预测性。

票数 110
EN

Stack Overflow用户

发布于 2012-08-14 22:06:59

“Facebook的用户代理字符串是

/1.1 (+http://www.facebook.com/externalhit_uatext.php)...”

小的,但重要的,修正-> Facebook外部点击使用2个不同的用户代理:

代码语言:javascript
复制
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,从而帮助防止冒充尝试。

票数 16
EN

Stack Overflow用户

发布于 2011-12-25 05:01:18

以下是Facebook crawlers用户代理:

代码语言:javascript
复制
FacebookExternalHit/1.1
FacebookExternalHit/1.0

代码语言:javascript
复制
facebookexternalhit/1.0 (+http://www.facebook.com/externalhit_uatext.php)
facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)

请注意,版本号可能会更改。所以使用正则表达式查找爬虫名称,然后显示您的内容。

更新

您可以在PHP中使用此代码来检查Facebook用户代理

代码语言:javascript
复制
if(preg_match('/^FacebookExternalHit\/.*?/i',$agent)){
    print "Facebook User-Agent";
    // process here for Facebook
}

以下是ASP.NET代码。您可以使用此函数检查useragent是否为Facebook的用户代理。

代码语言:javascript
复制
public static bool IsFacebook(string userAgent)  
{  
    userAgent = userAgent.ToLower();  
    return userAgent.Contains("facebookexternalhit");  
}  

注意:

你为什么需要这样做呢?当你在Facebook上分享到你的网站的链接时,facebook会抓取它并解析它,以获得一些数据来显示你页面上的缩略图、标题和一些内容,但它会链接回你的网站。

此外,我认为这将导致网站的伪装,即显示不同的数据给用户和爬虫。伪装不被认为是一种好的做法,搜索引擎和网站可能会注意到它。

更新:从2014年5月28日起,Facebook还增加了一个新的用户代理。

代码语言:javascript
复制
Facebot

你可以在https://developers.facebook.com/docs/sharing/webmasters/crawler上了解更多关于facebook爬虫的信息

票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8626812

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档