我试图检查用户是否来自应用内Facebook浏览器,因为如果它是Facebook浏览器,我网站上的某些功能将无法正常工作。
我发现了一些JS片段,但我想用PHP检查它,因为我还用PHP过滤了一些其他东西,并且不想使用JS。
我使用的是Laravel 5.4 Framework,但普通的PHP解决方案也很棒。
我已经使用Facebook浏览器和firefox / chrome浏览器检查了我的HTTP_USER_AGENT,并注意到了一些差异。
firefox给了我这个回复:
Mozilla/5.0 (Windows NT 10.0; WOW64; rv:54.0) Gecko/20100101 Firefox/54.0
和facebook这个:
Mozilla/5.0 (Linux; Android 6.0; HUAWEI VNS-L31 Build/HUAWEIVNS-L31; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/56.0.2924.87 Mobile Safari/537.36 [FB_IAB/FB4A;FBAV/116.0.0.17.69;] <<-- Important
我注意到最后:[FB_IAB/FB4A;FBAV/116.0.0.17.69;]
所以我写了这段代码:
if (
strpos($_SERVER["HTTP_USER_AGENT"], "FB_IAB") !== false ||
strpos($_SERVER["HTTP_USER_AGENT"], "FB4A") !== false ||
strpos($_SERVER["HTTP_USER_AGENT"], "FBAV") !== false
)
{
return "its fb";
}
else {
return "its not fb";
}
是的,它对我有用。但我不知道它是否适用于其他类似的用户。我也没有使用http_header - 信息。那么你认为我对这段代码安全吗?或者我需要改变一些东西吗?
感谢您的帮助,抱歉我的英语不好!
答案 0 :(得分:0)
我使用 https://github.com/hisorange/browser-detect 检查 Facebook APP 浏览器
use hisorange\BrowserDetect\Parser as Browser;
$userAgent = Browser::getUserAgentString();
$isFB = stripos($userAgent, 'FBAV') > 0;