summaryrefslogtreecommitdiff
path: root/data/extensions/jsr@javascriptrestrictor/fp_config
diff options
context:
space:
mode:
Diffstat (limited to 'data/extensions/jsr@javascriptrestrictor/fp_config')
-rw-r--r--data/extensions/jsr@javascriptrestrictor/fp_config/groups-lvl_0.json408
-rw-r--r--data/extensions/jsr@javascriptrestrictor/fp_config/groups-lvl_1.json408
-rw-r--r--data/extensions/jsr@javascriptrestrictor/fp_config/schema/groups-schema.json177
-rw-r--r--data/extensions/jsr@javascriptrestrictor/fp_config/schema/wrappers-schema.json165
-rw-r--r--data/extensions/jsr@javascriptrestrictor/fp_config/wrappers-lvl_0_1.json1892
5 files changed, 3050 insertions, 0 deletions
diff --git a/data/extensions/jsr@javascriptrestrictor/fp_config/groups-lvl_0.json b/data/extensions/jsr@javascriptrestrictor/fp_config/groups-lvl_0.json
new file mode 100644
index 0000000..34fa563
--- /dev/null
+++ b/data/extensions/jsr@javascriptrestrictor/fp_config/groups-lvl_0.json
@@ -0,0 +1,408 @@
+{
+ "name":"FingerprintingActivity",
+ "description":"Definition of fingerprinting behavior by FPD module.",
+ "severity": [
+ [0, "None", "#3CA519"],
+ [1, "Low", "#80B012"],
+ [2, "Moderate", "#CD9600"],
+ [3, "High", "#E64B19"],
+ [5, "Very High", "#C8004B"]
+ ],
+ "criteria":[
+ {
+ "value":3,
+ "weight":1
+ }
+ ],
+ "groups":[
+ {
+ "name":"BrowserProperties",
+ "description":"Fingerprinting methods based on simple information gathering by accessing certain APIs.",
+ "criteria":[
+ {
+ "value":7,
+ "weight":1
+ },
+ {
+ "value":12,
+ "weight":2
+ },
+ {
+ "value":14,
+ "weight":3
+ }
+ ],
+ "groups":[
+ {
+ "name":"NavigatorBasic",
+ "description":"Basic information about browser and system.",
+ "criteria":[
+ {
+ "percentage":35,
+ "weight":1
+ },
+ {
+ "percentage":65,
+ "weight":2
+ }
+ ]
+ },
+ {
+ "name":"NavigatorHardware",
+ "description":"Hardware information about device.",
+ "criteria":[
+ {
+ "value":1,
+ "weight":1
+ }
+ ]
+ },
+ {
+ "name":"NavigatorMobile",
+ "description":"Information about features supported by mobile devices.",
+ "criteria":[
+ {
+ "value":1,
+ "weight":1
+ }
+ ]
+ },
+ {
+ "name":"NavigatorNetwork",
+ "description":"Information about internet connection.",
+ "criteria":[
+ {
+ "value":3,
+ "weight":1
+ }
+ ]
+ },
+ {
+ "name":"LocalizationInfo",
+ "description":"Localization details and keyboard layout.",
+ "criteria":[
+ {
+ "percentage":50,
+ "weight":1
+ }
+ ]
+ },
+ {
+ "name":"PermissionsInfo",
+ "description":"Querying different permissions through API.",
+ "criteria":[
+ {
+ "percentage":100,
+ "weight":1
+ }
+ ]
+ },
+ {
+ "name":"AudioInfo",
+ "description":"AudioContext configuration parameters.",
+ "criteria":[
+ {
+ "percentage":40,
+ "weight":1
+ }
+ ]
+ },
+ {
+ "name":"ScreenInfo",
+ "description":"Information about screen and its properties.",
+ "criteria":[
+ {
+ "value":5,
+ "weight":1
+ }
+ ]
+ },
+ {
+ "name":"WindowInfo",
+ "description":"Information about screen from root Window object.",
+ "criteria":[
+ {
+ "value":3,
+ "weight":1
+ }
+ ]
+ },
+ {
+ "name":"StorageInfo",
+ "description":"Availability of WebStorage technology.",
+ "criteria":[
+ {
+ "percentage":60,
+ "weight":1
+ }
+ ]
+ },
+ {
+ "name":"NavigatorFlags",
+ "description":"Binary browser settings.",
+ "criteria":[
+ {
+ "percentage":100,
+ "weight":1
+ }
+ ]
+ },
+ {
+ "name":"TimeInfo",
+ "description":"Information about exact time values.",
+ "criteria":[
+ {
+ "access":10,
+ "weight":1
+ }
+ ]
+ },
+ {
+ "name":"WebGLInfo",
+ "description":"Information from WebGL/WebGL2 interface.",
+ "criteria":[
+ {
+ "percentage":50,
+ "weight":1
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "name":"AlgorithmicMethods",
+ "description":"Fingerprinting methods based on specific procedures, calculations or processing.",
+ "criteria":[
+ {
+ "value":1,
+ "weight":2
+ },
+ {
+ "value":2,
+ "weight":3
+ }
+ ],
+ "groups":[
+ {
+ "name":"FontsEnumFingerprint",
+ "description":"System fonts enumeration techniques.",
+ "criteria":[
+ {
+ "percentage":50,
+ "weight":1
+ }
+ ],
+ "groups":[
+ {
+ "name":"JSFontEnum",
+ "criteria":[
+ {
+ "percentage":100,
+ "weight":1
+ }
+ ],
+ "groups":[
+ {
+ "name":"JSFontEnumStepOne"
+ },
+ {
+ "name":"JSFontEnumStepTwo",
+ "criteria":[
+ {
+ "access":15,
+ "weight":1
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "name":"CanvasFontEnum",
+ "criteria":[
+ {
+ "percentage":100,
+ "weight":1
+ }
+ ],
+ "groups":[
+ {
+ "name":"CanvasFontEnumStepOne"
+ },
+ {
+ "name":"CanvasFontEnumStepTwo"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "name":"CanvasFingerprint",
+ "description":"Extraction of rendered image from 2D canvas.",
+ "criteria":[
+ {
+ "percentage":100,
+ "weight":1
+ }
+ ],
+ "groups":[
+ {
+ "name":"CanvasFingerprintStepOne",
+ "criteria":[
+ {
+ "percentage":50,
+ "weight":1
+ }
+ ]
+ },
+ {
+ "name":"CanvasFingerprintStepTwo",
+ "criteria":[
+ {
+ "access":2,
+ "weight":1
+ }
+ ]
+ },
+ {
+ "name":"CanvasFingerprintStepThree"
+ }
+ ]
+ },
+ {
+ "name":"WebGLFingerprint",
+ "description":"Extraction of rendered image from WebGL canvas.",
+ "criteria":[
+ {
+ "percentage":50,
+ "weight":1
+ }
+ ],
+ "groups":[
+ {
+ "name":"WebGL1Fingerprint",
+ "criteria":[
+ {
+ "percentage":100,
+ "weight":1
+ }
+ ],
+ "groups":[
+ {
+ "name":"WebGL1FingerprintStepOne",
+ "criteria":[
+ {
+ "percentage":100,
+ "weight":1
+ }
+ ]
+ },
+ {
+ "name":"WebGL1FingerprintStepTwo",
+ "criteria":[
+ {
+ "percentage":100,
+ "weight":1
+ }
+ ]
+ },
+ {
+ "name":"WebGL1FingerprintStepThree"
+ }
+ ]
+ },
+ {
+ "name":"WebGL2Fingerprint",
+ "criteria":[
+ {
+ "percentage":100,
+ "weight":1
+ }
+ ],
+ "groups":[
+ {
+ "name":"WebGL2FingerprintStepOne",
+ "criteria":[
+ {
+ "percentage":100,
+ "weight":1
+ }
+ ]
+ },
+ {
+ "name":"WebGL2FingerprintStepTwo",
+ "criteria":[
+ {
+ "percentage":100,
+ "weight":1
+ }
+ ]
+ },
+ {
+ "name":"WebGL2FingerprintStepThree"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "name":"WebRTCFingerprint",
+ "description":"Leakage of public or local IP address.",
+ "criteria":[
+ {
+ "percentage":100,
+ "weight":1
+ }
+ ],
+ "groups":[
+ {
+ "name":"WebRTCFingerprintStepOne",
+ "criteria":[
+ {
+ "percentage":50,
+ "weight":1
+ }
+ ]
+ },
+ {
+ "name":"WebRTCFingerprintStepTwo",
+ "criteria":[
+ {
+ "percentage":50,
+ "weight":1
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "name":"AudioContextFingerprint",
+ "description":"Fingerprinting based on AudioContext processing.",
+ "criteria":[
+ {
+ "value":2,
+ "weight":1
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "name":"CrawlFpInspector",
+ "description":"APIs often abused for fingerprinting according to FP-Inspector study.",
+ "criteria":[
+ {
+ "percentage":10,
+ "weight":1
+ },
+ {
+ "percentage":15,
+ "weight":2
+ },
+ {
+ "percentage":20,
+ "weight":3
+ }
+ ]
+ }
+ ]
+} \ No newline at end of file
diff --git a/data/extensions/jsr@javascriptrestrictor/fp_config/groups-lvl_1.json b/data/extensions/jsr@javascriptrestrictor/fp_config/groups-lvl_1.json
new file mode 100644
index 0000000..47f5939
--- /dev/null
+++ b/data/extensions/jsr@javascriptrestrictor/fp_config/groups-lvl_1.json
@@ -0,0 +1,408 @@
+{
+ "name":"FingerprintingActivity",
+ "description":"Definition of fingerprinting behavior by FPD module.",
+ "severity": [
+ [0, "None", "#3CA519"],
+ [1, "Low", "#80B012"],
+ [2, "Moderate", "#CD9600"],
+ [3, "High", "#E64B19"],
+ [5, "Very High", "#C8004B"]
+ ],
+ "criteria":[
+ {
+ "value":3,
+ "weight":1
+ }
+ ],
+ "groups":[
+ {
+ "name":"BrowserProperties",
+ "description":"Fingerprinting methods based on simple information gathering by accessing certain APIs.",
+ "criteria":[
+ {
+ "value":7,
+ "weight":1
+ },
+ {
+ "value":11,
+ "weight":2
+ },
+ {
+ "value":13,
+ "weight":3
+ }
+ ],
+ "groups":[
+ {
+ "name":"NavigatorBasic",
+ "description":"Basic information about browser and system.",
+ "criteria":[
+ {
+ "percentage":35,
+ "weight":1
+ },
+ {
+ "percentage":65,
+ "weight":2
+ }
+ ]
+ },
+ {
+ "name":"NavigatorHardware",
+ "description":"Hardware information about device.",
+ "criteria":[
+ {
+ "value":1,
+ "weight":1
+ }
+ ]
+ },
+ {
+ "name":"NavigatorMobile",
+ "description":"Information about features supported by mobile devices.",
+ "criteria":[
+ {
+ "value":1,
+ "weight":1
+ }
+ ]
+ },
+ {
+ "name":"NavigatorNetwork",
+ "description":"Information about internet connection.",
+ "criteria":[
+ {
+ "value":3,
+ "weight":1
+ }
+ ]
+ },
+ {
+ "name":"LocalizationInfo",
+ "description":"Localization details and keyboard layout.",
+ "criteria":[
+ {
+ "percentage":50,
+ "weight":1
+ }
+ ]
+ },
+ {
+ "name":"PermissionsInfo",
+ "description":"Querying different permissions through API.",
+ "criteria":[
+ {
+ "percentage":100,
+ "weight":1
+ }
+ ]
+ },
+ {
+ "name":"AudioInfo",
+ "description":"AudioContext configuration parameters.",
+ "criteria":[
+ {
+ "percentage":40,
+ "weight":1
+ }
+ ]
+ },
+ {
+ "name":"ScreenInfo",
+ "description":"Information about screen and its properties.",
+ "criteria":[
+ {
+ "value":5,
+ "weight":1
+ }
+ ]
+ },
+ {
+ "name":"WindowInfo",
+ "description":"Information about screen from root Window object.",
+ "criteria":[
+ {
+ "value":3,
+ "weight":1
+ }
+ ]
+ },
+ {
+ "name":"StorageInfo",
+ "description":"Availability of WebStorage technology.",
+ "criteria":[
+ {
+ "percentage":60,
+ "weight":1
+ }
+ ]
+ },
+ {
+ "name":"NavigatorFlags",
+ "description":"Binary browser settings.",
+ "criteria":[
+ {
+ "percentage":100,
+ "weight":1
+ }
+ ]
+ },
+ {
+ "name":"TimeInfo",
+ "description":"Information about exact time values.",
+ "criteria":[
+ {
+ "access":10,
+ "weight":1
+ }
+ ]
+ },
+ {
+ "name":"WebGLInfo",
+ "description":"Information from WebGL/WebGL2 interface.",
+ "criteria":[
+ {
+ "percentage":50,
+ "weight":1
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "name":"AlgorithmicMethods",
+ "description":"Fingerprinting methods based on specific procedures, calculations or processing.",
+ "criteria":[
+ {
+ "value":1,
+ "weight":2
+ },
+ {
+ "value":2,
+ "weight":3
+ }
+ ],
+ "groups":[
+ {
+ "name":"FontsEnumFingerprint",
+ "description":"System fonts enumeration techniques.",
+ "criteria":[
+ {
+ "percentage":50,
+ "weight":1
+ }
+ ],
+ "groups":[
+ {
+ "name":"JSFontEnum",
+ "criteria":[
+ {
+ "percentage":100,
+ "weight":1
+ }
+ ],
+ "groups":[
+ {
+ "name":"JSFontEnumStepOne"
+ },
+ {
+ "name":"JSFontEnumStepTwo",
+ "criteria":[
+ {
+ "access":15,
+ "weight":1
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "name":"CanvasFontEnum",
+ "criteria":[
+ {
+ "percentage":100,
+ "weight":1
+ }
+ ],
+ "groups":[
+ {
+ "name":"CanvasFontEnumStepOne"
+ },
+ {
+ "name":"CanvasFontEnumStepTwo"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "name":"CanvasFingerprint",
+ "description":"Extraction of rendered image from 2D canvas.",
+ "criteria":[
+ {
+ "percentage":100,
+ "weight":1
+ }
+ ],
+ "groups":[
+ {
+ "name":"CanvasFingerprintStepOne",
+ "criteria":[
+ {
+ "percentage":50,
+ "weight":1
+ }
+ ]
+ },
+ {
+ "name":"CanvasFingerprintStepTwo",
+ "criteria":[
+ {
+ "access":2,
+ "weight":1
+ }
+ ]
+ },
+ {
+ "name":"CanvasFingerprintStepThree"
+ }
+ ]
+ },
+ {
+ "name":"WebGLFingerprint",
+ "description":"Extraction of rendered image from WebGL canvas.",
+ "criteria":[
+ {
+ "percentage":50,
+ "weight":1
+ }
+ ],
+ "groups":[
+ {
+ "name":"WebGL1Fingerprint",
+ "criteria":[
+ {
+ "percentage":100,
+ "weight":1
+ }
+ ],
+ "groups":[
+ {
+ "name":"WebGL1FingerprintStepOne",
+ "criteria":[
+ {
+ "percentage":100,
+ "weight":1
+ }
+ ]
+ },
+ {
+ "name":"WebGL1FingerprintStepTwo",
+ "criteria":[
+ {
+ "percentage":100,
+ "weight":1
+ }
+ ]
+ },
+ {
+ "name":"WebGL1FingerprintStepThree"
+ }
+ ]
+ },
+ {
+ "name":"WebGL2Fingerprint",
+ "criteria":[
+ {
+ "percentage":100,
+ "weight":1
+ }
+ ],
+ "groups":[
+ {
+ "name":"WebGL2FingerprintStepOne",
+ "criteria":[
+ {
+ "percentage":100,
+ "weight":1
+ }
+ ]
+ },
+ {
+ "name":"WebGL2FingerprintStepTwo",
+ "criteria":[
+ {
+ "percentage":100,
+ "weight":1
+ }
+ ]
+ },
+ {
+ "name":"WebGL2FingerprintStepThree"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "name":"WebRTCFingerprint",
+ "description":"Leakage of public or local IP address.",
+ "criteria":[
+ {
+ "percentage":100,
+ "weight":1
+ }
+ ],
+ "groups":[
+ {
+ "name":"WebRTCFingerprintStepOne",
+ "criteria":[
+ {
+ "percentage":50,
+ "weight":1
+ }
+ ]
+ },
+ {
+ "name":"WebRTCFingerprintStepTwo",
+ "criteria":[
+ {
+ "percentage":50,
+ "weight":1
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "name":"AudioContextFingerprint",
+ "description":"Fingerprinting based on AudioContext processing.",
+ "criteria":[
+ {
+ "value":2,
+ "weight":1
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "name":"CrawlFpInspector",
+ "description":"APIs often abused for fingerprinting according to FP-Inspector study.",
+ "criteria":[
+ {
+ "percentage":9,
+ "weight":1
+ },
+ {
+ "percentage":13,
+ "weight":2
+ },
+ {
+ "percentage":20,
+ "weight":3
+ }
+ ]
+ }
+ ]
+} \ No newline at end of file
diff --git a/data/extensions/jsr@javascriptrestrictor/fp_config/schema/groups-schema.json b/data/extensions/jsr@javascriptrestrictor/fp_config/schema/groups-schema.json
new file mode 100644
index 0000000..5a96d2f
--- /dev/null
+++ b/data/extensions/jsr@javascriptrestrictor/fp_config/schema/groups-schema.json
@@ -0,0 +1,177 @@
+{
+ "$schema":"http://json-schema.org/draft-07/schema",
+ "definitions":{
+ "group":{
+ "type":"object",
+ "title":"Group object",
+ "description":"Object representing group and its properties.",
+ "properties":{
+ "name":{
+ "type":"string"
+ },
+ "description":{
+ "type":"string"
+ },
+ "criteria":{
+ "$ref":"#/definitions/criteria"
+ },
+ "groups":{
+ "title":"Subgroups array",
+ "description":"Array of subgroups of defined group.",
+ "type":"array",
+ "items":{
+ "$ref":"#/definitions/group"
+ }
+ }
+ },
+ "required":[
+ "name"
+ ],
+ "additionalProperties":false
+ },
+ "criteria":{
+ "type":"array",
+ "title":"Criteria array",
+ "description":"Contains criterion objects to define parent group access/weight.",
+ "if":{
+ "items":[
+ {
+ "$ref":"#/definitions/criterion_access"
+ }
+ ]
+ },
+ "then":{
+ "items":{
+ "$ref":"#/definitions/criterion_access"
+ }
+ },
+ "else":{
+ "items":{
+ "oneOf":[
+ {
+ "$ref":"#/definitions/criterion_value"
+ },
+ {
+ "$ref":"#/definitions/criterion_percentage"
+ }
+ ]
+ }
+ }
+ },
+ "criterion_value":{
+ "type":"object",
+ "title":"Value criterion",
+ "description":"Criterion based on curent weights of direct children. (children = subgroups or wrapped resources)",
+ "properties":{
+ "value":{
+ "type":"integer",
+ "minimum":1,
+ "maximum":1000
+ },
+ "weight":{
+ "type":"integer",
+ "minimum":0
+ }
+ },
+ "required":[
+ "value",
+ "weight"
+ ],
+ "additionalProperties":false
+ },
+ "criterion_percentage":{
+ "type":"object",
+ "title":"Percentage criterion",
+ "description":"Criterion based on percentage of currently gained weights (from max. obtainable) of direct children.",
+ "properties":{
+ "percentage":{
+ "type":"integer",
+ "minimum":0,
+ "maximum":100
+ },
+ "weight":{
+ "type":"integer",
+ "minimum":0
+ }
+ },
+ "required":[
+ "percentage",
+ "weight"
+ ],
+ "additionalProperties":false
+ },
+ "criterion_access":{
+ "type":"object",
+ "title":"Access criterion",
+ "description":"Criterion based on total number of accesses from direct child resources. (subgroups are ignored)",
+ "properties":{
+ "access":{
+ "type":"integer",
+ "minimum":1,
+ "maximum":1000
+ },
+ "weight":{
+ "type":"integer",
+ "minimum":0
+ }
+ },
+ "required":[
+ "access",
+ "weight"
+ ],
+ "additionalProperties":false
+ },
+ "severity_item":{
+ "type":"array",
+ "title":"Severity item",
+ "description":"Each severity item consists of weight number, severity string, and corresponding color.",
+ "items":[
+ {
+ "num_value": "integer"
+ },
+ {
+ "text_value": "string"
+ },
+ {
+ "color": "string",
+ "pattern": "^#(?:[0-9a-fA-F]{3}){1,2}$"
+ }
+ ],
+ "additionalItems": false
+ }
+ },
+ "type":"object",
+ "title":"Root group object",
+ "description":"Object representing root group and its properties.",
+ "properties":{
+ "name":{
+ "type":"string"
+ },
+ "description":{
+ "type":"string"
+ },
+ "severity":{
+ "type":"array",
+ "title":"Severity array",
+ "description":"Contains an array of severity items that represent severity thresholds.",
+ "items":{
+ "$ref":"#/definitions/severity_item"
+ }
+ },
+ "criteria":{
+ "$ref":"#/definitions/criteria"
+ },
+ "groups":{
+ "title":"Array of subgroups",
+ "description":"Array of subgroups of root group.",
+ "type":"array",
+ "items":{
+ "$ref":"#/definitions/group"
+ }
+ }
+ },
+ "required":[
+ "name"
+ ],
+ "additionalProperties":false
+} \ No newline at end of file
diff --git a/data/extensions/jsr@javascriptrestrictor/fp_config/schema/wrappers-schema.json b/data/extensions/jsr@javascriptrestrictor/fp_config/schema/wrappers-schema.json
new file mode 100644
index 0000000..c777a0f
--- /dev/null
+++ b/data/extensions/jsr@javascriptrestrictor/fp_config/schema/wrappers-schema.json
@@ -0,0 +1,165 @@
+{
+ "$schema":"http://json-schema.org/draft-07/schema",
+ "definitions":{
+ "group_property":{
+ "type":"object",
+ "title":"Group property object",
+ "description":"Assigns wrapped property to group.",
+ "if":{
+ "properties":{
+ "property":{
+ "const":"get"
+ }
+ }
+ },
+ "then":{
+ "properties":{
+ "group":{
+ "type":"string"
+ },
+ "property":{
+ "const":"get"
+ },
+ "criteria":{
+ "$ref":"#/definitions/criteria"
+ }
+ },
+ "additionalProperties":false
+ },
+ "else":{
+ "properties":{
+ "group":{
+ "type":"string"
+ },
+ "property":{
+ "const":"set"
+ },
+ "criteria":{
+ "$ref":"#/definitions/criteria"
+ },
+ "arguments":{
+ "oneOf":[
+ {
+ "type":"array"
+ },
+ {
+ "type":"string"
+ }
+ ]
+ }
+ },
+ "additionalProperties":false
+ },
+ "required":[
+ "group"
+ ]
+ },
+ "group_function":{
+ "type":"object",
+ "title":"Group function object",
+ "description":"Assigns wrapped function to group.",
+ "properties":{
+ "group":{
+ "type":"string"
+ },
+ "criteria":{
+ "$ref":"#/definitions/criteria"
+ },
+ "arguments":{
+ "oneOf":[
+ {
+ "type":"array"
+ },
+ {
+ "type":"string"
+ }
+ ]
+ }
+ },
+ "required":[
+ "group"
+ ],
+ "additionalProperties":false
+ },
+ "criteria":{
+ "type":"array",
+ "title":"Criteria array",
+ "description":"Contains criterion objects to define parent group access/weight.",
+ "items":{
+ "$ref":"#/definitions/criterion_value"
+ }
+ },
+ "criterion_value":{
+ "type":"object",
+ "title":"Value criterion",
+ "description":"Criterion defined as number of accesses to resource.",
+ "properties":{
+ "value":{
+ "type":"integer",
+ "minimum":1,
+ "maximum":1000
+ },
+ "weight":{
+ "type":"integer",
+ "minimum":0
+ }
+ },
+ "required":[
+ "value",
+ "weight"
+ ],
+ "additionalProperties":false
+ }
+ },
+ "type":"array",
+ "items":{
+ "type":"object",
+ "title":"Wrapper object",
+ "description":"Represents wrapped resource.",
+ "if":{
+ "properties":{
+ "type":{
+ "const":"property"
+ }
+ }
+ },
+ "then":{
+ "properties":{
+ "resource":{
+ "type":"string"
+ },
+ "type":{
+ "const":"property"
+ },
+ "groups":{
+ "type":"array",
+ "items":{
+ "$ref":"#/definitions/group_property"
+ }
+ }
+ },
+ "additionalProperties":false
+ },
+ "else":{
+ "properties":{
+ "resource":{
+ "type":"string"
+ },
+ "type":{
+ "const":"function"
+ },
+ "groups":{
+ "type":"array",
+ "items":{
+ "$ref":"#/definitions/group_function"
+ }
+ }
+ },
+ "additionalProperties":false
+ },
+ "required":[
+ "resource",
+ "type"
+ ]
+ }
+} \ No newline at end of file
diff --git a/data/extensions/jsr@javascriptrestrictor/fp_config/wrappers-lvl_0_1.json b/data/extensions/jsr@javascriptrestrictor/fp_config/wrappers-lvl_0_1.json
new file mode 100644
index 0000000..5fb3f93
--- /dev/null
+++ b/data/extensions/jsr@javascriptrestrictor/fp_config/wrappers-lvl_0_1.json
@@ -0,0 +1,1892 @@
+[
+ {
+ "resource":"Navigator.prototype.userAgent",
+ "type":"property",
+ "groups":[
+ {
+ "group":"NavigatorBasic",
+ "property":"get",
+ "criteria":[
+ {
+ "value":1,
+ "weight":2
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "resource":"Navigator.prototype.language",
+ "type":"property",
+ "groups":[
+ {
+ "group":"NavigatorBasic",
+ "property":"get"
+ }
+ ]
+ },
+ {
+ "resource":"Navigator.prototype.languages",
+ "type":"property",
+ "groups":[
+ {
+ "group":"NavigatorBasic",
+ "property":"get",
+ "criteria":[
+ {
+ "value":1,
+ "weight":2
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "resource":"Navigator.prototype.platform",
+ "type":"property",
+ "groups":[
+ {
+ "group":"NavigatorBasic",
+ "property":"get"
+ }
+ ]
+ },
+ {
+ "resource":"Navigator.prototype.productSub",
+ "type":"property",
+ "groups":[
+ {
+ "group":"NavigatorBasic",
+ "property":"get"
+ }
+ ]
+ },
+ {
+ "resource":"Navigator.prototype.product",
+ "type":"property",
+ "groups":[
+ {
+ "group":"NavigatorBasic",
+ "property":"get"
+ }
+ ]
+ },
+ {
+ "resource":"Navigator.prototype.vendorSub",
+ "type":"property",
+ "groups":[
+ {
+ "group":"NavigatorBasic",
+ "property":"get",
+ "criteria":[
+ {
+ "value":1,
+ "weight":2
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "resource":"Navigator.prototype.vendor",
+ "type":"property",
+ "groups":[
+ {
+ "group":"NavigatorBasic",
+ "property":"get"
+ }
+ ]
+ },
+ {
+ "resource":"Navigator.prototype.appVersion",
+ "type":"property",
+ "groups":[
+ {
+ "group":"NavigatorBasic",
+ "property":"get",
+ "criteria":[
+ {
+ "value":1,
+ "weight":2
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "resource":"Navigator.prototype.appCodeName",
+ "type":"property",
+ "groups":[
+ {
+ "group":"NavigatorBasic",
+ "property":"get",
+ "criteria":[
+ {
+ "value":1,
+ "weight":2
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "resource":"Navigator.prototype.plugins",
+ "type":"property",
+ "groups":[
+ {
+ "group":"BrowserProperties",
+ "property":"get"
+ }
+ ]
+ },
+ {
+ "resource":"NetworkInformation.prototype.downlink",
+ "type":"property",
+ "groups":[
+ {
+ "group":"NavigatorNetwork",
+ "property":"get"
+ }
+ ]
+ },
+ {
+ "resource":"NetworkInformation.prototype.effectiveType",
+ "type":"property",
+ "groups":[
+ {
+ "group":"NavigatorNetwork",
+ "property":"get"
+ }
+ ]
+ },
+ {
+ "resource":"NetworkInformation.prototype.rtt",
+ "type":"property",
+ "groups":[
+ {
+ "group":"NavigatorNetwork",
+ "property":"get"
+ }
+ ]
+ },
+ {
+ "resource":"NetworkInformation.prototype.saveData",
+ "type":"property",
+ "groups":[
+ {
+ "group":"NavigatorNetwork",
+ "property":"get"
+ }
+ ]
+ },
+ {
+ "resource":"Navigator.prototype.hardwareConcurrency",
+ "type":"property",
+ "groups":[
+ {
+ "group":"NavigatorHardware",
+ "property":"get"
+ }
+ ]
+ },
+ {
+ "resource":"Navigator.prototype.deviceMemory",
+ "type":"property",
+ "groups":[
+ {
+ "group":"NavigatorHardware",
+ "property":"get"
+ }
+ ]
+ },
+ {
+ "resource":"Navigator.prototype.maxTouchPoints",
+ "type":"property",
+ "groups":[
+ {
+ "group":"NavigatorMobile",
+ "property":"get"
+ }
+ ]
+ },
+ {
+ "resource":"Navigator.prototype.vibrate",
+ "type":"function",
+ "groups":[
+ {
+ "group":"NavigatorMobile"
+ }
+ ]
+ },
+ {
+ "resource":"Navigator.prototype.cookieEnabled",
+ "type":"property",
+ "groups":[
+ {
+ "group":"NavigatorFlags",
+ "property":"get"
+ }
+ ]
+ },
+ {
+ "resource":"Navigator.prototype.doNotTrack",
+ "type":"property",
+ "groups":[
+ {
+ "group":"NavigatorFlags",
+ "property":"get"
+ }
+ ]
+ },
+ {
+ "resource":"MediaDevices.prototype.enumerateDevices",
+ "type":"function",
+ "groups":[
+ {
+ "group":"BrowserProperties"
+ }
+ ]
+ },
+ {
+ "resource":"Screen.prototype.height",
+ "type":"property",
+ "groups":[
+ {
+ "group":"ScreenInfo",
+ "property":"get"
+ }
+ ]
+ },
+ {
+ "resource":"Screen.prototype.width",
+ "type":"property",
+ "groups":[
+ {
+ "group":"ScreenInfo",
+ "property":"get"
+ }
+ ]
+ },
+ {
+ "resource":"Screen.prototype.colorDepth",
+ "type":"property",
+ "groups":[
+ {
+ "group":"ScreenInfo",
+ "property":"get"
+ }
+ ]
+ },
+ {
+ "resource":"Screen.prototype.pixelDepth",
+ "type":"property",
+ "groups":[
+ {
+ "group":"ScreenInfo",
+ "property":"get"
+ }
+ ]
+ },
+ {
+ "resource":"Screen.prototype.availHeight",
+ "type":"property",
+ "groups":[
+ {
+ "group":"ScreenInfo",
+ "property":"get"
+ }
+ ]
+ },
+ {
+ "resource":"Screen.prototype.availWidth",
+ "type":"property",
+ "groups":[
+ {
+ "group":"ScreenInfo",
+ "property":"get"
+ }
+ ]
+ },
+ {
+ "resource":"Screen.prototype.availTop",
+ "type":"property",
+ "groups":[
+ {
+ "group":"ScreenInfo",
+ "property":"get"
+ }
+ ]
+ },
+ {
+ "resource":"Screen.prototype.availLeft",
+ "type":"property",
+ "groups":[
+ {
+ "group":"ScreenInfo",
+ "property":"get"
+ }
+ ]
+ },
+ {
+ "resource":"window.devicePixelRatio",
+ "type":"property",
+ "groups":[
+ {
+ "group":"WindowInfo",
+ "property":"get"
+ }
+ ]
+ },
+ {
+ "resource":"window.innerWidth",
+ "type":"property",
+ "groups":[
+ {
+ "group":"WindowInfo",
+ "property":"get"
+ }
+ ]
+ },
+ {
+ "resource":"window.innerHeight",
+ "type":"property",
+ "groups":[
+ {
+ "group":"WindowInfo",
+ "property":"get"
+ }
+ ]
+ },
+ {
+ "resource":"window.outerWidth",
+ "type":"property",
+ "groups":[
+ {
+ "group":"WindowInfo",
+ "property":"get"
+ }
+ ]
+ },
+ {
+ "resource":"window.outerHeight",
+ "type":"property",
+ "groups":[
+ {
+ "group":"WindowInfo",
+ "property":"get"
+ }
+ ]
+ },
+ {
+ "resource":"Date.prototype.getTimezoneOffset",
+ "type":"function",
+ "groups":[
+ {
+ "group":"LocalizationInfo"
+ }
+ ]
+ },
+ {
+ "resource":"Intl.DateTimeFormat.prototype.resolvedOptions",
+ "type":"function",
+ "groups":[
+ {
+ "group":"LocalizationInfo"
+ }
+ ]
+ },
+ {
+ "resource":"Permissions.prototype.query",
+ "type":"function",
+ "groups":[
+ {
+ "group":"PermissionsInfo",
+ "arguments":"diff",
+ "criteria":[
+ {
+ "value":5,
+ "weight":1
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "resource":"HTMLMediaElement.prototype.canPlayType",
+ "type":"function",
+ "groups":[
+ {
+ "group":"BrowserProperties",
+ "arguments":"diff",
+ "criteria":[
+ {
+ "value":5,
+ "weight":1
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "resource":"AudioNode.prototype.channelCount",
+ "type":"property",
+ "groups":[
+ {
+ "group":"AudioInfo",
+ "property":"get"
+ }
+ ]
+ },
+ {
+ "resource":"AudioNode.prototype.channelCountMode",
+ "type":"property",
+ "groups":[
+ {
+ "group":"AudioInfo",
+ "property":"get"
+ }
+ ]
+ },
+ {
+ "resource":"AudioNode.prototype.channelInterpretation",
+ "type":"property",
+ "groups":[
+ {
+ "group":"AudioInfo",
+ "property":"get"
+ }
+ ]
+ },
+ {
+ "resource":"AudioDestinationNode.prototype.maxChannelCount",
+ "type":"property",
+ "groups":[
+ {
+ "group":"AudioInfo",
+ "property":"get"
+ }
+ ]
+ },
+ {
+ "resource":"AudioNode.prototype.numberOfInputs",
+ "type":"property",
+ "groups":[
+ {
+ "group":"AudioInfo",
+ "property":"get"
+ }
+ ]
+ },
+ {
+ "resource":"AudioNode.prototype.numberOfOutputs",
+ "type":"property",
+ "groups":[
+ {
+ "group":"AudioInfo",
+ "property":"get"
+ }
+ ]
+ },
+ {
+ "resource":"AnalyserNode.prototype.fftSize",
+ "type":"property",
+ "groups":[
+ {
+ "group":"AudioInfo",
+ "property":"get"
+ }
+ ]
+ },
+ {
+ "resource":"AnalyserNode.prototype.frequencyBinCount",
+ "type":"property",
+ "groups":[
+ {
+ "group":"AudioInfo",
+ "property":"get"
+ }
+ ]
+ },
+ {
+ "resource":"AnalyserNode.prototype.minDecibels",
+ "type":"property",
+ "groups":[
+ {
+ "group":"AudioInfo",
+ "property":"get"
+ }
+ ]
+ },
+ {
+ "resource":"AnalyserNode.prototype.maxDecibels",
+ "type":"property",
+ "groups":[
+ {
+ "group":"AudioInfo",
+ "property":"get"
+ }
+ ]
+ },
+ {
+ "resource":"AnalyserNode.prototype.smoothingTimeConstant",
+ "type":"property",
+ "groups":[
+ {
+ "group":"AudioInfo",
+ "property":"get"
+ }
+ ]
+ },
+ {
+ "resource":"window.localStorage",
+ "type":"property",
+ "groups":[
+ {
+ "group":"StorageInfo",
+ "property":"get"
+ }
+ ]
+ },
+ {
+ "resource":"window.sessionStorage",
+ "type":"property",
+ "groups":[
+ {
+ "group":"StorageInfo",
+ "property":"get"
+ }
+ ]
+ },
+ {
+ "resource":"window.indexedDB",
+ "type":"property",
+ "groups":[
+ {
+ "group":"StorageInfo",
+ "property":"get",
+ "criteria":[
+ {
+ "value":1,
+ "weight":2
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "resource":"WebGLRenderingContext.prototype.getParameter",
+ "type":"function",
+ "groups":[
+ {
+ "group":"WebGLInfo",
+ "arguments":"diff",
+ "criteria":[
+ {
+ "value":3,
+ "weight":1
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "resource":"WebGL2RenderingContext.prototype.getParameter",
+ "type":"function",
+ "groups":[
+ {
+ "group":"WebGLInfo",
+ "arguments":"diff",
+ "criteria":[
+ {
+ "value":3,
+ "weight":1
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "resource":"Performance.prototype.now",
+ "type":"function",
+ "groups":[
+ {
+ "group":"TimeInfo"
+ }
+ ]
+ },
+ {
+ "resource":"Date.now",
+ "type":"function",
+ "groups":[
+ {
+ "group":"TimeInfo"
+ }
+ ]
+ },
+ {
+ "resource":"CSSStyleDeclaration.prototype.setProperty",
+ "type":"function",
+ "groups":[
+ {
+ "group":"JSFontEnumStepOne",
+ "arguments":[
+ "^\\\"font-family\\\"\\\\S*"
+ ],
+ "criteria":[
+ {
+ "value":15,
+ "weight":1
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "resource":"CSSStyleDeclaration.prototype.fontFamily",
+ "type":"property",
+ "groups":[
+ {
+ "group":"JSFontEnumStepOne",
+ "property":"set",
+ "arguments":"diff",
+ "criteria":[
+ {
+ "value":15,
+ "weight":1
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "resource":"CanvasRenderingContext2D.prototype.font",
+ "type":"property",
+ "groups":[
+ {
+ "group":"CanvasFontEnumStepOne",
+ "property":"set",
+ "arguments":"diff",
+ "criteria":[
+ {
+ "value":15,
+ "weight":1
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "resource":"HTMLElement.prototype.offsetWidth",
+ "type":"property",
+ "groups":[
+ {
+ "group":"JSFontEnumStepTwo",
+ "property":"get"
+ }
+ ]
+ },
+ {
+ "resource":"HTMLElement.prototype.offsetHeight",
+ "type":"property",
+ "groups":[
+ {
+ "group":"JSFontEnumStepTwo",
+ "property":"get"
+ }
+ ]
+ },
+ {
+ "resource":"CanvasRenderingContext2D.prototype.measureText",
+ "type":"function",
+ "groups":[
+ {
+ "group":"CanvasFontEnumStepTwo",
+ "criteria":[
+ {
+ "value":15,
+ "weight":1
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "resource":"CanvasRenderingContext2D.prototype.fillText",
+ "type":"function",
+ "groups":[
+ {
+ "group":"CanvasFingerprintStepOne",
+ "arguments":[
+ ".{9,}"
+ ]
+ }
+ ]
+ },
+ {
+ "resource":"CanvasRenderingContext2D.prototype.strokeText",
+ "type":"function",
+ "groups":[
+ {
+ "group":"CanvasFingerprintStepOne",
+ "arguments":[
+ ".{9,}"
+ ]
+ }
+ ]
+ },
+ {
+ "resource":"CanvasRenderingContext2D.prototype.fillStyle",
+ "type":"property",
+ "groups":[
+ {
+ "group":"CanvasFingerprintStepTwo",
+ "property":"set",
+ "arguments":"diff"
+ }
+ ]
+ },
+ {
+ "resource":"CanvasRenderingContext2D.prototype.strokeStyle",
+ "type":"property",
+ "groups":[
+ {
+ "group":"CanvasFingerprintStepTwo",
+ "property":"set",
+ "arguments":"diff"
+ }
+ ]
+ },
+ {
+ "resource":"HTMLCanvasElement.prototype.toDataURL",
+ "type":"function",
+ "groups":[
+ {
+ "group":"CanvasFingerprintStepThree"
+ },
+ {
+ "group":"WebGL1FingerprintStepThree"
+ },
+ {
+ "group":"WebGL2FingerprintStepThree"
+ }
+ ]
+ },
+ {
+ "resource":"HTMLCanvasElement.prototype.toBlob",
+ "type":"function",
+ "groups":[
+ {
+ "group":"CanvasFingerprintStepThree"
+ },
+ {
+ "group":"WebGL1FingerprintStepThree"
+ },
+ {
+ "group":"WebGL2FingerprintStepThree"
+ }
+ ]
+ },
+ {
+ "resource":"CanvasRenderingContext2D.prototype.getImageData",
+ "type":"function",
+ "groups":[
+ {
+ "group":"CanvasFingerprintStepThree"
+ },
+ {
+ "group":"WebGL1FingerprintStepThree"
+ },
+ {
+ "group":"WebGL2FingerprintStepThree"
+ }
+ ]
+ },
+ {
+ "resource":"WebGLRenderingContext.prototype.createBuffer",
+ "type":"function",
+ "groups":[
+ {
+ "group":"WebGL1FingerprintStepOne"
+ }
+ ]
+ },
+ {
+ "resource":"WebGLRenderingContext.prototype.bindBuffer",
+ "type":"function",
+ "groups":[
+ {
+ "group":"WebGL1FingerprintStepOne"
+ }
+ ]
+ },
+ {
+ "resource":"WebGLRenderingContext.prototype.vertexAttribPointer",
+ "type":"function",
+ "groups":[
+ {
+ "group":"WebGL1FingerprintStepTwo"
+ }
+ ]
+ },
+ {
+ "resource":"WebGLRenderingContext.prototype.enableVertexAttribArray",
+ "type":"function",
+ "groups":[
+ {
+ "group":"WebGL1FingerprintStepTwo"
+ }
+ ]
+ },
+ {
+ "resource":"WebGL2RenderingContext.prototype.createBuffer",
+ "type":"function",
+ "groups":[
+ {
+ "group":"WebGL2FingerprintStepOne"
+ }
+ ]
+ },
+ {
+ "resource":"WebGL2RenderingContext.prototype.bindBuffer",
+ "type":"function",
+ "groups":[
+ {
+ "group":"WebGL2FingerprintStepOne"
+ }
+ ]
+ },
+ {
+ "resource":"WebGL2RenderingContext.prototype.vertexAttribPointer",
+ "type":"function",
+ "groups":[
+ {
+ "group":"WebGL2FingerprintStepTwo"
+ }
+ ]
+ },
+ {
+ "resource":"WebGL2RenderingContext.prototype.enableVertexAttribArray",
+ "type":"function",
+ "groups":[
+ {
+ "group":"WebGL2FingerprintStepTwo"
+ }
+ ]
+ },
+ {
+ "resource":"RTCPeerConnection.prototype.createDataChannel",
+ "type":"function",
+ "groups":[
+ {
+ "group":"WebRTCFingerprintStepOne"
+ }
+ ]
+ },
+ {
+ "resource":"RTCPeerConnection.prototype.createOffer",
+ "type":"function",
+ "groups":[
+ {
+ "group":"WebRTCFingerprintStepOne"
+ }
+ ]
+ },
+ {
+ "resource":"RTCPeerConnection.prototype.onicecandidate",
+ "type":"property",
+ "groups":[
+ {
+ "group":"WebRTCFingerprintStepTwo"
+ }
+ ]
+ },
+ {
+ "resource":"RTCPeerConnection.prototype.localDescription",
+ "type":"property",
+ "groups":[
+ {
+ "group":"WebRTCFingerprintStepTwo"
+ }
+ ]
+ },
+ {
+ "resource":"BaseAudioContext.prototype.createOscillator",
+ "type":"function",
+ "groups":[
+ {
+ "group":"AudioContextFingerprint"
+ }
+ ]
+ },
+ {
+ "resource":"BaseAudioContext.prototype.createDynamicsCompressor",
+ "type":"function",
+ "groups":[
+ {
+ "group":"AudioContextFingerprint"
+ }
+ ]
+ },
+ {
+ "resource":"BaseAudioContext.prototype.destination",
+ "type":"property",
+ "groups":[
+ {
+ "group":"AudioContextFingerprint"
+ }
+ ]
+ },
+ {
+ "resource":"BaseAudioContext.prototype.createAnalyser",
+ "type":"function",
+ "groups":[
+ {
+ "group":"AudioContextFingerprint"
+ }
+ ]
+ },
+ {
+ "resource":"BaseAudioContext.prototype.createBuffer",
+ "type":"function",
+ "groups":[
+ {
+ "group":"AudioContextFingerprint"
+ }
+ ]
+ },
+ {
+ "resource":"BaseAudioContext.prototype.createScriptProcessor",
+ "type":"function",
+ "groups":[
+ {
+ "group":"AudioContextFingerprint"
+ }
+ ]
+ },
+ {
+ "resource":"OfflineAudioContext.prototype.startRendering",
+ "type":"function",
+ "groups":[
+ {
+ "group":"AudioContextFingerprint"
+ }
+ ]
+ },
+ {
+ "resource":"OfflineAudioContext.prototype.oncomplete",
+ "type":"property",
+ "groups":[
+ {
+ "group":"AudioContextFingerprint"
+ }
+ ]
+ },
+ {
+ "resource":"SubtleCrypto.prototype.exportKey",
+ "type":"function",
+ "groups":[
+ {
+ "group":"CrawlFpInspector",
+ "criteria":[
+ {
+ "value":1,
+ "weight":16
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "resource":"RTCPeerConnection.prototype.iceGatheringState",
+ "type":"property",
+ "groups":[
+ {
+ "group":"CrawlFpInspector",
+ "property":"get",
+ "criteria":[
+ {
+ "value":1,
+ "weight":15
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "resource":"OfflineAudioCompletionEvent.prototype.renderedBuffer",
+ "type":"property",
+ "groups":[
+ {
+ "group":"CrawlFpInspector",
+ "property":"get",
+ "criteria":[
+ {
+ "value":1,
+ "weight":14
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "resource":"OfflineAudioContext.prototype.startRendering",
+ "type":"function",
+ "groups":[
+ {
+ "group":"CrawlFpInspector",
+ "criteria":[
+ {
+ "value":1,
+ "weight":14
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "resource":"BaseAudioContext.prototype.createOscillator",
+ "type":"function",
+ "groups":[
+ {
+ "group":"CrawlFpInspector",
+ "criteria":[
+ {
+ "value":1,
+ "weight":14
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "resource":"DynamicsCompressorNode.prototype.knee",
+ "type":"property",
+ "groups":[
+ {
+ "group":"CrawlFpInspector",
+ "property":"set",
+ "criteria":[
+ {
+ "value":1,
+ "weight":14
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "resource":"console.timeLog",
+ "type":"function",
+ "groups":[
+ {
+ "group":"CrawlFpInspector",
+ "criteria":[
+ {
+ "value":1,
+ "weight":13
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "resource":"MediaDevices.prototype.enumerateDevices",
+ "type":"function",
+ "groups":[
+ {
+ "group":"CrawlFpInspector",
+ "criteria":[
+ {
+ "value":1,
+ "weight":12
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "resource":"Navigator.prototype.vibrate",
+ "type":"function",
+ "groups":[
+ {
+ "group":"CrawlFpInspector",
+ "criteria":[
+ {
+ "value":1,
+ "weight":12
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "resource":"Navigator.prototype.vendorSub",
+ "type":"property",
+ "groups":[
+ {
+ "group":"CrawlFpInspector",
+ "property":"get",
+ "criteria":[
+ {
+ "value":1,
+ "weight":12
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "resource":"AudioParam.prototype.setValueAtTime",
+ "type":"function",
+ "groups":[
+ {
+ "group":"CrawlFpInspector",
+ "criteria":[
+ {
+ "value":1,
+ "weight":12
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "resource":"AudioBuffer.prototype.getChannelData",
+ "type":"function",
+ "groups":[
+ {
+ "group":"CrawlFpInspector",
+ "criteria":[
+ {
+ "value":1,
+ "weight":12
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "resource":"WebGLRenderingContext.prototype.getExtension",
+ "type":"function",
+ "groups":[
+ {
+ "group":"CrawlFpInspector",
+ "arguments":["\\\"WEBGL_draw_buffers\\\""],
+ "criteria":[
+ {
+ "value":1,
+ "weight":11
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "resource":"WebGLRenderingContext.prototype.getExtension",
+ "type":"function",
+ "groups":[
+ {
+ "group":"CrawlFpInspector",
+ "arguments":["\\\"EXT_sRGB\\\""],
+ "criteria":[
+ {
+ "value":1,
+ "weight":11
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "resource":"HTMLMediaElement.prototype.setSinkId",
+ "type":"function",
+ "groups":[
+ {
+ "group":"CrawlFpInspector",
+ "criteria":[
+ {
+ "value":1,
+ "weight":11
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "resource":"Navigator.prototype.productSub",
+ "type":"property",
+ "groups":[
+ {
+ "group":"CrawlFpInspector",
+ "property":"get",
+ "criteria":[
+ {
+ "value":1,
+ "weight":11
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "resource":"Navigator.prototype.hardwareConcurrency",
+ "type":"property",
+ "groups":[
+ {
+ "group":"CrawlFpInspector",
+ "property":"get",
+ "criteria":[
+ {
+ "value":1,
+ "weight":11
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "resource":"Navigator.prototype.requestMIDIAccess",
+ "type":"function",
+ "groups":[
+ {
+ "group":"CrawlFpInspector",
+ "criteria":[
+ {
+ "value":1,
+ "weight":10
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "resource":"Keyboard.prototype.getLayoutMap",
+ "type":"function",
+ "groups":[
+ {
+ "group":"CrawlFpInspector",
+ "criteria":[
+ {
+ "value":1,
+ "weight":10
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "resource":"Navigator.prototype.buildID",
+ "type":"property",
+ "groups":[
+ {
+ "group":"CrawlFpInspector",
+ "property":"get",
+ "criteria":[
+ {
+ "value":1,
+ "weight":10
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "resource":"WebGLRenderingContext.prototype.getSupportedExtensions",
+ "type":"function",
+ "groups":[
+ {
+ "group":"CrawlFpInspector",
+ "criteria":[
+ {
+ "value":1,
+ "weight":10
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "resource":"Navigator.prototype.oscpu",
+ "type":"property",
+ "groups":[
+ {
+ "group":"CrawlFpInspector",
+ "property":"get",
+ "criteria":[
+ {
+ "value":1,
+ "weight":10
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "resource":"BaseAudioContext.prototype.createDynamicsCompressor",
+ "type":"function",
+ "groups":[
+ {
+ "group":"CrawlFpInspector",
+ "criteria":[
+ {
+ "value":1,
+ "weight":10
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "resource":"WebGLRenderingContext.prototype.getExtension",
+ "type":"function",
+ "groups":[
+ {
+ "group":"CrawlFpInspector",
+ "arguments":["\\\"EXT_texture_filter_anisotropic\\\""],
+ "criteria":[
+ {
+ "value":1,
+ "weight":10
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "resource":"CanvasRenderingContext2D.prototype.isPointInPath",
+ "type":"function",
+ "groups":[
+ {
+ "group":"CrawlFpInspector",
+ "criteria":[
+ {
+ "value":1,
+ "weight":10
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "resource":"WebGLRenderingContext.prototype.getContextAttributes",
+ "type":"function",
+ "groups":[
+ {
+ "group":"CrawlFpInspector",
+ "criteria":[
+ {
+ "value":1,
+ "weight":10
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "resource":"WebGLRenderingContext.prototype.depthFunc",
+ "type":"function",
+ "groups":[
+ {
+ "group":"CrawlFpInspector",
+ "criteria":[
+ {
+ "value":1,
+ "weight":10
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "resource":"WebGLRenderingContext.prototype.getShaderPrecisionFormat",
+ "type":"function",
+ "groups":[
+ {
+ "group":"CrawlFpInspector",
+ "criteria":[
+ {
+ "value":1,
+ "weight":10
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "resource":"WebGLShaderPrecisionFormat.prototype.rangeMax",
+ "type":"property",
+ "groups":[
+ {
+ "group":"CrawlFpInspector",
+ "property":"get",
+ "criteria":[
+ {
+ "value":1,
+ "weight":10
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "resource":"WebGLRenderingContext.prototype.clearColor",
+ "type":"function",
+ "groups":[
+ {
+ "group":"CrawlFpInspector",
+ "criteria":[
+ {
+ "value":1,
+ "weight":10
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "resource":"FileSystemFileEntry.prototype.createWriter",
+ "type":"function",
+ "groups":[
+ {
+ "group":"CrawlFpInspector",
+ "criteria":[
+ {
+ "value":1,
+ "weight":10
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "resource":"WebGLRenderingContext.prototype.getUniformLocation",
+ "type":"function",
+ "groups":[
+ {
+ "group":"CrawlFpInspector",
+ "criteria":[
+ {
+ "value":1,
+ "weight":10
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "resource":"WebGLRenderingContext.prototype.getAttribLocation",
+ "type":"function",
+ "groups":[
+ {
+ "group":"CrawlFpInspector",
+ "criteria":[
+ {
+ "value":1,
+ "weight":10
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "resource":"WebGLRenderingContext.prototype.drawArrays",
+ "type":"function",
+ "groups":[
+ {
+ "group":"CrawlFpInspector",
+ "criteria":[
+ {
+ "value":1,
+ "weight":10
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "resource":"WebGLRenderingContext.prototype.useProgram",
+ "type":"function",
+ "groups":[
+ {
+ "group":"CrawlFpInspector",
+ "criteria":[
+ {
+ "value":1,
+ "weight":9
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "resource":"WebGLRenderingContext.prototype.enableVertexAttribArray",
+ "type":"function",
+ "groups":[
+ {
+ "group":"CrawlFpInspector",
+ "criteria":[
+ {
+ "value":1,
+ "weight":9
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "resource":"WebGLRenderingContext.prototype.createShader",
+ "type":"function",
+ "groups":[
+ {
+ "group":"CrawlFpInspector",
+ "criteria":[
+ {
+ "value":1,
+ "weight":9
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "resource":"WebGLRenderingContext.prototype.bindBuffer",
+ "type":"function",
+ "groups":[
+ {
+ "group":"CrawlFpInspector",
+ "criteria":[
+ {
+ "value":1,
+ "weight":9
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "resource":"Navigator.prototype.appCodeName",
+ "type":"property",
+ "groups":[
+ {
+ "group":"CrawlFpInspector",
+ "property":"get",
+ "criteria":[
+ {
+ "value":1,
+ "weight":9
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "resource":"WebGLRenderingContext.prototype.getExtension",
+ "type":"function",
+ "groups":[
+ {
+ "group":"CrawlFpInspector",
+ "arguments":["\\\"OES_standard_derivatives\\\""],
+ "criteria":[
+ {
+ "value":1,
+ "weight":9
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "resource":"CanvasRenderingContext2D.prototype.textBaseline",
+ "type":"property",
+ "groups":[
+ {
+ "group":"CrawlFpInspector",
+ "property":"set",
+ "criteria":[
+ {
+ "value":1,
+ "weight":9
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "resource":"CanvasRenderingContext2D.prototype.globalCompositeOperation",
+ "type":"property",
+ "groups":[
+ {
+ "group":"CrawlFpInspector",
+ "property":"set",
+ "criteria":[
+ {
+ "value":1,
+ "weight":9
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "resource":"BaseAudioContext.prototype.createScriptProcessor",
+ "type":"function",
+ "groups":[
+ {
+ "group":"CrawlFpInspector",
+ "criteria":[
+ {
+ "value":1,
+ "weight":9
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "resource":"BaseAudioContext.prototype.createBuffer",
+ "type":"function",
+ "groups":[
+ {
+ "group":"CrawlFpInspector",
+ "criteria":[
+ {
+ "value":1,
+ "weight":9
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "resource":"BaseAudioContext.prototype.createAnalyser",
+ "type":"function",
+ "groups":[
+ {
+ "group":"CrawlFpInspector",
+ "criteria":[
+ {
+ "value":1,
+ "weight":9
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "resource":"CanvasRenderingContext2D.prototype.fillRect",
+ "type":"function",
+ "groups":[
+ {
+ "group":"CrawlFpInspector",
+ "criteria":[
+ {
+ "value":1,
+ "weight":9
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "resource":"WebGLRenderingContext.prototype.getExtension",
+ "type":"function",
+ "groups":[
+ {
+ "group":"CrawlFpInspector",
+ "arguments":["\\\"WEBGL_debug_renderer_info\\\""],
+ "criteria":[
+ {
+ "value":1,
+ "weight":9
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "resource":"HTMLCanvasElement.prototype.toDataURL",
+ "type":"function",
+ "groups":[
+ {
+ "group":"CrawlFpInspector",
+ "criteria":[
+ {
+ "value":1,
+ "weight":9
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "resource":"WebGLRenderingContext.prototype.getExtension",
+ "type":"function",
+ "groups":[
+ {
+ "group":"CrawlFpInspector",
+ "arguments":"diff",
+ "criteria":[
+ {
+ "value":2,
+ "weight":8
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "resource":"WebGL2RenderingContext.prototype.getExtension",
+ "type":"function",
+ "groups":[
+ {
+ "group":"CrawlFpInspector",
+ "criteria":[
+ {
+ "value":1,
+ "weight":8
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "resource":"CanvasRenderingContext2D.prototype.fillStyle",
+ "type":"property",
+ "groups":[
+ {
+ "group":"CrawlFpInspector",
+ "property":"set",
+ "criteria":[
+ {
+ "value":1,
+ "weight":8
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "resource":"Navigator.prototype.maxTouchPoints",
+ "type":"property",
+ "groups":[
+ {
+ "group":"CrawlFpInspector",
+ "property":"get",
+ "criteria":[
+ {
+ "value":1,
+ "weight":8
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "resource":"AnalyserNode.prototype.frequencyBinCount",
+ "type":"property",
+ "groups":[
+ {
+ "group":"CrawlFpInspector",
+ "property":"get",
+ "criteria":[
+ {
+ "value":1,
+ "weight":8
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "resource":"WebGLRenderingContext.prototype.getParameter",
+ "type":"function",
+ "groups":[
+ {
+ "group":"CrawlFpInspector",
+ "criteria":[
+ {
+ "value":1,
+ "weight":8
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "resource":"CanvasRenderingContext2D.prototype.closePath",
+ "type":"function",
+ "groups":[
+ {
+ "group":"CrawlFpInspector",
+ "criteria":[
+ {
+ "value":1,
+ "weight":8
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "resource":"Navigator.prototype.languages",
+ "type":"property",
+ "groups":[
+ {
+ "group":"CrawlFpInspector",
+ "property":"get",
+ "criteria":[
+ {
+ "value":1,
+ "weight":8
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "resource":"CanvasRenderingContext2D.prototype.beginPath",
+ "type":"function",
+ "groups":[
+ {
+ "group":"CrawlFpInspector",
+ "criteria":[
+ {
+ "value":1,
+ "weight":8
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "resource":"Navigator.prototype.doNotTrack",
+ "type":"property",
+ "groups":[
+ {
+ "group":"CrawlFpInspector",
+ "property":"get",
+ "criteria":[
+ {
+ "value":1,
+ "weight":8
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "resource":"CanvasRenderingContext2D.prototype.getImageData",
+ "type":"function",
+ "groups":[
+ {
+ "group":"CrawlFpInspector",
+ "criteria":[
+ {
+ "value":1,
+ "weight":8
+ }
+ ]
+ }
+ ]
+ }
+] \ No newline at end of file