
Research
Malicious npm Packages Impersonate Flashbots SDKs, Targeting Ethereum Wallet Credentials
Four npm packages disguised as cryptographic tools steal developer credentials and send them to attacker-controlled Telegram infrastructure.
@qlean/analytics-client
Advanced tools
Библиотека для инетграции с аналитической платформы. После инициализации, все a.href будут вести на аналитическую платформу.
Для подключения аналитики, на страницу нужно добавить следующий код.
<script>
(function (options) {
window.$qat={options:options,buffer:[],emit:function(t){this.buffer.push(t)}};
var parent=document.getElementsByTagName("script")[0],script=document.createElement("script");
script.async=!0,script.src=options.script,parent.parentNode.insertBefore(script,parent);
})({
script: 'https://storage.googleapis.com/pltf-analytics-dp-clfn-storage/public/bundle.js',
url: 'https://anlt.cloud.qlean.ru/collect',
timeout: 5000,
wrapLink: true
});
</script>
Опции инициализации:
script
- ссылка на бандл с клиентским приложениемurl
- путь до апи, куда отправляются точкиtimeout
- таймаут между отправкой точекwrapLink
- признак того, что необходимо обернуть все ссылки на редиректы аналитики (для отслеживания переходов)normalize
- функция которая нормализует именя ключейОпция wrapLink
может принимать как булевое значение (true/false) в этом случае все сылки (a.href) будут переделаны на
редиректы. Иногда этого не достаточно и для более тонкой настройки вы можете передать в качестве значения
объект следующего формата:
wrapLink: {
pattern: /^.*\.qlean\.ru\/app/i
}
После чего все ссылки, которые удовлетворяют этому условию будут проигнорированы. Например, это можно использовать когда часть ссылку у вас обрабатывается роутером в вашем SPA приложении.
Бывает необходимо в программе использовать имена ключей в формате системы, но перед отправкой их приводит к ожидаемому в
аналитической системе виду, для этого в качестве опции можно определить функцию normalize
, которая будет вызыватся
для каждого ключа события.
Пример приведение event_category
к принятому виду eventCategory
:
normalize: function (key) {
if (key === 'event_category') {
key = 'eventCategory';
}
return key;
}
Для отправки события в clickstream нужно выполнить следующий код.
<script>
$qat.emit({
eventId: '1234',
eventAction: 'autorization',
eventCategory: 'page_view',
phone: '89686421141',
user_id: 'fffff',
device_id: 'asfljsfdaklsdfj',
label: 'hello world'
});
</script>
Следующие поля будут разложены по колонкам в clickstream:
Все остальные поля будут упакованы в виде json объекта в поле eventProperties.
Для начал ее необходимо установить
npm i @qleanlabs/analytics-client
После этого ее можно подключить и использовать
import { Qat } from '@qleanlabs/analytics-client';
const client = new Qat({
buffer: [], // события которые произошли до инициализации модуля
options: {
url: 'https://anlt.cloud.qlean.ru/collect',
timeout: 5000,
wrapLink: {
pattern: /^.*\.qlean\.ru\/app/i
},
normalize: function (key) {
if (key === 'event_category') {
key = 'eventCategory';
}
return key;
}
}
});
client.emit({
eventId: '1234',
eventAction: 'autorization',
eventCategory: 'page_view',
phone: '89686421141',
user_id: 'fffff',
device_id: 'asfljsfdaklsdfj',
label: 'hello world'
});
Данное решение поддерживает также платформы, где не возможно использовать обычный js вызов. Для этого вы можете разместить на странице картинку следующего вида
// просто пиксель
<img hidden="hidden" src="//anlt.cloud.qlean.ru/collect?eid0=123&ea0=page_view&ec0=load&el0=ok"/>
Все параметры события передаются в качестве параметров querystring:
Обратите вниманание, в одном пикселе может быть передано одно или более событие. Для их идексации используется цифра после имени параметра,
например eid0
- это идентификатор первого события
Для отслеживания переходов пользователя, необходимо заменить существуюущую ссылку на следующу
// трекинг переходов
<a href="http://anlt.cloud.qlean.ru/collect?rul=https%3A%2F%2Fqlean.ru%2F%3Futm_source%3D1%26utm_medium%3D2%26utm_campaign%3D3"/>
Где в параметре rul передается ссылка куда нужно перейти в заэкножена через encodeURIComponent.
FAQs
Клиент для платформы аналитики
We found that @qlean/analytics-client demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 10 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Four npm packages disguised as cryptographic tools steal developer credentials and send them to attacker-controlled Telegram infrastructure.
Security News
Ruby maintainers from Bundler and rbenv teams are building rv to bring Python uv's speed and unified tooling approach to Ruby development.
Security News
Following last week’s supply chain attack, Nx published findings on the GitHub Actions exploit and moved npm publishing to Trusted Publishers.