有很多时候我们需要在laravel中识别系统是安卓还是ios,有时候我们也需要判断是什么浏览器,以及判断手机或者电脑访问网站,安全中我们需要判断laravel网站是否是机器人访问。
安装
使用composer安装:
composer require jenssegers/agent
Laravel在config中配置
在config/app.php中添加服务提供者:
Jenssegers\Agent\AgentServiceProvider::class,
同样在config/app.php中注册门面到aliases数组:
'Agent' => Jenssegers\Agent\Facades\Agent::class,
基本使用
首先创建一个Agent实例(如果您使用的是Laravel,则使用Facade门面Agent):
use Jenssegers\Agent\Agent;
$agent = new Agent();
# 或者使用如下方法
use Agent;
如果您想要在CLI脚本中解析除当前请求以外的用户代理,则可以使用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上的一些原始示例
判断当前客户端
1、判断操作系统
Agent::is('Windows');
Agent::is('Firefox');
Agent::is('iPhone');
Agent::is('OS X');
2、与上面的is一样
与is()一样,判断操作系统:
Agent::isAndroidOS();
Agent::isNexus();
Agent::isSafari();
3、移动检测
检测移动设备:
Agent::isMobile();
Agent::isTablet();
4、匹配user agent
用正则表达式搜索用户代理:
Agent::match('regexp');
附加功能
1、获取语言
获取浏览器语言。例:
$languages = Agent::languages();
// ['nl-nl', 'nl', 'en-us', 'en']
2、设备名称
获取设备名称,比如手机。(iPhone, Nexus, AsusTablet, ...)
$device = Agent::device();
3、操作系统名称
获取操作系统。(Ubuntu,Windows,OS X,...)
$platform = Agent::platform();
4、浏览器名称
获取浏览器名称。(Chrome,IE,Safari,Firefox,...)
$browser = Agent::browser();
5、桌面检测
检查用户是否使用桌面设备。
$agent = Agent::isDesktop();
这将检查用户是否不是移动设备,平板电脑或机器人。
6、电话检测
检查用户是否为电话设备。
Agent::isPhone();
7、机器人检测
检查用户是否是机器人。这使用jaybizzle / crawler-detect来执行机器人检测。
Agent::isRobot();
8、机器人名称
获取机器人名称。
Agent::robot();
9、获取浏览器/系统版本
MobileDetect最近添加了一个version可以获取浏览器/系统版本。要获取浏览器或平台版本,您可以使用:
$browser = $agent->browser();
$version = $agent->version($browser);
$platform = $agent->platform();
$version = $agent->version($platform);
请注意,版本方法仍处于测试阶段,所以它可能不会返回正确的结果。