我想使用一些permalink片段,允许用户与它的Facebook图片、url、描述等共享链接(url.com/ users /songtitle)(它将用户重定向到url.com/#/artist/songtitle)。因此,我决定向Facebook用户代理展示OG,并将其与重定向器分开。

但是,当我使用Facebook调试工具并尝试获取它时,问题就出现了。爬虫没有被我的用户代理分离器捕获。

我正在使用这个代码来检测Facebook爬虫。有办法解决这个问题吗?
strpos($_SERVER["HTTP_USER_AGENT"], "facebookexternalhit/") || strpos($_SERVER["HTTP_USER_AGENT"], "Facebot"发布于 2018-04-18 23:53:04
把它弄清楚。当你写og:url的时候要小心,爬虫们想要遵循它。所以,确保您用og:url编写的页面是正确的。
发布于 2018-04-18 15:45:46
您可能希望使用stristr或regex而不是strpos。正如现在一样,您的代码将与FacebookExternalHit不匹配,因为它包含大写字母,而strpos函数是CaseSenSiTive。
Facebook用户代理是:
facebookexternalhit/1.0FacebookExternalHit/1.1 FacebookExternalHit/1.0 (+uatext.php)
我使用下面的代码来检测PHP中的FB用户代理,它的工作原理如下:
$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); 使用FB用户代理 on ua_log.txt来创建过滤器。
https://stackoverflow.com/questions/49903788
复制相似问题