有很多時(shí)候我們需要在laravel中識(shí)別系統(tǒng)是安卓還是ios,有時(shí)候我們也需要判斷是什么瀏覽器,以及判斷手機(jī)或者電腦訪問網(wǎng)站,安全中我們需要判斷l(xiāng)aravel網(wǎng)站是否是機(jī)器人訪問。
安裝
使用composer安裝:
composer require jenssegers/agent
Laravel在config中配置
在config/app.php中添加服務(wù)提供者:
Jenssegers\Agent\AgentServiceProvider::class,
同樣在config/app.php中注冊門面到aliases數(shù)組:
'Agent' => Jenssegers\Agent\Facades\Agent::class,
基本使用
首先創(chuàng)建一個(gè)Agent實(shí)例(如果您使用的是Laravel,則使用Facade門面Agent):
use Jenssegers\Agent\Agent;
$agent = new Agent();
# 或者使用如下方法
use Agent;
如果您想要在CLI腳本中解析除當(dāng)前請求以外的用戶代理,則可以使用setUserAgent和setHttpHeaders方法:
$agent->setUserAgent('Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/537.13+ (KHTML, like Gecko) Version/5.1.7 Safari/534.57.2');
$agent->setHttpHeaders($headers);
所有Mobile Detect原有的方法仍然可以使用,請查看https://github.com/serbanghita/Mobile-Detect/wiki/Code-examples上的一些原始示例
判斷當(dāng)前客戶端
1、判斷操作系統(tǒng)
Agent::is('Windows');
Agent::is('Firefox');
Agent::is('iPhone');
Agent::is('OS X');
2、與上面的is一樣
與is()一樣,判斷操作系統(tǒng):
Agent::isAndroidOS();
Agent::isNexus();
Agent::isSafari();
3、移動(dòng)檢測
檢測移動(dòng)設(shè)備:
Agent::isMobile();
Agent::isTablet();
4、匹配user agent
用正則表達(dá)式搜索用戶代理:
Agent::match('regexp');
附加功能
1、獲取語言
獲取瀏覽器語言。例:
$languages = Agent::languages();
// ['nl-nl', 'nl', 'en-us', 'en']
2、設(shè)備名稱
獲取設(shè)備名稱,比如手機(jī)。(iPhone, Nexus, AsusTablet, ...)
$device = Agent::device();
3、操作系統(tǒng)名稱
獲取操作系統(tǒng)。(Ubuntu,Windows,OS X,...)
$platform = Agent::platform();
4、瀏覽器名稱
獲取瀏覽器名稱。(Chrome,IE,Safari,Firefox,...)
$browser = Agent::browser();
5、桌面檢測
檢查用戶是否使用桌面設(shè)備。
$agent = Agent::isDesktop();
這將檢查用戶是否不是移動(dòng)設(shè)備,平板電腦或機(jī)器人。
6、電話檢測
檢查用戶是否為電話設(shè)備。
Agent::isPhone();
7、機(jī)器人檢測
檢查用戶是否是機(jī)器人。這使用jaybizzle / crawler-detect來執(zhí)行機(jī)器人檢測。
Agent::isRobot();
8、機(jī)器人名稱
獲取機(jī)器人名稱。
Agent::robot();
9、獲取瀏覽器/系統(tǒng)版本
MobileDetect最近添加了一個(gè)version可以獲取瀏覽器/系統(tǒng)版本。要獲取瀏覽器或平臺(tái)版本,您可以使用:
$browser = $agent->browser();
$version = $agent->version($browser);
$platform = $agent->platform();
$version = $agent->version($platform);
請注意,版本方法仍處于測試階段,所以它可能不會(huì)返回正確的結(jié)果。