fpscanner: add missing fields (#4604)

This commit is contained in:
blotus
2026-08-12 16:33:00 +02:00
committed by GitHub
parent 0166b31750
commit 82ef97cf3d
8 changed files with 423 additions and 142 deletions
+2 -2
View File
@@ -141,10 +141,10 @@ jobs:
run: |
set -e
# ensure the version of 'protoc' matches the one that generated the files
PROTOBUF_VERSION="35.0"
PROTOBUF_VERSION="35.1"
JAVY_VERSION="8.1.1"
# sha256 of the release assets, verified before use
PROTOBUF_SHA256="a45cda0989c17dd950db55f6fbe1e5814c50fda08e87aa422980ac1f89dddbbc"
PROTOBUF_SHA256="6930ebf62bd4ea607b98fff052596c6ee564b9835b4ce172c75a3f53ae9d91b7"
JAVY_SHA256="4bec224e1d51827808fd063541a2b4d94cf474744636b692be63e7a29bec83a6"
# don't pollute the repo
pushd $HOME
+24
View File
@@ -111,6 +111,10 @@ func (fi FlexInt) Int() int {
"hover": true,
"anyHover": true,
"colorDepth": 10
},
"keyboard": {
"layout": "Backquote,` Backslash,\\ BracketLeft,[ BracketRight,]",
"layoutSize": 4
}
},
"browser": {
@@ -167,6 +171,10 @@ func (fi FlexInt) Int() int {
"toSourceError": {
"toSourceError": "TypeError:+Cannot+read+properties+of+null+(reading+usdfsh)",
"hasToSource": false
},
"ai": {
"summarizerAvailability": "downloadable",
"summarizerLanguageAvailability": "available"
}
},
"graphics": {
@@ -360,6 +368,7 @@ type fingerprintDevice struct {
ScreenResolution fingerprintScreenResolution `json:"screenResolution"`
MultimediaDevices fingerprintMultimediaDevices `json:"multimediaDevices"`
MediaQueries fingerprintDeviceMediaQueries `json:"mediaQueries"`
Keyboard fingerprintDeviceKeyboard `json:"keyboard"`
}
type fingerprintScreenResolution struct {
@@ -392,6 +401,14 @@ type fingerprintDeviceMediaQueries struct {
ColorDepth FlexInt `json:"colorDepth"`
}
// Layout is the KeyboardLayoutMap serialized as "code,key" pairs joined by
// spaces; both fields are "NA" (Layout) / 0 (LayoutSize, via FlexInt) on
// browsers without navigator.keyboard.
type fingerprintDeviceKeyboard struct {
Layout string `json:"layout"`
LayoutSize FlexInt `json:"layoutSize"`
}
type fingerprintBrowser struct {
UserAgent string `json:"userAgent"`
Features fingerprintBrowserFeatures `json:"features"`
@@ -401,6 +418,7 @@ type fingerprintBrowser struct {
ETSL FlexInt `json:"etsl"`
Maths string `json:"maths"`
ToSourceError fingerprintBrowserToSourceError `json:"toSourceError"`
AI fingerprintBrowserAI `json:"ai"`
}
type fingerprintBrowserFeatures struct {
@@ -433,6 +451,12 @@ type fingerprintBrowserFeatures struct {
FencedFrame FlexBool `json:"fencedFrame"`
Sanitizer FlexBool `json:"sanitizer"`
OTPCredential FlexBool `json:"otpCredential"`
SumPrecise FlexBool `json:"sumPrecise"`
}
type fingerprintBrowserAI struct {
SummarizerAvailability string `json:"summarizerAvailability"`
SummarizerLanguageAvailability string `json:"summarizerLanguageAvailability"`
}
type fingerprintBrowserPlugins struct {
+22
View File
@@ -111,6 +111,12 @@ func deviceFromProto(d *pb.FingerprintDevice) fingerprintDevice {
ColorDepth: FlexInt(mq.GetColorDepth()),
}
}
if kb := d.GetKeyboard(); kb != nil {
out.Keyboard = fingerprintDeviceKeyboard{
Layout: kb.GetLayout(),
LayoutSize: FlexInt(kb.GetLayoutSize()),
}
}
return out
}
@@ -152,6 +158,7 @@ func browserFromProto(b *pb.FingerprintBrowser) fingerprintBrowser {
FencedFrame: FlexBool(ft.GetFencedFrame()),
Sanitizer: FlexBool(ft.GetSanitizer()),
OTPCredential: FlexBool(ft.GetOtpCredential()),
SumPrecise: FlexBool(ft.GetSumPrecise()),
}
}
if pl := b.GetPlugins(); pl != nil {
@@ -192,6 +199,12 @@ func browserFromProto(b *pb.FingerprintBrowser) fingerprintBrowser {
HasToSource: FlexBool(tse.GetHasToSource()),
}
}
if ai := b.GetAi(); ai != nil {
out.AI = fingerprintBrowserAI{
SummarizerAvailability: ai.GetSummarizerAvailability(),
SummarizerLanguageAvailability: ai.GetSummarizerLanguageAvailability(),
}
}
return out
}
@@ -372,6 +385,10 @@ func (d fingerprintDevice) toProto() *pb.FingerprintDevice {
AnyHover: bool(d.MediaQueries.AnyHover),
ColorDepth: int32(d.MediaQueries.ColorDepth),
},
Keyboard: &pb.FingerprintDeviceKeyboard{
Layout: d.Keyboard.Layout,
LayoutSize: int32(d.Keyboard.LayoutSize),
},
}
}
@@ -416,6 +433,7 @@ func (b fingerprintBrowser) toProto() *pb.FingerprintBrowser {
FencedFrame: bool(b.Features.FencedFrame),
Sanitizer: bool(b.Features.Sanitizer),
OtpCredential: bool(b.Features.OTPCredential),
SumPrecise: bool(b.Features.SumPrecise),
},
Plugins: &pb.FingerprintBrowserPlugins{
IsValidPluginArray: bool(b.Plugins.IsValidPluginArray),
@@ -444,6 +462,10 @@ func (b fingerprintBrowser) toProto() *pb.FingerprintBrowser {
ToSourceError: b.ToSourceError.ToSourceError,
HasToSource: bool(b.ToSourceError.HasToSource),
},
Ai: &pb.FingerprintBrowserAI{
SummarizerAvailability: b.AI.SummarizerAvailability,
SummarizerLanguageAvailability: b.AI.SummarizerLanguageAvailability,
},
}
}
@@ -0,0 +1,77 @@
package challenge
import (
"encoding/json"
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestKeyboardSignal(t *testing.T) {
t.Run("parsed from the bundle payload", func(t *testing.T) {
fp := mustUnmarshal(t, `{"signals": {"device": {"keyboard": {
"layout": "Backquote,` + "`" + ` Backslash,\\ BracketLeft,[",
"layoutSize": 3
}}}}`)
assert.Equal(t, "Backquote,` Backslash,\\ BracketLeft,[", fp.Signals.Device.Keyboard.Layout)
assert.Equal(t, FlexInt(3), fp.Signals.Device.Keyboard.LayoutSize)
})
// Browsers without navigator.keyboard (and collection errors) report "NA"
// for both fields.
t.Run("unsupported browser", func(t *testing.T) {
fp := mustUnmarshal(t, `{"signals": {"device": {"keyboard": {"layout": "NA", "layoutSize": "NA"}}}}`)
assert.Equal(t, "NA", fp.Signals.Device.Keyboard.Layout)
assert.Equal(t, FlexInt(0), fp.Signals.Device.Keyboard.LayoutSize)
})
t.Run("survives the cookie proto round-trip", func(t *testing.T) {
fp := mustUnmarshal(t, `{"signals": {"device": {"keyboard": {"layout": "KeyQ,a KeyW,z", "layoutSize": 2}}}}`)
got := fingerprintDataFromProto(fp.ToProto())
assert.Equal(t, fp.Signals.Device.Keyboard, got.Signals.Device.Keyboard)
})
}
func TestAISignal(t *testing.T) {
// availability() returns an enum string, not a bool — the library's own
// TS type says boolean, the implementation and its tests say string.
t.Run("availability enum", func(t *testing.T) {
fp := mustUnmarshal(t, `{"signals": {"browser": {"ai": {
"summarizerAvailability": "downloadable",
"summarizerLanguageAvailability": "unavailable"
}}}}`)
assert.Equal(t, "downloadable", fp.Signals.Browser.AI.SummarizerAvailability)
assert.Equal(t, "unavailable", fp.Signals.Browser.AI.SummarizerLanguageAvailability)
got := fingerprintDataFromProto(fp.ToProto())
assert.Equal(t, fp.Signals.Browser.AI, got.Signals.Browser.AI)
})
t.Run("unsupported browser", func(t *testing.T) {
fp := mustUnmarshal(t, `{"signals": {"browser": {"ai": {"summarizerAvailability": "NA", "summarizerLanguageAvailability": "NA"}}}}`)
assert.Equal(t, "NA", fp.Signals.Browser.AI.SummarizerAvailability)
assert.Equal(t, "NA", fp.Signals.Browser.AI.SummarizerLanguageAvailability)
})
}
func TestSumPreciseFeature(t *testing.T) {
fp := mustUnmarshal(t, `{"signals": {"browser": {"features": {"otpCredential": true, "sumPrecise": true}}}}`)
assert.True(t, fp.Signals.Browser.Features.SumPrecise.Bool())
assert.True(t, fingerprintDataFromProto(fp.ToProto()).Signals.Browser.Features.SumPrecise.Bool())
}
func TestKeyboardSignalMissing(t *testing.T) {
fp := &FingerprintData{}
require.NoError(t, json.Unmarshal([]byte(`{"signals": {"device": {"cpuCount": 4}}}`), fp))
assert.Equal(t, fingerprintDeviceKeyboard{}, fp.Signals.Device.Keyboard)
assert.Equal(t, fingerprintDeviceKeyboard{}, fingerprintDataFromProto(fp.ToProto()).Signals.Device.Keyboard)
}
+283 -138
View File
@@ -1,7 +1,7 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.36.11
// protoc v7.35.0
// protoc v7.35.1
// source: fingerprint.proto
package pb
@@ -364,6 +364,7 @@ type FingerprintDevice struct {
ScreenResolution *FingerprintScreenResolution `protobuf:"bytes,4,opt,name=screenResolution,proto3" json:"screenResolution,omitempty"`
MultimediaDevices *FingerprintMultimediaDevices `protobuf:"bytes,5,opt,name=multimediaDevices,proto3" json:"multimediaDevices,omitempty"`
MediaQueries *FingerprintDeviceMediaQueries `protobuf:"bytes,6,opt,name=mediaQueries,proto3" json:"mediaQueries,omitempty"`
Keyboard *FingerprintDeviceKeyboard `protobuf:"bytes,7,opt,name=keyboard,proto3" json:"keyboard,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
@@ -440,6 +441,13 @@ func (x *FingerprintDevice) GetMediaQueries() *FingerprintDeviceMediaQueries {
return nil
}
func (x *FingerprintDevice) GetKeyboard() *FingerprintDeviceKeyboard {
if x != nil {
return x.Keyboard
}
return nil
}
type FingerprintScreenResolution struct {
state protoimpl.MessageState `protogen:"open.v1"`
Width int32 `protobuf:"varint,1,opt,name=width,proto3" json:"width,omitempty"`
@@ -716,6 +724,58 @@ func (x *FingerprintDeviceMediaQueries) GetColorDepth() int32 {
return 0
}
type FingerprintDeviceKeyboard struct {
state protoimpl.MessageState `protogen:"open.v1"`
Layout string `protobuf:"bytes,1,opt,name=layout,proto3" json:"layout,omitempty"`
LayoutSize int32 `protobuf:"varint,2,opt,name=layoutSize,proto3" json:"layoutSize,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *FingerprintDeviceKeyboard) Reset() {
*x = FingerprintDeviceKeyboard{}
mi := &file_fingerprint_proto_msgTypes[8]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *FingerprintDeviceKeyboard) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*FingerprintDeviceKeyboard) ProtoMessage() {}
func (x *FingerprintDeviceKeyboard) ProtoReflect() protoreflect.Message {
mi := &file_fingerprint_proto_msgTypes[8]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use FingerprintDeviceKeyboard.ProtoReflect.Descriptor instead.
func (*FingerprintDeviceKeyboard) Descriptor() ([]byte, []int) {
return file_fingerprint_proto_rawDescGZIP(), []int{8}
}
func (x *FingerprintDeviceKeyboard) GetLayout() string {
if x != nil {
return x.Layout
}
return ""
}
func (x *FingerprintDeviceKeyboard) GetLayoutSize() int32 {
if x != nil {
return x.LayoutSize
}
return 0
}
type FingerprintBrowser struct {
state protoimpl.MessageState `protogen:"open.v1"`
UserAgent string `protobuf:"bytes,1,opt,name=userAgent,proto3" json:"userAgent,omitempty"`
@@ -726,13 +786,14 @@ type FingerprintBrowser struct {
Etsl int32 `protobuf:"varint,6,opt,name=etsl,proto3" json:"etsl,omitempty"`
Maths string `protobuf:"bytes,7,opt,name=maths,proto3" json:"maths,omitempty"`
ToSourceError *FingerprintBrowserToSourceError `protobuf:"bytes,8,opt,name=toSourceError,proto3" json:"toSourceError,omitempty"`
Ai *FingerprintBrowserAI `protobuf:"bytes,9,opt,name=ai,proto3" json:"ai,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *FingerprintBrowser) Reset() {
*x = FingerprintBrowser{}
mi := &file_fingerprint_proto_msgTypes[8]
mi := &file_fingerprint_proto_msgTypes[9]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -744,7 +805,7 @@ func (x *FingerprintBrowser) String() string {
func (*FingerprintBrowser) ProtoMessage() {}
func (x *FingerprintBrowser) ProtoReflect() protoreflect.Message {
mi := &file_fingerprint_proto_msgTypes[8]
mi := &file_fingerprint_proto_msgTypes[9]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -757,7 +818,7 @@ func (x *FingerprintBrowser) ProtoReflect() protoreflect.Message {
// Deprecated: Use FingerprintBrowser.ProtoReflect.Descriptor instead.
func (*FingerprintBrowser) Descriptor() ([]byte, []int) {
return file_fingerprint_proto_rawDescGZIP(), []int{8}
return file_fingerprint_proto_rawDescGZIP(), []int{9}
}
func (x *FingerprintBrowser) GetUserAgent() string {
@@ -816,6 +877,65 @@ func (x *FingerprintBrowser) GetToSourceError() *FingerprintBrowserToSourceError
return nil
}
func (x *FingerprintBrowser) GetAi() *FingerprintBrowserAI {
if x != nil {
return x.Ai
}
return nil
}
type FingerprintBrowserAI struct {
state protoimpl.MessageState `protogen:"open.v1"`
SummarizerAvailability string `protobuf:"bytes,1,opt,name=summarizerAvailability,proto3" json:"summarizerAvailability,omitempty"`
SummarizerLanguageAvailability string `protobuf:"bytes,2,opt,name=summarizerLanguageAvailability,proto3" json:"summarizerLanguageAvailability,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *FingerprintBrowserAI) Reset() {
*x = FingerprintBrowserAI{}
mi := &file_fingerprint_proto_msgTypes[10]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *FingerprintBrowserAI) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*FingerprintBrowserAI) ProtoMessage() {}
func (x *FingerprintBrowserAI) ProtoReflect() protoreflect.Message {
mi := &file_fingerprint_proto_msgTypes[10]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use FingerprintBrowserAI.ProtoReflect.Descriptor instead.
func (*FingerprintBrowserAI) Descriptor() ([]byte, []int) {
return file_fingerprint_proto_rawDescGZIP(), []int{10}
}
func (x *FingerprintBrowserAI) GetSummarizerAvailability() string {
if x != nil {
return x.SummarizerAvailability
}
return ""
}
func (x *FingerprintBrowserAI) GetSummarizerLanguageAvailability() string {
if x != nil {
return x.SummarizerLanguageAvailability
}
return ""
}
type FingerprintBrowserFeatures struct {
state protoimpl.MessageState `protogen:"open.v1"`
Bitmask string `protobuf:"bytes,1,opt,name=bitmask,proto3" json:"bitmask,omitempty"`
@@ -847,13 +967,14 @@ type FingerprintBrowserFeatures struct {
FencedFrame bool `protobuf:"varint,27,opt,name=fencedFrame,proto3" json:"fencedFrame,omitempty"`
Sanitizer bool `protobuf:"varint,28,opt,name=sanitizer,proto3" json:"sanitizer,omitempty"`
OtpCredential bool `protobuf:"varint,29,opt,name=otpCredential,proto3" json:"otpCredential,omitempty"`
SumPrecise bool `protobuf:"varint,30,opt,name=sumPrecise,proto3" json:"sumPrecise,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *FingerprintBrowserFeatures) Reset() {
*x = FingerprintBrowserFeatures{}
mi := &file_fingerprint_proto_msgTypes[9]
mi := &file_fingerprint_proto_msgTypes[11]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -865,7 +986,7 @@ func (x *FingerprintBrowserFeatures) String() string {
func (*FingerprintBrowserFeatures) ProtoMessage() {}
func (x *FingerprintBrowserFeatures) ProtoReflect() protoreflect.Message {
mi := &file_fingerprint_proto_msgTypes[9]
mi := &file_fingerprint_proto_msgTypes[11]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -878,7 +999,7 @@ func (x *FingerprintBrowserFeatures) ProtoReflect() protoreflect.Message {
// Deprecated: Use FingerprintBrowserFeatures.ProtoReflect.Descriptor instead.
func (*FingerprintBrowserFeatures) Descriptor() ([]byte, []int) {
return file_fingerprint_proto_rawDescGZIP(), []int{9}
return file_fingerprint_proto_rawDescGZIP(), []int{11}
}
func (x *FingerprintBrowserFeatures) GetBitmask() string {
@@ -1084,6 +1205,13 @@ func (x *FingerprintBrowserFeatures) GetOtpCredential() bool {
return false
}
func (x *FingerprintBrowserFeatures) GetSumPrecise() bool {
if x != nil {
return x.SumPrecise
}
return false
}
type FingerprintBrowserPlugins struct {
state protoimpl.MessageState `protogen:"open.v1"`
IsValidPluginArray bool `protobuf:"varint,1,opt,name=isValidPluginArray,proto3" json:"isValidPluginArray,omitempty"`
@@ -1097,7 +1225,7 @@ type FingerprintBrowserPlugins struct {
func (x *FingerprintBrowserPlugins) Reset() {
*x = FingerprintBrowserPlugins{}
mi := &file_fingerprint_proto_msgTypes[10]
mi := &file_fingerprint_proto_msgTypes[12]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1109,7 +1237,7 @@ func (x *FingerprintBrowserPlugins) String() string {
func (*FingerprintBrowserPlugins) ProtoMessage() {}
func (x *FingerprintBrowserPlugins) ProtoReflect() protoreflect.Message {
mi := &file_fingerprint_proto_msgTypes[10]
mi := &file_fingerprint_proto_msgTypes[12]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1122,7 +1250,7 @@ func (x *FingerprintBrowserPlugins) ProtoReflect() protoreflect.Message {
// Deprecated: Use FingerprintBrowserPlugins.ProtoReflect.Descriptor instead.
func (*FingerprintBrowserPlugins) Descriptor() ([]byte, []int) {
return file_fingerprint_proto_rawDescGZIP(), []int{10}
return file_fingerprint_proto_rawDescGZIP(), []int{12}
}
func (x *FingerprintBrowserPlugins) GetIsValidPluginArray() bool {
@@ -1170,7 +1298,7 @@ type FingerprintBrowserExtensions struct {
func (x *FingerprintBrowserExtensions) Reset() {
*x = FingerprintBrowserExtensions{}
mi := &file_fingerprint_proto_msgTypes[11]
mi := &file_fingerprint_proto_msgTypes[13]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1182,7 +1310,7 @@ func (x *FingerprintBrowserExtensions) String() string {
func (*FingerprintBrowserExtensions) ProtoMessage() {}
func (x *FingerprintBrowserExtensions) ProtoReflect() protoreflect.Message {
mi := &file_fingerprint_proto_msgTypes[11]
mi := &file_fingerprint_proto_msgTypes[13]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1195,7 +1323,7 @@ func (x *FingerprintBrowserExtensions) ProtoReflect() protoreflect.Message {
// Deprecated: Use FingerprintBrowserExtensions.ProtoReflect.Descriptor instead.
func (*FingerprintBrowserExtensions) Descriptor() ([]byte, []int) {
return file_fingerprint_proto_rawDescGZIP(), []int{11}
return file_fingerprint_proto_rawDescGZIP(), []int{13}
}
func (x *FingerprintBrowserExtensions) GetBitmask() string {
@@ -1228,7 +1356,7 @@ type FingerprintBrowserHighEntropyValues struct {
func (x *FingerprintBrowserHighEntropyValues) Reset() {
*x = FingerprintBrowserHighEntropyValues{}
mi := &file_fingerprint_proto_msgTypes[12]
mi := &file_fingerprint_proto_msgTypes[14]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1240,7 +1368,7 @@ func (x *FingerprintBrowserHighEntropyValues) String() string {
func (*FingerprintBrowserHighEntropyValues) ProtoMessage() {}
func (x *FingerprintBrowserHighEntropyValues) ProtoReflect() protoreflect.Message {
mi := &file_fingerprint_proto_msgTypes[12]
mi := &file_fingerprint_proto_msgTypes[14]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1253,7 +1381,7 @@ func (x *FingerprintBrowserHighEntropyValues) ProtoReflect() protoreflect.Messag
// Deprecated: Use FingerprintBrowserHighEntropyValues.ProtoReflect.Descriptor instead.
func (*FingerprintBrowserHighEntropyValues) Descriptor() ([]byte, []int) {
return file_fingerprint_proto_rawDescGZIP(), []int{12}
return file_fingerprint_proto_rawDescGZIP(), []int{14}
}
func (x *FingerprintBrowserHighEntropyValues) GetArchitecture() string {
@@ -1322,7 +1450,7 @@ type FingerprintBrandVersion struct {
func (x *FingerprintBrandVersion) Reset() {
*x = FingerprintBrandVersion{}
mi := &file_fingerprint_proto_msgTypes[13]
mi := &file_fingerprint_proto_msgTypes[15]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1334,7 +1462,7 @@ func (x *FingerprintBrandVersion) String() string {
func (*FingerprintBrandVersion) ProtoMessage() {}
func (x *FingerprintBrandVersion) ProtoReflect() protoreflect.Message {
mi := &file_fingerprint_proto_msgTypes[13]
mi := &file_fingerprint_proto_msgTypes[15]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1347,7 +1475,7 @@ func (x *FingerprintBrandVersion) ProtoReflect() protoreflect.Message {
// Deprecated: Use FingerprintBrandVersion.ProtoReflect.Descriptor instead.
func (*FingerprintBrandVersion) Descriptor() ([]byte, []int) {
return file_fingerprint_proto_rawDescGZIP(), []int{13}
return file_fingerprint_proto_rawDescGZIP(), []int{15}
}
func (x *FingerprintBrandVersion) GetBrand() string {
@@ -1374,7 +1502,7 @@ type FingerprintBrowserToSourceError struct {
func (x *FingerprintBrowserToSourceError) Reset() {
*x = FingerprintBrowserToSourceError{}
mi := &file_fingerprint_proto_msgTypes[14]
mi := &file_fingerprint_proto_msgTypes[16]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1386,7 +1514,7 @@ func (x *FingerprintBrowserToSourceError) String() string {
func (*FingerprintBrowserToSourceError) ProtoMessage() {}
func (x *FingerprintBrowserToSourceError) ProtoReflect() protoreflect.Message {
mi := &file_fingerprint_proto_msgTypes[14]
mi := &file_fingerprint_proto_msgTypes[16]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1399,7 +1527,7 @@ func (x *FingerprintBrowserToSourceError) ProtoReflect() protoreflect.Message {
// Deprecated: Use FingerprintBrowserToSourceError.ProtoReflect.Descriptor instead.
func (*FingerprintBrowserToSourceError) Descriptor() ([]byte, []int) {
return file_fingerprint_proto_rawDescGZIP(), []int{14}
return file_fingerprint_proto_rawDescGZIP(), []int{16}
}
func (x *FingerprintBrowserToSourceError) GetToSourceError() string {
@@ -1427,7 +1555,7 @@ type FingerprintGraphics struct {
func (x *FingerprintGraphics) Reset() {
*x = FingerprintGraphics{}
mi := &file_fingerprint_proto_msgTypes[15]
mi := &file_fingerprint_proto_msgTypes[17]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1439,7 +1567,7 @@ func (x *FingerprintGraphics) String() string {
func (*FingerprintGraphics) ProtoMessage() {}
func (x *FingerprintGraphics) ProtoReflect() protoreflect.Message {
mi := &file_fingerprint_proto_msgTypes[15]
mi := &file_fingerprint_proto_msgTypes[17]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1452,7 +1580,7 @@ func (x *FingerprintGraphics) ProtoReflect() protoreflect.Message {
// Deprecated: Use FingerprintGraphics.ProtoReflect.Descriptor instead.
func (*FingerprintGraphics) Descriptor() ([]byte, []int) {
return file_fingerprint_proto_rawDescGZIP(), []int{15}
return file_fingerprint_proto_rawDescGZIP(), []int{17}
}
func (x *FingerprintGraphics) GetWebGL() *FingerprintGraphicsWebGL {
@@ -1486,7 +1614,7 @@ type FingerprintGraphicsWebGL struct {
func (x *FingerprintGraphicsWebGL) Reset() {
*x = FingerprintGraphicsWebGL{}
mi := &file_fingerprint_proto_msgTypes[16]
mi := &file_fingerprint_proto_msgTypes[18]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1498,7 +1626,7 @@ func (x *FingerprintGraphicsWebGL) String() string {
func (*FingerprintGraphicsWebGL) ProtoMessage() {}
func (x *FingerprintGraphicsWebGL) ProtoReflect() protoreflect.Message {
mi := &file_fingerprint_proto_msgTypes[16]
mi := &file_fingerprint_proto_msgTypes[18]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1511,7 +1639,7 @@ func (x *FingerprintGraphicsWebGL) ProtoReflect() protoreflect.Message {
// Deprecated: Use FingerprintGraphicsWebGL.ProtoReflect.Descriptor instead.
func (*FingerprintGraphicsWebGL) Descriptor() ([]byte, []int) {
return file_fingerprint_proto_rawDescGZIP(), []int{16}
return file_fingerprint_proto_rawDescGZIP(), []int{18}
}
func (x *FingerprintGraphicsWebGL) GetVendor() string {
@@ -1540,7 +1668,7 @@ type FingerprintGraphicsWebGPU struct {
func (x *FingerprintGraphicsWebGPU) Reset() {
*x = FingerprintGraphicsWebGPU{}
mi := &file_fingerprint_proto_msgTypes[17]
mi := &file_fingerprint_proto_msgTypes[19]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1552,7 +1680,7 @@ func (x *FingerprintGraphicsWebGPU) String() string {
func (*FingerprintGraphicsWebGPU) ProtoMessage() {}
func (x *FingerprintGraphicsWebGPU) ProtoReflect() protoreflect.Message {
mi := &file_fingerprint_proto_msgTypes[17]
mi := &file_fingerprint_proto_msgTypes[19]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1565,7 +1693,7 @@ func (x *FingerprintGraphicsWebGPU) ProtoReflect() protoreflect.Message {
// Deprecated: Use FingerprintGraphicsWebGPU.ProtoReflect.Descriptor instead.
func (*FingerprintGraphicsWebGPU) Descriptor() ([]byte, []int) {
return file_fingerprint_proto_rawDescGZIP(), []int{17}
return file_fingerprint_proto_rawDescGZIP(), []int{19}
}
func (x *FingerprintGraphicsWebGPU) GetVendor() string {
@@ -1606,7 +1734,7 @@ type FingerprintGraphicsCanvas struct {
func (x *FingerprintGraphicsCanvas) Reset() {
*x = FingerprintGraphicsCanvas{}
mi := &file_fingerprint_proto_msgTypes[18]
mi := &file_fingerprint_proto_msgTypes[20]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1618,7 +1746,7 @@ func (x *FingerprintGraphicsCanvas) String() string {
func (*FingerprintGraphicsCanvas) ProtoMessage() {}
func (x *FingerprintGraphicsCanvas) ProtoReflect() protoreflect.Message {
mi := &file_fingerprint_proto_msgTypes[18]
mi := &file_fingerprint_proto_msgTypes[20]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1631,7 +1759,7 @@ func (x *FingerprintGraphicsCanvas) ProtoReflect() protoreflect.Message {
// Deprecated: Use FingerprintGraphicsCanvas.ProtoReflect.Descriptor instead.
func (*FingerprintGraphicsCanvas) Descriptor() ([]byte, []int) {
return file_fingerprint_proto_rawDescGZIP(), []int{18}
return file_fingerprint_proto_rawDescGZIP(), []int{20}
}
func (x *FingerprintGraphicsCanvas) GetHasModifiedCanvas() bool {
@@ -1663,7 +1791,7 @@ type FingerprintCodecs struct {
func (x *FingerprintCodecs) Reset() {
*x = FingerprintCodecs{}
mi := &file_fingerprint_proto_msgTypes[19]
mi := &file_fingerprint_proto_msgTypes[21]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1675,7 +1803,7 @@ func (x *FingerprintCodecs) String() string {
func (*FingerprintCodecs) ProtoMessage() {}
func (x *FingerprintCodecs) ProtoReflect() protoreflect.Message {
mi := &file_fingerprint_proto_msgTypes[19]
mi := &file_fingerprint_proto_msgTypes[21]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1688,7 +1816,7 @@ func (x *FingerprintCodecs) ProtoReflect() protoreflect.Message {
// Deprecated: Use FingerprintCodecs.ProtoReflect.Descriptor instead.
func (*FingerprintCodecs) Descriptor() ([]byte, []int) {
return file_fingerprint_proto_rawDescGZIP(), []int{19}
return file_fingerprint_proto_rawDescGZIP(), []int{21}
}
func (x *FingerprintCodecs) GetAudioCanPlayTypeHash() string {
@@ -1750,7 +1878,7 @@ type FingerprintLocale struct {
func (x *FingerprintLocale) Reset() {
*x = FingerprintLocale{}
mi := &file_fingerprint_proto_msgTypes[20]
mi := &file_fingerprint_proto_msgTypes[22]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1762,7 +1890,7 @@ func (x *FingerprintLocale) String() string {
func (*FingerprintLocale) ProtoMessage() {}
func (x *FingerprintLocale) ProtoReflect() protoreflect.Message {
mi := &file_fingerprint_proto_msgTypes[20]
mi := &file_fingerprint_proto_msgTypes[22]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1775,7 +1903,7 @@ func (x *FingerprintLocale) ProtoReflect() protoreflect.Message {
// Deprecated: Use FingerprintLocale.ProtoReflect.Descriptor instead.
func (*FingerprintLocale) Descriptor() ([]byte, []int) {
return file_fingerprint_proto_rawDescGZIP(), []int{20}
return file_fingerprint_proto_rawDescGZIP(), []int{22}
}
func (x *FingerprintLocale) GetInternationalization() *FingerprintLocaleInternationalization {
@@ -1802,7 +1930,7 @@ type FingerprintLocaleInternationalization struct {
func (x *FingerprintLocaleInternationalization) Reset() {
*x = FingerprintLocaleInternationalization{}
mi := &file_fingerprint_proto_msgTypes[21]
mi := &file_fingerprint_proto_msgTypes[23]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1814,7 +1942,7 @@ func (x *FingerprintLocaleInternationalization) String() string {
func (*FingerprintLocaleInternationalization) ProtoMessage() {}
func (x *FingerprintLocaleInternationalization) ProtoReflect() protoreflect.Message {
mi := &file_fingerprint_proto_msgTypes[21]
mi := &file_fingerprint_proto_msgTypes[23]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1827,7 +1955,7 @@ func (x *FingerprintLocaleInternationalization) ProtoReflect() protoreflect.Mess
// Deprecated: Use FingerprintLocaleInternationalization.ProtoReflect.Descriptor instead.
func (*FingerprintLocaleInternationalization) Descriptor() ([]byte, []int) {
return file_fingerprint_proto_rawDescGZIP(), []int{21}
return file_fingerprint_proto_rawDescGZIP(), []int{23}
}
func (x *FingerprintLocaleInternationalization) GetTimezone() string {
@@ -1854,7 +1982,7 @@ type FingerprintLocaleLanguages struct {
func (x *FingerprintLocaleLanguages) Reset() {
*x = FingerprintLocaleLanguages{}
mi := &file_fingerprint_proto_msgTypes[22]
mi := &file_fingerprint_proto_msgTypes[24]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1866,7 +1994,7 @@ func (x *FingerprintLocaleLanguages) String() string {
func (*FingerprintLocaleLanguages) ProtoMessage() {}
func (x *FingerprintLocaleLanguages) ProtoReflect() protoreflect.Message {
mi := &file_fingerprint_proto_msgTypes[22]
mi := &file_fingerprint_proto_msgTypes[24]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1879,7 +2007,7 @@ func (x *FingerprintLocaleLanguages) ProtoReflect() protoreflect.Message {
// Deprecated: Use FingerprintLocaleLanguages.ProtoReflect.Descriptor instead.
func (*FingerprintLocaleLanguages) Descriptor() ([]byte, []int) {
return file_fingerprint_proto_rawDescGZIP(), []int{22}
return file_fingerprint_proto_rawDescGZIP(), []int{24}
}
func (x *FingerprintLocaleLanguages) GetLanguages() []string {
@@ -1906,7 +2034,7 @@ type FingerprintContexts struct {
func (x *FingerprintContexts) Reset() {
*x = FingerprintContexts{}
mi := &file_fingerprint_proto_msgTypes[23]
mi := &file_fingerprint_proto_msgTypes[25]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1918,7 +2046,7 @@ func (x *FingerprintContexts) String() string {
func (*FingerprintContexts) ProtoMessage() {}
func (x *FingerprintContexts) ProtoReflect() protoreflect.Message {
mi := &file_fingerprint_proto_msgTypes[23]
mi := &file_fingerprint_proto_msgTypes[25]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1931,7 +2059,7 @@ func (x *FingerprintContexts) ProtoReflect() protoreflect.Message {
// Deprecated: Use FingerprintContexts.ProtoReflect.Descriptor instead.
func (*FingerprintContexts) Descriptor() ([]byte, []int) {
return file_fingerprint_proto_rawDescGZIP(), []int{23}
return file_fingerprint_proto_rawDescGZIP(), []int{25}
}
func (x *FingerprintContexts) GetIframe() *FingerprintIframeContext {
@@ -1962,7 +2090,7 @@ type FingerprintIframeContext struct {
func (x *FingerprintIframeContext) Reset() {
*x = FingerprintIframeContext{}
mi := &file_fingerprint_proto_msgTypes[24]
mi := &file_fingerprint_proto_msgTypes[26]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1974,7 +2102,7 @@ func (x *FingerprintIframeContext) String() string {
func (*FingerprintIframeContext) ProtoMessage() {}
func (x *FingerprintIframeContext) ProtoReflect() protoreflect.Message {
mi := &file_fingerprint_proto_msgTypes[24]
mi := &file_fingerprint_proto_msgTypes[26]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1987,7 +2115,7 @@ func (x *FingerprintIframeContext) ProtoReflect() protoreflect.Message {
// Deprecated: Use FingerprintIframeContext.ProtoReflect.Descriptor instead.
func (*FingerprintIframeContext) Descriptor() ([]byte, []int) {
return file_fingerprint_proto_rawDescGZIP(), []int{24}
return file_fingerprint_proto_rawDescGZIP(), []int{26}
}
func (x *FingerprintIframeContext) GetWebdriver() bool {
@@ -2047,7 +2175,7 @@ type FingerprintWebWorkerContext struct {
func (x *FingerprintWebWorkerContext) Reset() {
*x = FingerprintWebWorkerContext{}
mi := &file_fingerprint_proto_msgTypes[25]
mi := &file_fingerprint_proto_msgTypes[27]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2059,7 +2187,7 @@ func (x *FingerprintWebWorkerContext) String() string {
func (*FingerprintWebWorkerContext) ProtoMessage() {}
func (x *FingerprintWebWorkerContext) ProtoReflect() protoreflect.Message {
mi := &file_fingerprint_proto_msgTypes[25]
mi := &file_fingerprint_proto_msgTypes[27]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2072,7 +2200,7 @@ func (x *FingerprintWebWorkerContext) ProtoReflect() protoreflect.Message {
// Deprecated: Use FingerprintWebWorkerContext.ProtoReflect.Descriptor instead.
func (*FingerprintWebWorkerContext) Descriptor() ([]byte, []int) {
return file_fingerprint_proto_rawDescGZIP(), []int{25}
return file_fingerprint_proto_rawDescGZIP(), []int{27}
}
func (x *FingerprintWebWorkerContext) GetVendor() string {
@@ -2153,7 +2281,7 @@ type FingerprintFastBotDetectionDetails struct {
func (x *FingerprintFastBotDetectionDetails) Reset() {
*x = FingerprintFastBotDetectionDetails{}
mi := &file_fingerprint_proto_msgTypes[26]
mi := &file_fingerprint_proto_msgTypes[28]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2165,7 +2293,7 @@ func (x *FingerprintFastBotDetectionDetails) String() string {
func (*FingerprintFastBotDetectionDetails) ProtoMessage() {}
func (x *FingerprintFastBotDetectionDetails) ProtoReflect() protoreflect.Message {
mi := &file_fingerprint_proto_msgTypes[26]
mi := &file_fingerprint_proto_msgTypes[28]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2178,7 +2306,7 @@ func (x *FingerprintFastBotDetectionDetails) ProtoReflect() protoreflect.Message
// Deprecated: Use FingerprintFastBotDetectionDetails.ProtoReflect.Descriptor instead.
func (*FingerprintFastBotDetectionDetails) Descriptor() ([]byte, []int) {
return file_fingerprint_proto_rawDescGZIP(), []int{26}
return file_fingerprint_proto_rawDescGZIP(), []int{28}
}
func (x *FingerprintFastBotDetectionDetails) GetHeadlessChromeScreenResolution() *FingerprintDetectionResult {
@@ -2337,7 +2465,7 @@ type FingerprintDetectionResult struct {
func (x *FingerprintDetectionResult) Reset() {
*x = FingerprintDetectionResult{}
mi := &file_fingerprint_proto_msgTypes[27]
mi := &file_fingerprint_proto_msgTypes[29]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2349,7 +2477,7 @@ func (x *FingerprintDetectionResult) String() string {
func (*FingerprintDetectionResult) ProtoMessage() {}
func (x *FingerprintDetectionResult) ProtoReflect() protoreflect.Message {
mi := &file_fingerprint_proto_msgTypes[27]
mi := &file_fingerprint_proto_msgTypes[29]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2362,7 +2490,7 @@ func (x *FingerprintDetectionResult) ProtoReflect() protoreflect.Message {
// Deprecated: Use FingerprintDetectionResult.ProtoReflect.Descriptor instead.
func (*FingerprintDetectionResult) Descriptor() ([]byte, []int) {
return file_fingerprint_proto_rawDescGZIP(), []int{27}
return file_fingerprint_proto_rawDescGZIP(), []int{29}
}
func (x *FingerprintDetectionResult) GetDetected() bool {
@@ -2403,7 +2531,7 @@ type FingerprintBotAlias struct {
func (x *FingerprintBotAlias) Reset() {
*x = FingerprintBotAlias{}
mi := &file_fingerprint_proto_msgTypes[28]
mi := &file_fingerprint_proto_msgTypes[30]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2415,7 +2543,7 @@ func (x *FingerprintBotAlias) String() string {
func (*FingerprintBotAlias) ProtoMessage() {}
func (x *FingerprintBotAlias) ProtoReflect() protoreflect.Message {
mi := &file_fingerprint_proto_msgTypes[28]
mi := &file_fingerprint_proto_msgTypes[30]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2428,7 +2556,7 @@ func (x *FingerprintBotAlias) ProtoReflect() protoreflect.Message {
// Deprecated: Use FingerprintBotAlias.ProtoReflect.Descriptor instead.
func (*FingerprintBotAlias) Descriptor() ([]byte, []int) {
return file_fingerprint_proto_rawDescGZIP(), []int{28}
return file_fingerprint_proto_rawDescGZIP(), []int{30}
}
func (x *FingerprintBotAlias) GetHeadlessChromeScreenResolution() bool {
@@ -2627,14 +2755,15 @@ const file_fingerprint_proto_rawDesc = "" +
"\n" +
"playwright\x18\x05 \x01(\bR\n" +
"playwright\x12B\n" +
"\x1cnavigatorPropertyDescriptors\x18\x06 \x01(\tR\x1cnavigatorPropertyDescriptors\"\xe2\x02\n" +
"\x1cnavigatorPropertyDescriptors\x18\x06 \x01(\tR\x1cnavigatorPropertyDescriptors\"\xa6\x03\n" +
"\x11fingerprintDevice\x12\x1a\n" +
"\bcpuCount\x18\x01 \x01(\x05R\bcpuCount\x12\x16\n" +
"\x06memory\x18\x02 \x01(\x05R\x06memory\x12\x1a\n" +
"\bplatform\x18\x03 \x01(\tR\bplatform\x12T\n" +
"\x10screenResolution\x18\x04 \x01(\v2(.fingerprint.fingerprintScreenResolutionR\x10screenResolution\x12W\n" +
"\x11multimediaDevices\x18\x05 \x01(\v2).fingerprint.fingerprintMultimediaDevicesR\x11multimediaDevices\x12N\n" +
"\fmediaQueries\x18\x06 \x01(\v2*.fingerprint.fingerprintDeviceMediaQueriesR\fmediaQueries\"\xd1\x02\n" +
"\fmediaQueries\x18\x06 \x01(\v2*.fingerprint.fingerprintDeviceMediaQueriesR\fmediaQueries\x12B\n" +
"\bkeyboard\x18\a \x01(\v2&.fingerprint.fingerprintDeviceKeyboardR\bkeyboard\"\xd1\x02\n" +
"\x1bfingerprintScreenResolution\x12\x14\n" +
"\x05width\x18\x01 \x01(\x05R\x05width\x12\x16\n" +
"\x06height\x18\x02 \x01(\x05R\x06height\x12\x1e\n" +
@@ -2670,7 +2799,12 @@ const file_fingerprint_proto_rawDesc = "" +
"\banyHover\x18\b \x01(\bR\banyHover\x12\x1e\n" +
"\n" +
"colorDepth\x18\t \x01(\x05R\n" +
"colorDepth\"\xe2\x03\n" +
"colorDepth\"S\n" +
"\x19fingerprintDeviceKeyboard\x12\x16\n" +
"\x06layout\x18\x01 \x01(\tR\x06layout\x12\x1e\n" +
"\n" +
"layoutSize\x18\x02 \x01(\x05R\n" +
"layoutSize\"\x95\x04\n" +
"\x12fingerprintBrowser\x12\x1c\n" +
"\tuserAgent\x18\x01 \x01(\tR\tuserAgent\x12C\n" +
"\bfeatures\x18\x02 \x01(\v2'.fingerprint.fingerprintBrowserFeaturesR\bfeatures\x12@\n" +
@@ -2681,7 +2815,11 @@ const file_fingerprint_proto_rawDesc = "" +
"\x11highEntropyValues\x18\x05 \x01(\v20.fingerprint.fingerprintBrowserHighEntropyValuesR\x11highEntropyValues\x12\x12\n" +
"\x04etsl\x18\x06 \x01(\x05R\x04etsl\x12\x14\n" +
"\x05maths\x18\a \x01(\tR\x05maths\x12R\n" +
"\rtoSourceError\x18\b \x01(\v2,.fingerprint.fingerprintBrowserToSourceErrorR\rtoSourceError\"\xa2\b\n" +
"\rtoSourceError\x18\b \x01(\v2,.fingerprint.fingerprintBrowserToSourceErrorR\rtoSourceError\x121\n" +
"\x02ai\x18\t \x01(\v2!.fingerprint.fingerprintBrowserAIR\x02ai\"\x96\x01\n" +
"\x14fingerprintBrowserAI\x126\n" +
"\x16summarizerAvailability\x18\x01 \x01(\tR\x16summarizerAvailability\x12F\n" +
"\x1esummarizerLanguageAvailability\x18\x02 \x01(\tR\x1esummarizerLanguageAvailability\"\xc2\b\n" +
"\x1afingerprintBrowserFeatures\x12\x18\n" +
"\abitmask\x18\x01 \x01(\tR\abitmask\x12\x16\n" +
"\x06chrome\x18\x02 \x01(\bR\x06chrome\x12\x14\n" +
@@ -2714,7 +2852,10 @@ const file_fingerprint_proto_rawDesc = "" +
"\veditContext\x18\x1a \x01(\bR\veditContext\x12 \n" +
"\vfencedFrame\x18\x1b \x01(\bR\vfencedFrame\x12\x1c\n" +
"\tsanitizer\x18\x1c \x01(\bR\tsanitizer\x12$\n" +
"\rotpCredential\x18\x1d \x01(\bR\rotpCredential\"\xef\x01\n" +
"\rotpCredential\x18\x1d \x01(\bR\rotpCredential\x12\x1e\n" +
"\n" +
"sumPrecise\x18\x1e \x01(\bR\n" +
"sumPrecise\"\xef\x01\n" +
"\x19fingerprintBrowserPlugins\x12.\n" +
"\x12isValidPluginArray\x18\x01 \x01(\bR\x12isValidPluginArray\x12 \n" +
"\vpluginCount\x18\x02 \x01(\x05R\vpluginCount\x12(\n" +
@@ -2856,7 +2997,7 @@ func file_fingerprint_proto_rawDescGZIP() []byte {
return file_fingerprint_proto_rawDescData
}
var file_fingerprint_proto_msgTypes = make([]protoimpl.MessageInfo, 29)
var file_fingerprint_proto_msgTypes = make([]protoimpl.MessageInfo, 31)
var file_fingerprint_proto_goTypes = []any{
(*FingerprintData)(nil), // 0: fingerprint.FingerprintData
(*ChallengeCookie)(nil), // 1: fingerprint.ChallengeCookie
@@ -2866,82 +3007,86 @@ var file_fingerprint_proto_goTypes = []any{
(*FingerprintScreenResolution)(nil), // 5: fingerprint.fingerprintScreenResolution
(*FingerprintMultimediaDevices)(nil), // 6: fingerprint.fingerprintMultimediaDevices
(*FingerprintDeviceMediaQueries)(nil), // 7: fingerprint.fingerprintDeviceMediaQueries
(*FingerprintBrowser)(nil), // 8: fingerprint.fingerprintBrowser
(*FingerprintBrowserFeatures)(nil), // 9: fingerprint.fingerprintBrowserFeatures
(*FingerprintBrowserPlugins)(nil), // 10: fingerprint.fingerprintBrowserPlugins
(*FingerprintBrowserExtensions)(nil), // 11: fingerprint.fingerprintBrowserExtensions
(*FingerprintBrowserHighEntropyValues)(nil), // 12: fingerprint.fingerprintBrowserHighEntropyValues
(*FingerprintBrandVersion)(nil), // 13: fingerprint.fingerprintBrandVersion
(*FingerprintBrowserToSourceError)(nil), // 14: fingerprint.fingerprintBrowserToSourceError
(*FingerprintGraphics)(nil), // 15: fingerprint.fingerprintGraphics
(*FingerprintGraphicsWebGL)(nil), // 16: fingerprint.fingerprintGraphicsWebGL
(*FingerprintGraphicsWebGPU)(nil), // 17: fingerprint.fingerprintGraphicsWebGPU
(*FingerprintGraphicsCanvas)(nil), // 18: fingerprint.fingerprintGraphicsCanvas
(*FingerprintCodecs)(nil), // 19: fingerprint.fingerprintCodecs
(*FingerprintLocale)(nil), // 20: fingerprint.fingerprintLocale
(*FingerprintLocaleInternationalization)(nil), // 21: fingerprint.fingerprintLocaleInternationalization
(*FingerprintLocaleLanguages)(nil), // 22: fingerprint.fingerprintLocaleLanguages
(*FingerprintContexts)(nil), // 23: fingerprint.fingerprintContexts
(*FingerprintIframeContext)(nil), // 24: fingerprint.fingerprintIframeContext
(*FingerprintWebWorkerContext)(nil), // 25: fingerprint.fingerprintWebWorkerContext
(*FingerprintFastBotDetectionDetails)(nil), // 26: fingerprint.fingerprintFastBotDetectionDetails
(*FingerprintDetectionResult)(nil), // 27: fingerprint.fingerprintDetectionResult
(*FingerprintBotAlias)(nil), // 28: fingerprint.fingerprintBotAlias
(*FingerprintDeviceKeyboard)(nil), // 8: fingerprint.fingerprintDeviceKeyboard
(*FingerprintBrowser)(nil), // 9: fingerprint.fingerprintBrowser
(*FingerprintBrowserAI)(nil), // 10: fingerprint.fingerprintBrowserAI
(*FingerprintBrowserFeatures)(nil), // 11: fingerprint.fingerprintBrowserFeatures
(*FingerprintBrowserPlugins)(nil), // 12: fingerprint.fingerprintBrowserPlugins
(*FingerprintBrowserExtensions)(nil), // 13: fingerprint.fingerprintBrowserExtensions
(*FingerprintBrowserHighEntropyValues)(nil), // 14: fingerprint.fingerprintBrowserHighEntropyValues
(*FingerprintBrandVersion)(nil), // 15: fingerprint.fingerprintBrandVersion
(*FingerprintBrowserToSourceError)(nil), // 16: fingerprint.fingerprintBrowserToSourceError
(*FingerprintGraphics)(nil), // 17: fingerprint.fingerprintGraphics
(*FingerprintGraphicsWebGL)(nil), // 18: fingerprint.fingerprintGraphicsWebGL
(*FingerprintGraphicsWebGPU)(nil), // 19: fingerprint.fingerprintGraphicsWebGPU
(*FingerprintGraphicsCanvas)(nil), // 20: fingerprint.fingerprintGraphicsCanvas
(*FingerprintCodecs)(nil), // 21: fingerprint.fingerprintCodecs
(*FingerprintLocale)(nil), // 22: fingerprint.fingerprintLocale
(*FingerprintLocaleInternationalization)(nil), // 23: fingerprint.fingerprintLocaleInternationalization
(*FingerprintLocaleLanguages)(nil), // 24: fingerprint.fingerprintLocaleLanguages
(*FingerprintContexts)(nil), // 25: fingerprint.fingerprintContexts
(*FingerprintIframeContext)(nil), // 26: fingerprint.fingerprintIframeContext
(*FingerprintWebWorkerContext)(nil), // 27: fingerprint.fingerprintWebWorkerContext
(*FingerprintFastBotDetectionDetails)(nil), // 28: fingerprint.fingerprintFastBotDetectionDetails
(*FingerprintDetectionResult)(nil), // 29: fingerprint.fingerprintDetectionResult
(*FingerprintBotAlias)(nil), // 30: fingerprint.fingerprintBotAlias
}
var file_fingerprint_proto_depIdxs = []int32{
2, // 0: fingerprint.FingerprintData.signals:type_name -> fingerprint.fingerprintSignals
26, // 1: fingerprint.FingerprintData.fastBotDetectionDetails:type_name -> fingerprint.fingerprintFastBotDetectionDetails
28, // 2: fingerprint.FingerprintData.bot:type_name -> fingerprint.fingerprintBotAlias
28, // 1: fingerprint.FingerprintData.fastBotDetectionDetails:type_name -> fingerprint.fingerprintFastBotDetectionDetails
30, // 2: fingerprint.FingerprintData.bot:type_name -> fingerprint.fingerprintBotAlias
0, // 3: fingerprint.ChallengeCookie.fingerprint:type_name -> fingerprint.FingerprintData
3, // 4: fingerprint.fingerprintSignals.automation:type_name -> fingerprint.fingerprintAutomation
4, // 5: fingerprint.fingerprintSignals.device:type_name -> fingerprint.fingerprintDevice
8, // 6: fingerprint.fingerprintSignals.browser:type_name -> fingerprint.fingerprintBrowser
15, // 7: fingerprint.fingerprintSignals.graphics:type_name -> fingerprint.fingerprintGraphics
19, // 8: fingerprint.fingerprintSignals.codecs:type_name -> fingerprint.fingerprintCodecs
20, // 9: fingerprint.fingerprintSignals.locale:type_name -> fingerprint.fingerprintLocale
23, // 10: fingerprint.fingerprintSignals.contexts:type_name -> fingerprint.fingerprintContexts
9, // 6: fingerprint.fingerprintSignals.browser:type_name -> fingerprint.fingerprintBrowser
17, // 7: fingerprint.fingerprintSignals.graphics:type_name -> fingerprint.fingerprintGraphics
21, // 8: fingerprint.fingerprintSignals.codecs:type_name -> fingerprint.fingerprintCodecs
22, // 9: fingerprint.fingerprintSignals.locale:type_name -> fingerprint.fingerprintLocale
25, // 10: fingerprint.fingerprintSignals.contexts:type_name -> fingerprint.fingerprintContexts
5, // 11: fingerprint.fingerprintDevice.screenResolution:type_name -> fingerprint.fingerprintScreenResolution
6, // 12: fingerprint.fingerprintDevice.multimediaDevices:type_name -> fingerprint.fingerprintMultimediaDevices
7, // 13: fingerprint.fingerprintDevice.mediaQueries:type_name -> fingerprint.fingerprintDeviceMediaQueries
9, // 14: fingerprint.fingerprintBrowser.features:type_name -> fingerprint.fingerprintBrowserFeatures
10, // 15: fingerprint.fingerprintBrowser.plugins:type_name -> fingerprint.fingerprintBrowserPlugins
11, // 16: fingerprint.fingerprintBrowser.extensions:type_name -> fingerprint.fingerprintBrowserExtensions
12, // 17: fingerprint.fingerprintBrowser.highEntropyValues:type_name -> fingerprint.fingerprintBrowserHighEntropyValues
14, // 18: fingerprint.fingerprintBrowser.toSourceError:type_name -> fingerprint.fingerprintBrowserToSourceError
13, // 19: fingerprint.fingerprintBrowserHighEntropyValues.brands:type_name -> fingerprint.fingerprintBrandVersion
16, // 20: fingerprint.fingerprintGraphics.webGL:type_name -> fingerprint.fingerprintGraphicsWebGL
17, // 21: fingerprint.fingerprintGraphics.webgpu:type_name -> fingerprint.fingerprintGraphicsWebGPU
18, // 22: fingerprint.fingerprintGraphics.canvas:type_name -> fingerprint.fingerprintGraphicsCanvas
21, // 23: fingerprint.fingerprintLocale.internationalization:type_name -> fingerprint.fingerprintLocaleInternationalization
22, // 24: fingerprint.fingerprintLocale.languages:type_name -> fingerprint.fingerprintLocaleLanguages
24, // 25: fingerprint.fingerprintContexts.iframe:type_name -> fingerprint.fingerprintIframeContext
25, // 26: fingerprint.fingerprintContexts.webWorker:type_name -> fingerprint.fingerprintWebWorkerContext
27, // 27: fingerprint.fingerprintFastBotDetectionDetails.headlessChromeScreenResolution:type_name -> fingerprint.fingerprintDetectionResult
27, // 28: fingerprint.fingerprintFastBotDetectionDetails.hasWebdriver:type_name -> fingerprint.fingerprintDetectionResult
27, // 29: fingerprint.fingerprintFastBotDetectionDetails.hasWebdriverWritable:type_name -> fingerprint.fingerprintDetectionResult
27, // 30: fingerprint.fingerprintFastBotDetectionDetails.hasSeleniumProperty:type_name -> fingerprint.fingerprintDetectionResult
27, // 31: fingerprint.fingerprintFastBotDetectionDetails.hasCDP:type_name -> fingerprint.fingerprintDetectionResult
27, // 32: fingerprint.fingerprintFastBotDetectionDetails.hasPlaywright:type_name -> fingerprint.fingerprintDetectionResult
27, // 33: fingerprint.fingerprintFastBotDetectionDetails.hasImpossibleDeviceMemory:type_name -> fingerprint.fingerprintDetectionResult
27, // 34: fingerprint.fingerprintFastBotDetectionDetails.hasHighCPUCount:type_name -> fingerprint.fingerprintDetectionResult
27, // 35: fingerprint.fingerprintFastBotDetectionDetails.hasMissingChromeObject:type_name -> fingerprint.fingerprintDetectionResult
27, // 36: fingerprint.fingerprintFastBotDetectionDetails.hasWebdriverIframe:type_name -> fingerprint.fingerprintDetectionResult
27, // 37: fingerprint.fingerprintFastBotDetectionDetails.hasWebdriverWorker:type_name -> fingerprint.fingerprintDetectionResult
27, // 38: fingerprint.fingerprintFastBotDetectionDetails.hasMismatchWebGLInWorker:type_name -> fingerprint.fingerprintDetectionResult
27, // 39: fingerprint.fingerprintFastBotDetectionDetails.hasMismatchPlatformIframe:type_name -> fingerprint.fingerprintDetectionResult
27, // 40: fingerprint.fingerprintFastBotDetectionDetails.hasMismatchPlatformWorker:type_name -> fingerprint.fingerprintDetectionResult
27, // 41: fingerprint.fingerprintFastBotDetectionDetails.hasSwiftshaderRenderer:type_name -> fingerprint.fingerprintDetectionResult
27, // 42: fingerprint.fingerprintFastBotDetectionDetails.hasUTCTimezone:type_name -> fingerprint.fingerprintDetectionResult
27, // 43: fingerprint.fingerprintFastBotDetectionDetails.hasMismatchLanguages:type_name -> fingerprint.fingerprintDetectionResult
27, // 44: fingerprint.fingerprintFastBotDetectionDetails.hasInconsistentEtsl:type_name -> fingerprint.fingerprintDetectionResult
27, // 45: fingerprint.fingerprintFastBotDetectionDetails.hasBotUserAgent:type_name -> fingerprint.fingerprintDetectionResult
27, // 46: fingerprint.fingerprintFastBotDetectionDetails.hasGPUMismatch:type_name -> fingerprint.fingerprintDetectionResult
27, // 47: fingerprint.fingerprintFastBotDetectionDetails.hasPlatformMismatch:type_name -> fingerprint.fingerprintDetectionResult
48, // [48:48] is the sub-list for method output_type
48, // [48:48] is the sub-list for method input_type
48, // [48:48] is the sub-list for extension type_name
48, // [48:48] is the sub-list for extension extendee
0, // [0:48] is the sub-list for field type_name
8, // 14: fingerprint.fingerprintDevice.keyboard:type_name -> fingerprint.fingerprintDeviceKeyboard
11, // 15: fingerprint.fingerprintBrowser.features:type_name -> fingerprint.fingerprintBrowserFeatures
12, // 16: fingerprint.fingerprintBrowser.plugins:type_name -> fingerprint.fingerprintBrowserPlugins
13, // 17: fingerprint.fingerprintBrowser.extensions:type_name -> fingerprint.fingerprintBrowserExtensions
14, // 18: fingerprint.fingerprintBrowser.highEntropyValues:type_name -> fingerprint.fingerprintBrowserHighEntropyValues
16, // 19: fingerprint.fingerprintBrowser.toSourceError:type_name -> fingerprint.fingerprintBrowserToSourceError
10, // 20: fingerprint.fingerprintBrowser.ai:type_name -> fingerprint.fingerprintBrowserAI
15, // 21: fingerprint.fingerprintBrowserHighEntropyValues.brands:type_name -> fingerprint.fingerprintBrandVersion
18, // 22: fingerprint.fingerprintGraphics.webGL:type_name -> fingerprint.fingerprintGraphicsWebGL
19, // 23: fingerprint.fingerprintGraphics.webgpu:type_name -> fingerprint.fingerprintGraphicsWebGPU
20, // 24: fingerprint.fingerprintGraphics.canvas:type_name -> fingerprint.fingerprintGraphicsCanvas
23, // 25: fingerprint.fingerprintLocale.internationalization:type_name -> fingerprint.fingerprintLocaleInternationalization
24, // 26: fingerprint.fingerprintLocale.languages:type_name -> fingerprint.fingerprintLocaleLanguages
26, // 27: fingerprint.fingerprintContexts.iframe:type_name -> fingerprint.fingerprintIframeContext
27, // 28: fingerprint.fingerprintContexts.webWorker:type_name -> fingerprint.fingerprintWebWorkerContext
29, // 29: fingerprint.fingerprintFastBotDetectionDetails.headlessChromeScreenResolution:type_name -> fingerprint.fingerprintDetectionResult
29, // 30: fingerprint.fingerprintFastBotDetectionDetails.hasWebdriver:type_name -> fingerprint.fingerprintDetectionResult
29, // 31: fingerprint.fingerprintFastBotDetectionDetails.hasWebdriverWritable:type_name -> fingerprint.fingerprintDetectionResult
29, // 32: fingerprint.fingerprintFastBotDetectionDetails.hasSeleniumProperty:type_name -> fingerprint.fingerprintDetectionResult
29, // 33: fingerprint.fingerprintFastBotDetectionDetails.hasCDP:type_name -> fingerprint.fingerprintDetectionResult
29, // 34: fingerprint.fingerprintFastBotDetectionDetails.hasPlaywright:type_name -> fingerprint.fingerprintDetectionResult
29, // 35: fingerprint.fingerprintFastBotDetectionDetails.hasImpossibleDeviceMemory:type_name -> fingerprint.fingerprintDetectionResult
29, // 36: fingerprint.fingerprintFastBotDetectionDetails.hasHighCPUCount:type_name -> fingerprint.fingerprintDetectionResult
29, // 37: fingerprint.fingerprintFastBotDetectionDetails.hasMissingChromeObject:type_name -> fingerprint.fingerprintDetectionResult
29, // 38: fingerprint.fingerprintFastBotDetectionDetails.hasWebdriverIframe:type_name -> fingerprint.fingerprintDetectionResult
29, // 39: fingerprint.fingerprintFastBotDetectionDetails.hasWebdriverWorker:type_name -> fingerprint.fingerprintDetectionResult
29, // 40: fingerprint.fingerprintFastBotDetectionDetails.hasMismatchWebGLInWorker:type_name -> fingerprint.fingerprintDetectionResult
29, // 41: fingerprint.fingerprintFastBotDetectionDetails.hasMismatchPlatformIframe:type_name -> fingerprint.fingerprintDetectionResult
29, // 42: fingerprint.fingerprintFastBotDetectionDetails.hasMismatchPlatformWorker:type_name -> fingerprint.fingerprintDetectionResult
29, // 43: fingerprint.fingerprintFastBotDetectionDetails.hasSwiftshaderRenderer:type_name -> fingerprint.fingerprintDetectionResult
29, // 44: fingerprint.fingerprintFastBotDetectionDetails.hasUTCTimezone:type_name -> fingerprint.fingerprintDetectionResult
29, // 45: fingerprint.fingerprintFastBotDetectionDetails.hasMismatchLanguages:type_name -> fingerprint.fingerprintDetectionResult
29, // 46: fingerprint.fingerprintFastBotDetectionDetails.hasInconsistentEtsl:type_name -> fingerprint.fingerprintDetectionResult
29, // 47: fingerprint.fingerprintFastBotDetectionDetails.hasBotUserAgent:type_name -> fingerprint.fingerprintDetectionResult
29, // 48: fingerprint.fingerprintFastBotDetectionDetails.hasGPUMismatch:type_name -> fingerprint.fingerprintDetectionResult
29, // 49: fingerprint.fingerprintFastBotDetectionDetails.hasPlatformMismatch:type_name -> fingerprint.fingerprintDetectionResult
50, // [50:50] is the sub-list for method output_type
50, // [50:50] is the sub-list for method input_type
50, // [50:50] is the sub-list for extension type_name
50, // [50:50] is the sub-list for extension extendee
0, // [0:50] is the sub-list for field type_name
}
func init() { file_fingerprint_proto_init() }
@@ -2955,7 +3100,7 @@ func file_fingerprint_proto_init() {
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: unsafe.Slice(unsafe.StringData(file_fingerprint_proto_rawDesc), len(file_fingerprint_proto_rawDesc)),
NumEnums: 0,
NumMessages: 29,
NumMessages: 31,
NumExtensions: 0,
NumServices: 0,
},
+13
View File
@@ -52,6 +52,7 @@ message fingerprintDevice {
fingerprintScreenResolution screenResolution = 4;
fingerprintMultimediaDevices multimediaDevices = 5;
fingerprintDeviceMediaQueries mediaQueries = 6;
fingerprintDeviceKeyboard keyboard = 7;
}
message fingerprintScreenResolution {
@@ -84,6 +85,11 @@ message fingerprintDeviceMediaQueries {
int32 colorDepth = 9;
}
message fingerprintDeviceKeyboard {
string layout = 1;
int32 layoutSize = 2;
}
message fingerprintBrowser {
string userAgent = 1;
fingerprintBrowserFeatures features = 2;
@@ -93,6 +99,12 @@ message fingerprintBrowser {
int32 etsl = 6;
string maths = 7;
fingerprintBrowserToSourceError toSourceError = 8;
fingerprintBrowserAI ai = 9;
}
message fingerprintBrowserAI {
string summarizerAvailability = 1;
string summarizerLanguageAvailability = 2;
}
message fingerprintBrowserFeatures {
@@ -125,6 +137,7 @@ message fingerprintBrowserFeatures {
bool fencedFrame = 27;
bool sanitizer = 28;
bool otpCredential = 29;
bool sumPrecise = 30;
}
message fingerprintBrowserPlugins {
+1 -1
View File
@@ -1,7 +1,7 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.36.11
// protoc v7.35.0
// protoc v7.35.1
// source: notifier.proto
package protobufs
+1 -1
View File
@@ -1,7 +1,7 @@
// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
// versions:
// - protoc-gen-go-grpc v1.6.2
// - protoc v7.35.0
// - protoc v7.35.1
// source: notifier.proto
package protobufs