DOC: Added more explanation for 51Degrees V3.2
Changed examples to demonstrate the the new fetch and conv methods available with the enhancements made in version 3.2 of 51Degrees. Added reference to the accuracy indicators available with Pattern detection method.
This commit is contained in:
parent
10790964b0
commit
a0c4c69b67
68
README
68
README
|
@ -246,20 +246,21 @@ others. Such information can be used to improve the user experience of a web
|
|||
site by tailoring the page content, layout and business processes to the
|
||||
precise characteristics of the device. Such customisations improve profit by
|
||||
making it easier for customers to get to the information or services they
|
||||
need. Theses attributes of the device making a web request can be added to HTTP
|
||||
need. Attributes of the device making a web request can be added to HTTP
|
||||
headers as configurable parameters.
|
||||
|
||||
In order to enable 51Degrees get the 51Degrees source code from the official
|
||||
github repository :
|
||||
In order to enable 51Degrees download the 51Degrees source code from the
|
||||
official github repository :
|
||||
|
||||
git clone https://github.com/51Degreesmobi/51Degrees-C
|
||||
git clone https://github.com/51Degrees/Device-Detection
|
||||
|
||||
then run 'make' with USE_51DEGREES and 51DEGREES_SRC set. Both 51DEGREES_INC
|
||||
and 51DEGREES_LIB may additionally be used to force specific different paths
|
||||
for .o and .h, but will default to 51DEGREES_SRC. Make sure to replace
|
||||
'51D_REPO_PATH' with the path to the 51Degrees repository.
|
||||
|
||||
51Degrees provide 2 different detection algorithms :
|
||||
51Degrees provide 2 different detection algorithms:
|
||||
|
||||
1. Pattern - balances main memory usage and CPU.
|
||||
2. Trie - a very high performance detection solution which uses more main
|
||||
memory than Pattern.
|
||||
|
@ -280,46 +281,77 @@ Trie data.
|
|||
|
||||
The configuration file needs to set the following parameters:
|
||||
|
||||
51degrees-data-file path to the pattern or trie data file
|
||||
51degrees-data-file path to the Pattern or Trie data file
|
||||
51degrees-property-name-list list of 51Degrees properties to detect
|
||||
51degrees-property-separator separator to use between values
|
||||
51degrees-cache-size LRU-based cache size (disabled by default)
|
||||
|
||||
The following is an example of the settings for Pattern.
|
||||
|
||||
51degrees-data-file '51D_REPO_PATH'/data/51Degrees-Lite.dat
|
||||
51degrees-data-file '51D_REPO_PATH'/data/51Degrees-LiteV3.2.dat
|
||||
51degrees-property-name-list IsTablet DeviceType IsMobile
|
||||
51degrees-property-separator ,
|
||||
51degrees-cache-size 10000
|
||||
|
||||
HAProxy needs a way to pass device information to the backend servers. This is
|
||||
done by using the 51d converter, which intercepts the User-Agent header and
|
||||
creates some new headers. This is controlled in the frontend http-in section
|
||||
done by using the 51d converter or fetch method, which intercepts the HTTP
|
||||
headers and creates some new headers. This is controlled in the frontend
|
||||
http-in section.
|
||||
|
||||
The following is an example which adds two new HTTP headers prefixed X-51D-
|
||||
|
||||
frontend http-in
|
||||
bind *:8081
|
||||
default_backend servers
|
||||
http-request set-header X-51D-DeviceTypeMobileTablet %[req.fhdr(User-Agent),51d(DeviceType,IsMobile,IsTablet)]
|
||||
http-request set-header X-51D-Tablet %[req.fhdr(User-Agent),51d(IsTablet)]
|
||||
http-request set-header X-51D-DeviceTypeMobileTablet %[51d.all(DeviceType,IsMobile,IsTablet)]
|
||||
http-request set-header X-51D-Tablet %[51d.all(IsTablet)]
|
||||
|
||||
Here, two headers are created with 51Degrees data, X-51D-DeviceTypeMobileTablet
|
||||
and X-51D-Tablet. Any number of headers can be created this way and can be
|
||||
named anything. The User-Agent header is passed to the converter in
|
||||
req.fhdr(User-Agent). 51d( ) invokes the 51degrees converter. It can be passed
|
||||
up to five property names of values to return. Values will be returned in the
|
||||
same order, seperated by the 51-degrees-property-separator configured earlier.
|
||||
If a property name can't be found the value 'NoData' is returned instead.
|
||||
named anything. 51d.all( ) invokes the 51degrees fetch. It can be passed up to
|
||||
five property names of values to return. Values will be returned in the same
|
||||
order, seperated by the 51-degrees-property-separator configured earlier. If a
|
||||
property name can't be found the value 'NoData' is returned instead.
|
||||
|
||||
In addition to the device properties three additional properties related to the
|
||||
validity of the result can be returned when used with the Pattern method. The
|
||||
following example shows how Method, Difference and Rank could be included as one
|
||||
new HTTP header X-51D-Stats.
|
||||
|
||||
http-request set-header X-51D-Stats %[51d.all(Method,Difference,Rank)]
|
||||
|
||||
These values indicate how confident 51Degrees is in the result that that was
|
||||
returned. More information is available on the 51Degrees web site at:
|
||||
|
||||
https://51degrees.com/support/documentation/pattern
|
||||
|
||||
The above 51d.all fetch method uses all available HTTP headers for detection. A
|
||||
modest performance improvement can be obtained by only passing one HTTP header
|
||||
to the detection method with the 51d.single converter. The following example
|
||||
uses the User-Agent HTTP header only for detection.
|
||||
|
||||
http-request set-header X-51D-DeviceTypeMobileTablet %[req.fhdr(User-Agent),51d.single(DeviceType,IsMobile,IsTablet)]
|
||||
|
||||
Any HTTP header could be used inplace of User-Agent by changing the parameter
|
||||
provided to req.fhdr.
|
||||
|
||||
When compiled to use the Trie detection method the trie format data file needs
|
||||
to be provided. Changing the extension of the data file from dat to trie will
|
||||
use the correct data.
|
||||
|
||||
51degrees-data-file '51D_REPO_PATH'/data/51Degrees-LiteV3.2.trie
|
||||
|
||||
When used with Trie the Method, Difference and Rank properties are not
|
||||
available.
|
||||
|
||||
The free Lite data file contains information about screen size in pixels and
|
||||
whether the device is a mobile. A full list of available properties is located
|
||||
on the 51Degrees web site at:
|
||||
|
||||
https://51degrees.com/resources/property-dictionary.
|
||||
https://51degrees.com/resources/property-dictionary
|
||||
|
||||
Some properties are only available in the paid for Premium and Enterprise
|
||||
versions of 51Degrees. These data sets no only contain more properties but
|
||||
versions of 51Degrees. These data sets not only contain more properties but
|
||||
are updated weekly and daily and contain signatures for 100,000s of different
|
||||
device combinations. For more information see the data options comparison web
|
||||
page:
|
||||
|
|
Loading…
Reference in New Issue