bugbuster / browscap-php
php的本地get_browser()函数的独立替代品
Requires
- php: ~8.1.0 || ~8.2.0 || ~8.3.0
- ext-json: *
- guzzlehttp/guzzle: ^7.8.0
- league/flysystem: ^3.21.0
- matthiasmullie/scrapbook: ^1.5.1
- monolog/monolog: ^3.5.0
- psr/log: ^2.0.0 || ^3.0.0
- psr/simple-cache: ^2.0.0 || ^3.0.0
- symfony/console: ^6.4.0 || ^7.0.0
- symfony/filesystem: ^6.4.0 || ^7.0.0
Requires (Dev)
- doctrine/coding-standard: ^12.0.0
- mikey179/vfsstream: ^1.6.11
- phpstan/extension-installer: ^1.3.1
- phpstan/phpstan: ^1.10.43
- phpstan/phpstan-beberlei-assert: ^1.1.2
- phpstan/phpstan-deprecation-rules: ^1.1.4
- phpstan/phpstan-phpunit: ^1.3.15
- phpunit/phpunit: ^10.4.2
Suggests
- ext-curl: to use curl requests to get the ini file
- dev-bugbuster
- 7.5.x-dev
- 7.4.x-dev
- 7.4.0
- 7.3.x-dev
- 7.3.0
- 7.2.x-dev
- 7.2.2
- 7.2.1
- 7.2.0
- 7.1.x-dev
- 7.1.0
- 7.0.x-dev
- 7.0.0
- 6.2.x-dev
- 6.1.x-dev
- 6.1.0
- 6.0.x-dev
- 6.0.0
- 5.1.x-dev
- 5.1.0
- 5.0.x-dev
- 5.0.0
- 4.3.x-dev
- 4.3.0
- 4.2.2
- 4.2.1
- 4.2.0
- 4.1.0
- 4.0.0
- 3.1.0
- 3.0.0
- 3.0.0-rc.1
- 3.0.0-beta.1
- 3.0.0-alpha.1
- 2.x-dev
- 2.1.1
- 2.1.0
- 2.1.0-alpha.1
- 2.0.5
- 2.0.4
- 2.0.3
- 2.0.2
- 2.0.1
- 2.0.0
- 2.0.0-beta
- 1.0.0
- dev-dependabot/github_actions/ramsey/composer-install-3
- dev-dependabot/github_actions/overtrue/phplint-9.1
This package is auto-updated.
Last update: 2024-09-15 00:05:17 UTC
README
这是一个PHP的本地get_browser()
函数的用户级替代品,该函数由浏览器功能项目官方支持。
分支:为Contao 5.3和PHP 8.3以及Monolog 2.9提供的特殊版本,由Contao BotDetection Bundle使用。纯消除依赖冲突,Contao BotDetection Bundle使用NullLogger()
。
安装
运行以下命令通过Composer安装
composer require bugbuster/browscap-php
然后您可以通过这种方式识别当前的用户代理
$cache = new \MatthiasMullie\Scrapbook\Psr16\SimpleCache($doctrineFileCache); // or maybe any other PSR-16 compatible caches $logger = new \Monolog\Logger('name'); // or maybe any other PSR-3 compatible logger $browscap = new \BrowscapPHP\Browscap($cache, $logger); $info = $browscap->getBrowser();
推荐设置
在您开始之前,您必须运行browscap:fetch
命令来下载browscap.ini
文件,并使用browscap:convert
命令将其转换为缓存。有两种方法。
a. 下载文件并在两个步骤中转换。下载的文件将存储在本地文件中,但不会检查远程文件是否已更改。如果您的缓存损坏,您只需重新运行convert
命令。
vendor/bin/browscap-php browscap:fetch vendor/bin/browscap-php browscap:convert
b. 下载文件并在一个步骤中转换。下载的文件将不会存储在本地文件中,但会检查远程文件是否已更改。如果您的缓存损坏,您必须清除缓存并重新启动进程。
vendor/bin/browscap-php browscap:update
如果您想自动更新使用的缓存,我们建议使用单独的cron作业来调用上述命令。
版本7.0.x中的BC破坏
- [BC] BrowscapPHP\Command\UpdateCommand was marked "@internal"
- [BC] BrowscapPHP\Command\FetchCommand was marked "@internal"
- [BC] BrowscapPHP\Command\ConvertCommand was marked "@internal"
- [BC] BrowscapPHP\Command\CheckUpdateCommand was marked "@internal"
- [BC] BrowscapPHP\Command\ParserCommand was marked "@internal"
- [BC] BrowscapPHP\Helper\Filesystem was marked "@internal"
设置示例
$fileCache = new \League\Flysystem\Local\LocalFilesystemAdapter($cacheDir); $filesystem = new \League\Flysystem\Filesystem($fileCache); $cache = new \MatthiasMullie\Scrapbook\Psr16\SimpleCache( new \MatthiasMullie\Scrapbook\Adapters\Flysystem($filesystem) ); $logger = new \Monolog\Logger('name'); $bc = new \BrowscapPHP\Browscap($cache, $logger); $result = $bc->getBrowser();
注意:您可以使用任何其他实现PSR-16接口的缓存。
使用完整的browscap.ini文件
$bc = new \BrowscapPHP\BrowscapUpdater(); $bc->update(\BrowscapPHP\Helper\IniLoaderInterface::PHP_INI_FULL);
设置代理配置
如果您在代理后面或需要特定的配置,您必须设置一个客户端实例。有关更多信息,请参阅Guzzle文档。
$proxyConfig = [ 'proxy' => [ 'http' => 'tcp://localhost:8125', 'https' => 'tcp://localhost:8124', ], ]; $client = new \GuzzleHttp\Client($proxyConfig); $bcu = new BrowscapUpdater(); $bcu->setClient($client);
使用示例
从全局$_SERVER变量获取用户代理
$bc = new \BrowscapPHP\Browscap(); $current_browser = $bc->getBrowser();
使用示例用户代理
$bc = new \BrowscapPHP\Browscap($cache, $logger); $current_browser = $bc->getBrowser($the_user_agent);
命令行命令
注意:如果您不想使用文件缓存,则不能使用命令行命令。目前无法使用其他缓存。注意:每个操作(获取、更新、检查更新)从远程主机browscap.org获取数据时可能会遇到该网站的速率限制。如果发生这种情况,将抛出异常。
每个命令行命令在一切顺利的情况下返回零
。
check-update
如果您只想检查是否可用的browscap.ini的新版本,则可以使用check-update
命令。
vendor/bin/browscap-php browscap:check-update
选项
cache
(可选)您的缓存目录的相对路径
返回代码
- 1:未找到缓存的版本
- 2:没有新版本可用
- 3:检查缓存版本时发生错误
- 4:获取远程版本时发生错误
- 5:发生其他错误
fetch
fetch
命令从browscap.org下载ini文件。
vendor/bin/browscap-php browscap:fetch
选项
cache
(可选)您的缓存目录的相对路径remote-file
(可选)如果不希望下载标准文件,则必须要求,可能的值有PHP_BrowscapINI
下载标准文件(默认值)Lite_PHP_BrowscapINI
下载轻量文件Full_PHP_BrowscapINI
下载完整文件
file
(可选)存储远程内容的本地文件的相对路径
返回代码
- 3:检查缓存版本时发生错误
- 9:获取远程数据时发生错误
- 10:发生其他错误
convert
convert
命令读取本地存储的browscap.ini文件并将内容写入缓存。
vendor/bin/browscap-php browscap:convert
选项
file
(可选)本地文件相对于路径,其中存储了远程内容,这应该是与fetch命令相同的文件cache
(可选)您的缓存目录的相对路径
返回代码
- 6:缺少要转换的文件名
- 7:要转换的文件不可用或不可读
- 8:读取文件时发生其他错误
更新
update
命令从browscap.org下载ini文件并将其内容写入缓存。不创建本地文件。
vendor/bin/browscap-php browscap:update
选项
remote-file
(可选)如果不希望下载标准文件,则必须提供,可能的值包括PHP_BrowscapINI
下载标准文件(默认值)Lite_PHP_BrowscapINI
下载轻量文件Full_PHP_BrowscapINI
下载完整文件
cache
(可选)您的缓存目录的相对路径
返回代码
- 3:检查缓存版本时发生错误
- 9:获取远程数据时发生错误
- 10:发生其他错误
解析
parse
命令解析指定的用户代理并将结果写入控制台。
vendor/bin/browscap-php browscap:parse
选项
user-agent
(必需)要解析的用户代理cache
(可选)您的缓存目录的相对路径
返回代码
- 11:解析用户代理时发生其他错误
CLI 示例
使用完整的browscap.ini文件更新缓存
注意:创建/更新缓存的两种方式都将使用默认的standard
模式文件。如果您想获取更详细的信息,可以使用remote-file
选项来更改此设置。请使用帮助功能查看此参数。
vendor/bin/browscap-php browscap:update --remote-file Full_PHP_BrowscapINI
更新自定义缓存目录
除了fetch以外的每个操作都会在项目内的resources
目录中使用缓存。如果您使用composer更新此库,缓存也会被清除。如果您想避免这种情况并希望设置自己的缓存文件夹,可以使用cache
选项。如果您这样做,您必须为此路径设置一个缓存实例。
vendor/bin/browscap-php browscap:update --cache ./browscap-cache
问题和功能请求
请在GitHub问题跟踪器(https://github.com/browscap/browscap-php/issues)上报告您的问题并请求新功能。
请在此处报告browscap.ini文件中错误识别的用户代理和浏览器检测:https://github.com/browscap/browscap/issues