繁体   English   中英

为什么我不能摆脱Facebook用户代理?

[英]Why i can't get rid the Facebook user-agent?

我想使用一些永久链接标记,允许用户与Facebook图片,URL,描述等共享链接(url.com/artist/songtitle)(将用户重定向到url.com/# / artist / songtitle)。 因此,我决定向Facebook用户代理显示OG元数据,并将其与重定向器分开。

我的密码

但是,当我使用Facebook调试工具并尝试获取时,问题就来 搜寻器没有被我的用户代理分隔符捕获。 为什么???

我正在使用此代码来检测Facebook爬虫。 有解决这个问题的主意吗?

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

您可能要使用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用户代理创建过滤器。

想办法。 当您编写og:url meta时,请小心,爬虫希望遵循它。 因此,请确保您在og:url中编写的页面正确。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM