为什么我无法摆脱Facebook用户代理?

时间:2018-04-18 15:39:46

标签: php facebook debugging user-agent

我想使用一些永久链接slug,允许用户与它的Facebook图片,网址,描述等共享链接(url.com/artist/songtitle)(这是将用户重定向到url.com/#/artist/songtitle)。所以我决定向Facebook用户代理展示OG元,并将其与重定向器分开。

My code

但是,当我使用Facebook Debug Tools并尝试获取it时会出现问题。抓取工具没有被我的用户代理分隔符捕获。 Whyyy???

我正在使用此代码来检测Facebook抓取工具。有什么想法解决这个问题吗?

strpos($_SERVER["HTTP_USER_AGENT"], "facebookexternalhit/") || strpos($_SERVER["HTTP_USER_AGENT"], "Facebot"

2 个答案:

答案 0 :(得分:0)

您可能希望使用stristrregex代替strpos。就像现在一样,您的代码不会与FacebookExternalHit匹配,因为它包含大写字母,而strpos函数是CaseSenSiTive

Facebook用户代理是:

FacebookExternalHit/1.0
FacebookExternalHit/1.1
facebookexternalhit/1.0 (+http://www.facebook.com/externalhit_uatext.php)
facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)
facebookexternalhit/1.0 (+https://www.facebook.com/externalhit_uatext.php)
facebookexternalhit/1.1 (+https://www.facebook.com/externalhit_uatext.php)

我使用下面的代码在PHP中检测FB User-Agent,它按预期工作:

$agent = $_SERVER['HTTP_USER_AGENT'];
if(stristr($agent, 'FacebookExternalHit')){
    //Facebook User-Agent
}else{
    //Other User-Agent
}

<强>更新

为了知道FB正在使用哪些用户代理,请尝试将用户代理请求保存到文件中,即:

保存UA请求的示例代码:
使用写入权限创建名为ua_log.txt的文件。

<?php
$agent = $_SERVER['HTTP_USER_AGENT'];
file_put_contents("$agent\n", "ua_log.txt", FILE_APPEND);    

使用ua_log.txt上的 FB用户代理来创建过滤器。

答案 1 :(得分:0)

搞清楚。当你编写og:url meta时要小心,抓取者想要遵循它。因此,请确保您在og:url中写入的页面是正确的。