[ laravel拓展 ] 使用laravel agent轻松识别客户端信息以及设备信息

earnpls • 815 次浏览 • 0 个回复 • 2018年02月11日

Agent

有很多时候我们需要在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脚本中解析除当前请求以外的用户代理,则可以使用setUserAgentsetHttpHeaders方法:

$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、操作系统名称

获取操作系统。(UbuntuWindowsOS 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);

请注意,版本方法仍处于测试阶段,所以它可能不会返回正确的结果。


原创文章,转载请注明 :[ laravel拓展 ] 使用laravel agent轻松识别客户端信息以及设备信息 - Laravel学习网
原文出处: https://phpartisan.cn/news/78.html
问题交流群 :168117787
提交评论
要回复文章请先登录注册
用户评论
  • 没有评论
[ 配置教程 ] 在ubuntu16.04中部署LNMP环境(php7+maridb且开启maridb远程以及nginx多域名访问 )并配置laravel环境 laravel 5.*进行支付宝同步/异步通知签名验证问题汇总