Гостевая статья Почему веб-сайты запрашивают доступ к датчикам движения ... на моем рабочем столе?

Я проверял состояние ордера FedEx в Brave, когда заметил в адресной строке уведомление, которое раньше никогда не видел. Он предупреждал меня, что «этот сайт заблокирован от доступа к вашим датчикам движения» . Wut? Это даже не должно быть статусом заказа - поднимает его.

Я пытаюсь понять, почему веб-сайту нужен доступ к датчику движения на мобильном устройстве, не говоря уже о том, что я использовал настольный компьютер . Получу ли я другой опыт, если выбью свой компьютер со стола? Наклоните мой монитор на бок? Хватать мышиный шнур и крутить его вокруг моей головы очень быстро?

2019-12-27-23_12_42-FedEx-_-Tracking--Shipping--and-Locations---Brave.png


После нескольких беглых онлайн-поисков я придумываю лишь несколько тем о и которые указывают, что люди также видят это на и Twitch , а также Experian и Tutanota.

Думаю, пора копать немного глубже.

Что такое веб-API?
Прежде чем сосредоточиться на датчиках, давайте сделаем резервную копию и поговорим о веб-дизайне и . Ваш браузер имеет доступ к большому количеству данных через (и метаданные относительно) устройства, на котором вы его установили. Столько, сколько бы ни посещали , чтобы иметь доступ ко всем этим данным, любой приличный браузер действует как брандмауэр, блокируя этот доступ по умолчанию и предлагая вам разрешить его.

API геолокации
Одним из наиболее распространенных API-интерфейсов является тот, который используется для запроса вашего местоположения, обычно, когда вы используете «локатор магазина» на веб-сайтах, чтобы найти ближайший к вам магазин.

Кнопка ниже использует код (слегка измененный) из документации MDN . Когда вы щелкаете по нему, код JavaScript выполняет вызов , запрашивая у вашего браузера местоположение.

location-prompt.png


location-notification.png


Если вы не видите приглашение, но думаете, что разрешили его, есть два разных параметра, управляющих доступом: глобальная страница со списком «заблокированных» и «разрешенных» сайтов и страница для каждого сайта, на которой вы Можно настроить все разрешения для одного сайта. В Chrome, просто замените brave://с chrome:// в адресной строке.

general-location-settings.png


site-details-settings.png


API уведомлений
Другой (к сожалению, очень ) популярный API - это тот, который используется для отображения уведомлений посетителям. Используя , вы можете запросить разрешение у посетителя с помощью вызова, Notification.requestPermission() а затем просто создать, new Notification() чтобы раздражать их, чтобы они были в курсе. ( Может не работать в Brave из-за ошибки.)

API датчиков
Существует (может быть, что-то вроде?) новый API для запроса доступа к датчикам в браузерах на основе Chromium ( помещает его в Chrome 75 примерно в июне 2019 года, но предлагает Chrome 67 в мае 2018 года). Это еще не широко поддерживается. Согласно MDN, единственными крупными браузерами, которые в настоящее время поддерживают его, являются Chrome и Opera для настольных компьютеров и мобильных устройств.

Ознакомьтесь с по , в , продолжающимся обсуждением в и Intel для примера.

Следующие ссылки выполняют некоторый код JavaScript, чтобы попытаться запустить различные датчики, которые должны вызвать значок датчика в адресной строке. (Если возникнет ошибка, она отобразится под ссылками.)

  • Попробуй акселерометр
  • Попробуйте AmbientLightSensor
  • Попробуйте гироскоп
  • Попробуй LinearAccelerationSensor
  • Попробуй магнитометр
  • Попробуйте AbsoluteOrientationSensor (акселерометр, гироскоп, магнитометр)
  • Попробуйте RelativeOrientationSensor (акселерометр, гироскоп)
Сообщение о статусе: N / A

Как и в случае API-интерфейсов геолокации и уведомлений, вы можете предоставить или запретить доступ на глобальном уровне или на уровне сайта. Раздражает то, что все вышеперечисленные датчики попадают под один зонтик «датчиков движения», поэтому вы не можете легко определить, к какому из этих датчиков пытается получить доступ конкретный объект.

global-sensors-access-list.png


site-details-settings (1).png


Почему некоторые сайты запрашивают API датчиков?
д-р - я пока не знаю. Вот что я откопал до сих пор.

Я видел запрос датчика на нескольких сайтах, и другие сообщали о большем - FedEx, Lowes, Kayo Sports, Hotels.com и Anthem. Зачем таким разным сайтам, как те, которым нужен доступ к гироскопу или акселерометру? Как и все современные разработки, веб-сайты построены на слоях и слоях библиотек. Они используют один и тот же? Некая ли библиотека на несколько уровней запрашивает доступ к API, который ей не нужен?

Я еще не понял, но вот что у меня есть - не стесняйтесь нести факел.

Запутанный файл, возможно, от Akamai
Все страницы, которые я извлек, ссылаются на запутанный файл, который при удалении приводит к исчезновению значка датчика движения. Имя - это просто 112-битное случайное значение, которое не дает никаких подсказок.

  • Лоу: c45ff2fedf18894428b6eae366abf1
  • FedEx: b6c65804238fde1fae4a597ae052
  • Гимн: c3ce05c96199f8c080a174ece11ff
  • ... и так далее.
Если посмотреть на разметку для страницы, это показывает, что он загружает скрипт непосредственно перед концом страницы, и он выглядит практически одинаково во всех случаях.

Лоу

Код:
<noscript>
    <img src="https://www.lowes.com/akam/11/pixel_49faa00b?a=dD1jMjczMGNkMmRlNmY0NDYwY2Q5MzQ2ZGVjNWI5YWIwZjEwZDM2Nzg0JmpzPW9mZg==" style="visibility: hidden; position: absolute; left: -999px; top: -999px;" />
</noscript>
<script type="text/javascript" >
    var _cf = _cf || [];
    _cf.push(['_setFsp', true]);
    _cf.push(['_setBm', true]);
    _cf.push(['_setAu', '/resources/c45ff2fedf18894428b6eae366abf1']);

FedEx

Код:
<noscript>
    <img src="https://www.fedex.com/akam/11/pixel_190b4e7f?a=dD05YmZjNzQ1Njc1YTU3MDA5OWY0MDFiYjRmOWU3YTJhMzJjNjljNjdlJmpzPW9mZg==" style="visibility: hidden; position: absolute; left: -999px; top: -999px;" />
</noscript>
<script type="text/javascript" >
    var _cf = _cf || [];
    _cf.push(['_setFsp', true]);
    _cf.push(['_setBm', true]);
    _cf.push(['_setAu', '/assets/b6c65804238fde1fae4a597ae052']);
</script>
<script type="text/javascript"  src="/assets/b6c65804238fde1fae4a597ae052"></script>

ANTHEM

Код:
<noscript>
    <img src="https://www.anthem.com/akam/11/pixel_31f28831?a=dD04MTAwN2I4YzhlYmNjYjUzYTNjMzA2OTIyMjllNjYzOTRhYjRjNzFiJmpzPW9mZg==" style="visibility: hidden; position: absolute; left: -999px; top: -999px;" />
</noscript>
<script type="text/javascript" >
    var _cf = _cf || [];
    _cf.push(['_setFsp', true]);
    _cf.push(['_setBm', true]);
    _cf.push(['_setAu', '/public/c3ce05c96199f8c080a174ece11ff']);
</script>
<script type="text/javascript"  src="/public/c3ce05c96199f8c080a174ece11ff"></script>

Hotels.com

Код:
<script type="text/javascript" >
    var _cf = _cf || [];
    _cf.push(['_setFsp', true]);
    _cf.push(['_setBm', true]);
    _cf.push(['_setAu', '/assets/0997d10d16655fda9826ab5d88ea']);
</script>
<script type="text/javascript"  src="/assets/0997d10d16655fda9826ab5d88ea"></script>

Кайо Спортс

Код:
<noscript>
    <img src="https://kayosports.com.au/akam/11/pixel_52bf70fb?a=dD05ZWY4MzI1MTFjODFmMGFmYzhkZmUzNzhkZWNmM2RiZjVmYzc5ZWVhJmpzPW9mZg==" style="visibility: hidden; position: absolute; left: -999px; top: -999px;" />
</noscript>
<script type="text/javascript" >
    var _cf = _cf || [];
    _cf.push(['_setFsp', true]);
    _cf.push(['_setBm', true]);
    _cf.push(['_setAu', '/assets/662c194b202d4b929be8d06c3195']); </script>
<script type="text/javascript"  src="/assets/662c194b202d4b929be8d06c3195"></script>


Так как 4 из 5 сайтов включили в себя вызов URL с «akam / 11 / pixel» непосредственно перед этим, я предполагаю, что это связано ... возможно, какая-то вещь отслеживания? Поиск akam/11/pixelприводит к загрузке других сайтов, которые также вызывают отображение значка сенсора.

Файл js со случайным именем всегда один и тот же, . Мне удалось с помощью онлайн-инструмента, а затем сценарий поиска и заменить его на тот _acмассив, который содержит 711 элементов, но это только покажет вам. Выяснить, что это делает, будет непросто, но поиск кусочков кода выявил предполагая, что это Akamai. .

Значения в _acмассиве могут иметь некоторые подсказки, и некоторые записи кажутся действительно подозрительными. Существует множество ссылок на различные плагины, и нет недостатка в ссылках на датчики (гироскоп, магнитометр, акселерометр и ускорение InclusionGravity, датчик внешней освещенности, вращение, скорость, deviceorientation и DeviceOrientationEvent, DeviceMotionEvent и sensor_data) и другие странные вещи (startTracking и requestWakeLock ).

Код:
var _ac = ["aj_indx_tact", "bind", "driver", "doe_cnt", "mousedown", "Batang", "clientHeight", "emit", "indexOf", "enReadDocUrl", "Palatino", "fpValstr", "onpointerup", "\"", "dm_en", "/get_params", "rVal", "return/*@cc_on!@*/!1", "-1,2,-94,-70,", "http://", "storage", "", "onkeypress", "navigator", "mn_update_challenge_details", "keydown", "spawn", "bm-telemetry", "y1", "-1,2,-94,-121,", "mediaDevices", "fillText", "mn_ct", "requestWakeLock", "Noto", "=", "//", "rotationRate", "call", "mn_mc_lmt", "toLowerCase", "uar", "Palatino-Bold", "arc", "-1,2,-94,-120,", "td", "unk", "z", "devicemotion", "gf", "push", ":", "TI-Nspire", "Edge PDF Viewer", "dme_cnt_lmt", "prototype", "hpu", "hku", "hkd", "mn_ts", "mn_tout", "Version/4.0", "non:", "sensor_data", "display", "getFloatVal", "sort", "ambient-light-sensor", "number", "~", "WebKit-integrierte PDF", "RTCPeerConnection", "0a46G5m17Vrp4o4c", "now", "value", "iPad;", "map", "GET", "mme_cnt", "msHidden", "vc", "||", "-1,2,-94,-124,", "-1", "x12:", "hf", "pstate", "callPhantom", "sd_debug", "RealPlayer Version Plugin", "lastIndexOf", "hpd", "floor", "XDomainRequest", "mn_lc", "clipboard-write", "pme_cnt", "vc_cnt_lmt", "AlNile", "shiftKey", "runFonts", "isIgn", "fpVal", "<@nv45. F1n63r,Pr1n71n6!", "hostname", "cka", "DeviceOrientationEvent", "mn_init", "accelerometer", "sqrt", "alpha", "applyFunc", "webkitRTCPeerConnection", "mduce_cnt_lmt", "attachEvent", "get_browser", "-1,2,-94,-116,", "is not a valid enum value of type PermissionName", "colorDepth", "dm_dis", "2d", "mn_h", "ke_vel", "$cdc_asdjflasutopfhvcZLmcfl_", "target", ",s7:", "Lobster", "touchcancel", "listFunctions", "-1,2,-94,-112,", ",s2:", "acos", "default", "ins", "-1,2,-94,-106,", "xagg", "visibilitychange", "hc", "pointerType", "Windows Media Player Plug-in Dynamic Link Library", "setRequestHeader", "mn_mc_indx", "Roboto", "vib:", "PLUGINS", "opc:", "get_cookie", "return a", "required", "dm:", "domAutomation", "midi", "onLine", "beta", "fillRect", "2", "informinfo", "keyCode", "doadma_en", "</setSDFN>", "dme_vel", "which", "hmu", "dmact", "==", "-1,2,-94,-119,", "aj_lmt_doact", "do_en", "appMinorVersion", "Mac OS X 10_5", "clearCache", "font", "getStorageUpdates", "Basic ", "x11:", "onblur", "monospace", "outerWidth", "htm", "Damascus", ",s3:", "isTrusted", "cookie_chk_read", "ff", "TouchEvent", "Bell MT", "altKey", "0", "-1,2,-94,-115,", "mozRTCPeerConnection", "pd", "tme_cnt", "hypot", "imul", "dis", "mn_il", "sf4", "hmm", "Google Earth Plug-in", "pact", "doe_cnt_lmt", "vibrate", "start_ts", "offsetHeight", "localStorage", "deviceorientation", "onmouseup", "join", "round", "height", "documentElement", "mozAlarms", "ceil", "Unity Player", "Java Plug-in 2 for NPAPI Browsers", "sc:", "doact", "Century Gothic", "geolocation", "none", "Birch Std", "enGetLoc", "mousemove", "tme_cnt_lmt", "6pt Arial", "toDataURL", "keyup", ",cpen:", "canvas", "Droid Serif", "tduce_cnt_lmt", "pluginInfo", "XMLHttpRequest", "name", "webkitHidden", "url", "mn_abck", "touchend", "afSbep8yjnZUjq3aL010jO15Sawj2VZfdYK8uY90uxq", "-1,2,-94,-109,", "#f60", "fromCharCode", "stroke", "Futura", "fpcf", "style", "bpd", "ver", "abs", "cc", "rgb(120, 186, 176)", "pe_cnt", "timezoneOffsetKey", "documentMode", "createElement", "webdriver", "Default Browser Helper", "nav_perm", "x", ",0", "undefined", "Minion Pro", "getTimezoneOffset", "webstore", "mact", "Shockwave Flash", "aj_lmt_dmact", "-", ",loc:", "storeWebWideTrackingException", "-1,2,-94,-117,", "Corsiva Hebrew", "doa_throttle", "rCFP", "hmd", "accelerationIncludingGravity", "message", "bd", "}", "hasIndexedDB", "permissions", "gd", "language", "asin", "pe_vel", "fontSize", "serviceWorker", "removeChild", "hvc", "cma", "sessionStorage", "apid.cformanalytics.com/api/v1/attempt", "magnetometer", "apicall_bm", "XPathResult", "sed", "default_session", "; ", "ke_cnt", "granted", "-1,2,-94,-80,", "metaKey", "params_url", "credentials", "Silverlight Plug-In", "{\"sensor_data\":\"", "https:", "<init/>", "readyState", "mn_al", "return ", "msManipulationViewsEnabled", "Mozilla Default Plug-in", "n_ck", "tst", "hasSessionStorage", "hts", "Shockwave for Director", "<setSDFN>", "onkeyup", "webrtcKey", "mozInnerScreenY", "parse_gp", "fonts", "query", "Century", "fillStyle", "undef", "startdoadma", "Apple Gothic", "pointerup", "disFpCalOnTimeout", "firstLoad", "t_dis", "sdfn", "webkitTemporaryStorage", "msvisibilitychange", "onmousedown", "Chrome PDF Viewer", "bc", "withCredentials", "init_time", "charCode", "DeviceMotionEvent", "cssText", "aj_indx", "pme_cnt_lmt", "toFixed", "function", "span", "Native Client", "fpValCalculated", "availHeight", "lang", "get_cf_date", "getElementById", "aj_ss", "document", "rir", "vcact", "me_cnt", "_", "mn_r", "hasLocalStorage", "get_mn_params_from_abck", "atanh", "getBattery", "Geneva", "mr", "mn_cd", "-1,2,-94,-103,", "fontFamily", "get_type", "body", "POST", "Calibri", "MSIE", "mozPhoneNumberService", "hkp", "ke_cnt_lmt", "input", "pageY", "pageX", "rgb(102, 204, 0)", "background-sync", "pen", "Buffer", "fonts_optm", "pointerdown", "plen", "userAgent", "offsetWidth", "-1,2,-94,-100,", "altFonts", "bluetooth", "mozvisibilitychange", "getforminfo", "_abck", "cbrt", "substring", "Authorization", "data", "Chrome Remote Desktop Viewer", "on", "fc:", "productSub", "touchmove", "search", "aj_indx_dmact", "clientX", "\\\'", "mduce_cnt", "denied", "clipboard-read", "getElementsByName", "QuickTime Plug-in", "div", "webkitGetGamepads", "parseInt", "exp", "isc:", "-1,2,-94,-118,", "doe_vel", "hidden", "childNodes", "Adobe Hebrew", "microphone", "-1,2,-94,-108,", "cdma", "button", "aj_indx_doact", "mn_get_current_challenges", "Java Applet Plug-in", "mouse", "clientWidth", "sendBeacon", "cache", "getGamepads", "Google Talk Plugin Video Renderer", "all", "onclick", "location", "Microsoft Office Live Plug-in", "state", "psub", "webkitvisibilitychange", "sessionStorageKey", "Fantasque Sans Mono", "mn_sen", "aj_lmt_tact", "AdobeAAMDetect", "Courier New", "fas", "hardwareConcurrency", "Papyrus", "Lato", "RealPlayer(tm) G2 LiveConnect-Enabled Plug-In (32-bit)", ";", "split", "innerHeight", "ckie", "-1,2,-94,-114,", "ce_js_post", "check_stop_protocol", "tduce_cnt", ",setSDFN:", "_phantom", "iPhotoPhotocast", "selenium", "persistent-storage", "pixelDepth", "gb", "requestMediaKeySystemAccess", "auth", "Cantarell", "; path=/; expires=Fri, 01 Feb 2025 08:00:00 GMT;", "/_bm/_data", "cf_url", "Helvetica Neue", "calc_fp", "mn_w", "/", "application/json", "slice", "1", "Courier", "cta", "t_en", "Adobe Braille", "Cambria", "off", "opera", "abcdefhijklmnopqrstuvxyz1234567890;+-.", "URL", "Constructor", "Adobe Acrobat", "Microsoft Sans Serif", "doNotTrack", "gamma", "o9", "-1,2,-94,-122,", "Open Sans", "</bpd>", "onpointerdown", "password", "set_cookie", "vc_cnt", "getdurl", "90px", "notifications", "dme_cnt", "onload", "mozHidden", "bm", "localStorageKey", "tact", "\"}", "d2", "\",\"sensor_data\" : \"", "updatet", "session_id", "splice", "ctrlKey", "then", "Avenir", "dma_throttle", "od", "mn_lcl", "New York", "indexedDbKey", "bdm", "charAt", "-1,2,-94,-105,", "den", "clipboard", "exception", "cns", "chknull", "ir", "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", "hb", "random", "mozIsLocallyAvailable", "width", "ab", "pduce_cnt", "camera", "onmousemove", "rotate_left", "shift", "sans-serif", ",uaend,", "device-info", "me_vel", "keypress", "do_dis", "id", "Ubuntu Regular", "type", "string", "toString", "lvc", "wen", "payment-handler", "innerWidth", "mn_lg", "send", "onfocus", "strokeStyle", "iPhone", "htc", "prod", "Apple LiGothic", "mn_poll", "loc", "accessibility-events", "Monaco", "apply", "prevfid", "HTMLElement", "gyroscope", "x1", "javaEnabled", "te_vel", "SharePoint Browser Plug-in", "-1,2,-94,-102,", "activeElement", "https://", "Avenir Next", "wrc:", "startTracking", "kact", "d3", "screen", "mn_get_new_challenge_params", "to", "registerProtocolHandler", "-1,2,-94,-123,", "defaultValue", "a", "-1,2,-94,-101,", "Microsoft.XMLHTTP", "Times", "rve", "-1,2,-94,-111,", "product", "tel", "onreadystatechange", "np", "js_post", "protocol", "mozConnection", "email", "YouTube Plug-in", "text", "mn_stout", ",\"auth\" : \"", "Comic Neue", "mn_state", "-1,2,-94,-127,", "length", "cs", "getmr", "mn_pr", "PI", "pduce_cnt_lmt", "mme_cnt_lmt", "mn_psn", "m,Ev!xV67BaU> eh2m<f3AG3@", "enAddHidden", "-1,2,-94,-126,", "3", "cwen:", "getContext", "aj_type", "hte", "ta", "charCodeAt", "chrome", "getAttribute", "Content-type", "z1", "indexedDB", "clientY", "serif", "ArialHebrew-Light", "plugins", "get_stop_signals", "cookieEnabled", "i1:", "cdoa", "-1,2,-94,-110,", "Source Sans Pro", "pi", "getElementsByTagName", "bmisc", "te_cnt", "y", "addEventListener", ",it0", "mouseup", "x2", "speaker", "parse", "event", "patp", "fidcnt", "position: relative; left: -9999px; visibility: hidden; display: block !important", "\\\\\"", "{\"session_id\" : \"", "mn_ld", "cookie", "pow", "replace", "FileReader", "Oswald", ",s1:", "onkeydown", "acceleration", "catch", "touchstart", "api_public_key", "innerHTML", "toElement", "Ubuntu Medium", "autocomplete", "cpa", "prompt", "open", "mn_tcl", "Quicksand", "rst", "t_tst", "appendChild", "appVersion", "PointerEvent", "Widevine Content Decryption Module", "fsp", "bat:", "forEach", "WebEx64 General Plugin Container", "hn", "mn_cc", "16pt Arial", "availWidth", "click", "encode", "encode_utf8", "<bpd>", ",", ",mn_w:"];


Любые запросы на использование этих датчиков или даже проверка того, поддерживает ли их устройство, могут привести к тому, что значок датчика будет отображаться так же, как и он.

Следующие 30 строк после этой тоже содержат некоторые интересные вещи. Номер версии, некоторые счетчики, URL для какой-либо аналитики, ключ API и что-то (может быть, флаг?) С именем sensor_data, установленным в 0.

Код:
var _cf = _cf || [],
    bmak = bmak || {
        ver: 1.54,
        ke_cnt_lmt: 150,
        mme_cnt_lmt: 100,
        mduce_cnt_lmt: 75,
        pme_cnt_lmt: 25,
        pduce_cnt_lmt: 25,
        tme_cnt_lmt: 25,
        tduce_cnt_lmt: 25,
        doe_cnt_lmt: 10,
        dme_cnt_lmt: 10,
        vc_cnt_lmt: 100,
        doa_throttle: 0,
        dma_throttle: 0,
        session_id: default_session,
        js_post: !1,
        loc: ,
        cf_url: (https: === document[location][protocol] ? https:// : http://) + apid.cformanalytics.com/api/v1/attempt,
        params_url: (https: === document[location][protocol] ? https:// : http://) + document[location][hostname] + /get_params,
        auth: ,
        api_public_key: afSbep8yjnZUjq3aL010jO15Sawj2VZfdYK8uY90uxq,
        aj_lmt_doact: 1,
        aj_lmt_dmact: 1,
        aj_lmt_tact: 1,
        ce_js_post: 0,
        init_time: 0,
        informinfo: ,
        prevfid: -1,
        fidcnt: 0,
        sensor_data: 0,

Быстрый на cformanalytics.comпредположить , что он принадлежит к Akamai. Это может означать, что какой-то другой сервис использует их API, но, учитывая найденные потоки, я подозреваю, что он принадлежит Akamai.

Код:
Domain Name: CFORMANALYTICS.COM
Registry Domain ID: 1897860898_DOMAIN_COM-VRSN
Registrar WHOIS Server: whois.akamai.com
Registrar URL: http://www.akamai.com
Updated Date: 2020-04-07T18:35:33Z
Creation Date: 2015-01-24T01:00:53Z
Registry Expiry Date: 2022-01-24T01:00:53Z
Registrar: Akamai Technologies, Inc.
Registrar IANA ID: 2480
Registrar Abuse Contact Email: registrar-abuse@akamai.com
Registrar Abuse Contact Phone: +1.6174443076

Особенно выделяется одна функция во всем этом беспорядке. Кажется, что он набирает тонны разрешений, чтобы увидеть, запрашивает ли браузер вас для каждого из них, или просто предоставляет или отклоняет их без запроса.

Код:
np: function () {
    var a = [],
        t = [geolocation, notifications, push, midi, camera, microphone, speaker, device-info, background-sync, bluetooth, persistent-storage, ambient-light-sensor, accelerometer, gyroscope, magnetometer, clipboard, accessibility-events, clipboard-read, clipboard-write, payment-handler];
    try {
        if (!navigator[permissions]) return 6;
        var e = function (t, e) {
                return navigator[permissions][query]({
                    name: t
                })[then](function (t) {
                    switch (t[state]) {
                    case prompt:
                        a[e] = 1;
                        break;
                    case granted:
                        a[e] = 2;
                        break;
                    case denied:
                        a[e] = 0;
                        break;
                    default:
                        a[e] = 5
                    }
                })[catch](function (t) {
                    a[e] = -1 !== t[message][indexOf](is not a valid enum value of type PermissionName) ? 4 : 3
                })
            },
            n = t[map](function (a, t) {
                return e(a, t)
            });
        Promise[all](n)[then](function () {
            bmak[nav_perm] = a[join]()
        })
    } catch (a) {
        return 7
    }
},


Когда скрипт выполняется, одна из функций, которые он запускает, получает имя startTrackingи запускается, bpdв свою очередь, вышеупомянутой функцией.np . Я не уверен, почему служба обнаружения ботов, если это так, должна их проверять, но, возможно, это всего лишь один сигнал из множества сигналов, которые они используют для определения, является ли запросчик человеком или ботом. ? Или, может быть, он используется как часть снятия отпечатков пальцев для отслеживания и индивидуальной идентификации посетителей?

Это так далеко, как я дошел до раскручивания этого до сих пор. Кто-нибудь еще нашел что-нибудь интересное? Не стесняйтесь поделиться ниже ...

Источник:
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!