Releases: hexydec/agentzero
AgentZero v1.2.1
AgentZero v1.2.0
This update add support for lots of new crawlers, and improves token handling internally:
- Reworked how tokens are ignored in
agentzero::getTokens()
to make them case-insensitive - Added loads of new crawlers to
crawlers::get()
- Added
.NET CLR
framework toframeworks::get()
- Added
special
class to handle difficult captures - Updated
Yahoo! Slurp
parser - Fix issue #6 typo in
README.md
- "arm" is now "Arm" in
architectures::get()
- Improved how apps are normalised in
crawlers::getApp()
Applebot
is now categorised as AI- Added
bytespider
crawler - Fixed issue in
agentzero::getTokens()
where the single values array was encoded withpreg_quote()
, but the delimiter was not supplied AppleWebKit/537.36
is now marked as single as it is sometime preceded by other tokens that get captured together- Added captures for
Baidu
andMicroMessenger
apps - Fixed PHPStan issues to level 9
- Added and updated test
- Updated dependencies
AgentZero v1.1.0
This release enables capture of more crawlers, and adds a new ai
category:
- Apps are now not automatically type
human
- Moved
Powershell
andAppleExchangeWebServices
to crawlers, as there is no indication that these are human UA's - Added
Alamofire
as a framework - Fixed issue in
other::getApp()
where theapp
was expected to exist - Added capture for
iOS
with a space after it - Added
Blazer
browser (PalmOS) - Added
PalmOS
and updated Windows captures to ignore PalmOS - Added a new
ai
category, to mark crawlers that are specifically for AI - Added specific mispellings that indicate a web scraper instead of the human it is trying to spoof
- Added and updated tests.
AgentZero v1.0.1
This release adds detection for more strings and improves how some strings are handled internally:
- Fixed issues parsing
Google-Read-Aloud
- Cleaned up how specific category names and app names are specified for generic bot captures
- Added
Cloudflare
crawlers to capture list - Fixes issue #5, missing Huawei Browser
- Added tests
AgentZero v1.0.0
This release improves detection, adds some new properties, and improves performance. Also is now marked as stable:
- Added
PS Vita
andPSP
support - Added
Moblie
as an alternative toMobile
as some Samsung devices misspell it - Added new properties
framework
andframeworkversion
to capture the runtime that the app was built in - Added support for
Weibo
andWeChat
apps - Added support for
QQ Browser
- Improved how
IE
andTrident
is captured to account for the fact that theQQ Browser
can be eitherTrident
orWebKit
- Updated
Chromium
detection to set the rendering engine toWebKit
when the version is less than 28 - Languages can now be captured from
language/
orByteLocale
tokens - Updated config in
apps::get()
to unify how app names are processed, now going throughapps::getApp()
- Updated
other::get()
to normalise app names throughapps::getApp()
- Moved capture for
ByteFullLocale/
tolanguages::get()
. - Updated
crawlers::get()
to improve normalisation of theQwant
crawler - Improved how
iPhone
is captured for certain app strings - Added
tests/profile.php
to process a load of UA strings so the code can be profiled - Updated
agentzero::parse()
to generate a lowercase copy of the tokens, which is then passed toprops::match()
, this is to prevent the tokens being lowercased for every match that is made - Added
declare(strict_types = 1)
to all test files - Added and updated tests
- Updated README.md to remove beta flag
AgentZero v0.6.0
This release fixes some bugs and adds a new metric::
- Fixed #2 where the normalisation of the app name was not specific enough, and lost detail. There is now a new metric
appname
that extracts the original app name as specified in the UA string - Fixed #4 where the version of
Safari
is specified in a different token, it is now extracted where available - Updated test
- Updated docs and readme
- Updated dependencies
AgentZero v0.5.1
This is a service release that adds some improvements:
- The original UA string is now a property of the returned object
- Added snap preview crawler
- Updated tests
- Updated dependencies
AgentZero v0.5.0
This release improves the output quality, and adds some new properties:
- Tightened up what
device
andmodel
represent, and upgraded parsers to produce the correct value - Added RAM, CPU model number, and CPU clock metrics to output, as this is revealed by some app UA strings
- Added lowercase versions of some ignore strings in
config::get()
- Added
Google Quick Search Box
to the apps list, fixed duplication withOcIdWebView
, addedimo
,Amazon Kids Browser
, andViber
- Added support for detecting
edge
on Android - Added
Phone
mapping incategories::get()
to map tomobile
- Added a load of scrapers to
crawlers::get()
- Fixed issues capturing some Amazon Fire Tablets in
devices::get()
- Added support for capturing Samsung and Blackberry devices
Redmi
devices are now not mapped asXiaomi
devices- Fixed issue in
other::get()
whereChrome
was mapped as an app - Added and updated tests
- Updated
README.md
to show the correct example now that the return value ofagentzero::parse()
is anagentzero
object
AgentZero v0.4.0
This release normalises the output names better for platforms and browsers, improves information capture and parsing, and supports more browsers, vendors, and crawlers:
- Improved mappings for handling apps, to account for Oracle Webview, and information contained in the ByteDance (TikTok) app UA string
- Improved how Chrome browsers are handled and added detection from
Cronet
Android Webview - Fixed issue in
devices::getDevice()
where the build and device was not separated properly if the build marker was a different case - Added
darkmode
output fromother::get()
, where the information is contained within a JSON string - Updated
platforms::get()
to handle short and full locale markers in the build string for Android devices - Updated tests to only filter out values that are
null
for when tests are run, also in theindexphp
test script - Swapped
other
ahead ofapps
in the config as it decodes app JSON, which should override standard app info - Updated
apps::get()
to normalise the app names for some common apps - Updated
browsers::get()
to improve how the browser version is detected, to compensate for some odd strings - Added detection for Vivo devices
- Fixed platform issues to allow text-based platform versions
- Some app names and device vendor names are now normalised
- Added more vendors to
devices::getDevice()
- Platform names are now normalised to make sure the case is always consistent
- Improved parsing of the Instagram app when it is in proprietary format
- Added
libcurl
to scrapers - Added
in
as a language code - Added missing
end
command toagentzero::parse()
to match strings at the end of a token - Added some App captures,
OculusBrowser
andYaBrowser
are now considered apps instead of browsers - Improved architecture captures
- Added a load of new browsers such as
Links
,Elinks
,BonEcho
(Firefox),minimo
, and some newFirefox
captures to take into account unmatched patterns - Improved and added crawler captures
- Improved and added device captures, added vendors, and added a generic capture for screen dimensions
- Engines now define captures as
human
, improved capturing - Added more Linux flavours, and improved generic Linux version capturing
- Added and updated tests
- Updated support documentation
AgentZero v0.3.0
This release tightens up how human
devices are detected, improves string parsing, and adds more devices/crawlers:
- Updated
agentzero::getTokens()
to split tokens by commas - Updated configurations to handle the new token layout
- Updated
browsers::get()
to set all browsers astype=human
- Removed setting of
type=human
fromplatforms::get()
- Mappings in
architectures::get()
now specifycategory=desktop
where possible - Moved
engines
andbrowsers
up the pecking order overapps
,platforms
andarchitectures
, asbrowsers
define whether the UA is human - Updated
browsers::get()
to normalise the browser name - Updated Facebook app language parser to normalise it, and account for odd strings
- Fixed issue with
Silk
browser where it shouldn't define that thecategory
istablet
- Normalised the name of
Samsung Browser
inbrowsers::get()
- Added
AndroidDownloadManager
to apps list - Added support for more
Kindle Fire
tablets. - Added
OS/2
to platform mappings. - Added some monitoring service crawlers
- Added exact match for
Android
as well as with a space after it - Updated workflow to fix run issue
- Added and updated tests.