我想使用一些永久链接slug,允许用户与它的Facebook图片,网址,描述等共享链接(url.com/artist/songtitle)(这是将用户重定向到url.com/#/artist/songtitle)。所以我决定向Facebook用户代理展示OG元,并将其与重定向器分开。
但是,当我使用Facebook Debug Tools并尝试获取it时会出现问题。抓取工具没有被我的用户代理分隔符捕获。
我正在使用此代码来检测Facebook抓取工具。有什么想法解决这个问题吗?
strpos($_SERVER["HTTP_USER_AGENT"], "facebookexternalhit/") || strpos($_SERVER["HTTP_USER_AGENT"], "Facebot"
答案 0 :(得分:0)
您可能希望使用stristr
或regex
代替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中写入的页面是正确的。