Meta redirect s2s: Difference between revisions

From Wiki Kaminari Click
Line 6: Line 6:
# Мы проверяем пользователя и вычисляем его фродовый статус.
# Мы проверяем пользователя и вычисляем его фродовый статус.
# Дальше мы проверяем в кэше:
# Дальше мы проверяем в кэше:
## Если там есть запись с аналогичным <code>kmnrId</code> (пришедшая на /ping), мы склеиваем данные из кеша с результатами проверки и пишем их в статистику, а также отсылаем вам на pingBackUrl <code>kmnrId</code> и результат проверки. Если клик фродовый, вы можете сразу пометить его, например, как неподлежащим оплате.
## Если там есть запись с аналогичным <code>kmnrId</code> (пришедшая на /ping), мы склеиваем данные из кеша с результатами проверки и пишем их в статистику, а также отсылаем вам на pingBackUrl <code>kmnrId</code> и результат проверки. Если клик фродовый, вы можете сразу пометить его, например, как неподлежащий оплате.
## Если записи с таким <code>kmnrId</code> нет, мы ждём до пяти минут. Если вторая запись так и не приходит, мы пишем в статистику то, что есть, а также отсылаем вам на на pingBackUrl <code>kmnrId</code> и результат проверки.
## Если записи с таким <code>kmnrId</code> нет, мы ждём до пяти минут. Если вторая запись так и не приходит, мы пишем в статистику то, что есть, а также отсылаем вам на на pingBackUrl <code>kmnrId</code> и результат проверки.
## Так же мы периодически проверяем кэш и если там находятся просроченные клики, пришедшие на /ping и так и оставшиеся без пары, мы отстукиваемся о них вам на pingBackUrl, если нам не удалось никак их проверить, мы пишем их в стату со статусом «Технические потери».
## Так же мы периодически проверяем кэш и если там находятся просроченные клики, пришедшие на /ping и так и оставшиеся без пары, мы отстукиваемся о них вам на pingBackUrl. Если нам не удалось никак их проверить, мы пишем их в стату со статусом «Технические потери».


== Настройка интеграции ==
= Настройка интеграции =


=== Общие настройки ===
=== Общие настройки ===
Line 33: Line 33:
Здесь надо указать адрес, на который мы будем отстукиваться с результатами проверки.
Здесь надо указать адрес, на который мы будем отстукиваться с результатами проверки.


== Настройка на стороне клиента ==
= Настройка на стороне клиента =


=== Отправка данных на https://kaminari.click/v2/ping ===
== Отправка данных на https://kaminari.click/v2/ping ==
Когда пользователь приходит на страницу необходимо послать на URL https://kaminari.click/v2/ping инициализирующую информацию.
Когда пользователь приходит на страницу необходимо послать на URL https://kaminari.click/v2/ping инициализирующую информацию.


Line 94: Line 94:
</pre>
</pre>


=== Перенаправление пользователя на кликворкер ===
== Перенаправление пользователя на кликворкер ==
Пользователя надо отправить на страницу, где наш скрипт сможет собрать о нём данные. Есть два варианта — воспользоваться нашим кликворкером, или реализовать свой.
Пользователя надо отправить на страницу, где наш JS-скрипт сможет собрать о нём данные. Есть два варианта — воспользоваться нашим кликворкером, или реализовать свой.


== С нашим кликворкером ==
=== С нашим кликворкером ===
Перенаправьте пользователя на https://kaminari.click/v1/click. В GET-запрос надо добавить следующие поля:
Перенаправьте пользователя на https://kaminari.click/v1/click. В GET-запрос надо добавить следующие поля:


Line 136: Line 136:
</pre>
</pre>


== Со своим кликворкером ==
=== Со своим кликворкером ===
Свой кликворкер нужен, чтобы все манипуляции происходили на одном домене. В таком случае не будет потерь на редиректах. Так же не будет задержек на сетевых запросах, потому что скрипт размещается прямо на странице.
Свой кликворкер нужен, чтобы все манипуляции происходили на одном домене. В таком случае не будет потерь на редиректах. А так же не будет задержек на сетевых запросах, потому что скрипт размещается прямо на странице.


Код кликворкера должен храниться на стороне клиента и с какой-то периодичностью подтягиваться от нас для обновления.
Код кликворкера должен храниться на стороне клиента и с какой-то периодичностью подтягиваться от нас для обновления.
Кликворкер можно скачать по ссылке: <code>https://kaminari.space/v1/click?kmnrKey={{kmnrKey}}&kmnrId={{kmnrId}}&sub1={{sub1}}&sub2={{sub2}}&sub3={{sub3}}&sub4={{sub4}}&sub5={{sub5}}&sub6={{sub6}}&sub7={{sub7}}&sub8={{sub8}}&sub9={{sub9}}&sub10={{sub10}}&u={{clickUrl}}&checkUrl={{clickUrl}}</code>. И затем при отдаче клиенту заменять шаблоны {{ }} своими значениями.
{| class="wikitable"
|-
! Название !! Описание
|-
| kmnrId || kmnrId, сгенерированный при отстуке на https://kaminari.click/v2/ping. Нужен для склеивания кликов.
|-
| kmnrKey || Идентификатор интеграции, в рамках которой анализируется показ.
|-
| sub1 || Заполенные суб-метки. Если какие-то метки вы не используете, их слать не обязательно.
|-
| sub2 || ...
|-
| sub3 || ...
|-
| sub4 || ...
|-
| sub5 || ...
|-
| sub6 || ...
|-
| sub7 || ...
|-
| sub8 || ...
|-
| sub9 || ...
|-
| sub10 || ...
|-
| u || целевая ссылка, на которую пользователь будет отправлен после проверки. Должна быть в URL-безопасном виде (например, обработана JS-методом [https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent encodeURIComponent]).
|-
| checkUrl || URL, проксирующий на вашем домене наш эндпойнт проверки клика.
|}


Кликворкер должен отдавать следующие заголовки:
Кликворкер должен отдавать следующие заголовки:
Line 148: Line 183:
access-control-allow-origin: *
access-control-allow-origin: *
</pre>
</pre>
{%l= clickUrl %} - URL, на который скрипт отправит данные, заполнять через &checkUrl


== Отправка результата проверки ==
== Отправка результата проверки ==
После того, как скрипт закончит проверку он отправляет данные на https://kaminari.click/v2/check. Если вы хотите чтобы всё работало надёжнее, можно проксировать этот URL на свой домен. И тогда всё будет происходить в рамках одного домена.
После того, как скрипт закончит проверку он отправляет данные на https://kaminari.click/v2/check. Если вы хотите чтобы всё работало надёжнее, можно проксировать этот URL на свой домен. И тогда всё будет происходить в рамках одного домена.


Ваш эндпойнт надо указать в шаблоне checkUrl при скачивании кликворкера.
Настройка для Nginx
<pre>
<pre>
map $antifraud $antifraud_host {
map $antifraud $antifraud_host {
Line 185: Line 221:


== Ping back ==
== Ping back ==
 
После того, как мы получили и обработали данные мы отсылаем их вам на Ping back url (указывается в настройках) в формате JSON POST. <code>{ kmnrId: <kmnrId, сгенерированный при отстуке на https://kaminari.click/v2/ping>, fraud: 0|1 }</code>
Данные обрабатываются, пишутся в КХ, на Ping back url (указывается в настройках) шлётся fraud и то, что пришло на /ping
req.Header.SetContentType(ApplicationJSON)
req.Header.SetMethod("POST")

Revision as of 18:23, 14 March 2023

Интеграция предназначена для серьёзных решений без потери кликов.

Общий алгоритм работы

  1. Пользователь приходит на ваш сайт. Вы генерируете уникальный kmnrId и отстукиваетесь с ним на сервер Kaminari на URL /ping, мы сохраняем данные в кэш.
  2. Затем вы отправляете пользователя к нам на проверку, добавив в URL тот самый kmnrId.
  3. Мы проверяем пользователя и вычисляем его фродовый статус.
  4. Дальше мы проверяем в кэше:
    1. Если там есть запись с аналогичным kmnrId (пришедшая на /ping), мы склеиваем данные из кеша с результатами проверки и пишем их в статистику, а также отсылаем вам на pingBackUrl kmnrId и результат проверки. Если клик фродовый, вы можете сразу пометить его, например, как неподлежащий оплате.
    2. Если записи с таким kmnrId нет, мы ждём до пяти минут. Если вторая запись так и не приходит, мы пишем в статистику то, что есть, а также отсылаем вам на на pingBackUrl kmnrId и результат проверки.
    3. Так же мы периодически проверяем кэш и если там находятся просроченные клики, пришедшие на /ping и так и оставшиеся без пары, мы отстукиваемся о них вам на pingBackUrl. Если нам не удалось никак их проверить, мы пишем их в стату со статусом «Технические потери».

Настройка интеграции

Общие настройки

Общая информация по настройке интеграции находится здесь: General settings

Target URL и текст ссылки

Если у вас есть постоянная целевая ссылка, или она передаётся в каком-то параметре, можете указать её в настройках интеграции. Также можете указать текст кликовой ссылки.

Если вы вставляете ссылку, обязательно нажмите кнопку Encode, чтобы она стала безопасной для URL.

Meta redirect 6.png

Если указываете внешний параметр, кнопку Encode нажимать не надо.

Meta redirect 8.png

Другой вариант.

Meta redirect 7.png

Ping-back URL

Здесь надо указать адрес, на который мы будем отстукиваться с результатами проверки.

Настройка на стороне клиента

Отправка данных на https://kaminari.click/v2/ping

Когда пользователь приходит на страницу необходимо послать на URL https://kaminari.click/v2/ping инициализирующую информацию.

Данные должны слаться в формате JSON.

Список параметров.

Название Описание параметра Обязательный?
kmnrId Рандомный идентификатор показа. Генерируется на стороне клиента. Это может быть всё, что угодно — UUID, случайное число, случайная текстовая строка. Должна слаться в виде строки. да
kmnrKey Идентификатор интеграции, в рамках которой анализируется показ. да
sub1 Заполенные суб-метки. Если какие-то метки вы не используете, их слать не обязательно. нет
sub2 ... нет
sub3 ... нет
sub4 ... нет
sub5 ... нет
sub6 ... нет
sub7 ... нет
sub8 ... нет
sub9 ... нет
sub10 ... нет

Также в этот запрос должны быть добавлены следующие заголовки, полученные от пользователя:

Название Описание
user-agent user agent пользователя
referer страница, с которой пришёл пользователь
accept-language язык интерфейса браузера
x-original-ip IP
x-forwarded-for IP
x-real-ip IP

Пример:

curl 'https://kaminari.click/v2/ping' -H 'accept: application/json' -H 'accept-language: en-US,en;q=0.9' -H 'cache-control: no-cache' -H 'content-type: text/plain;charset=UTF-8' -H 'origin: https://test.com' -H 'pragma: no-cache' -H 'referer: https://test.com/' -H 'sec-ch-ua: "Google Chrome";v="105", "Not)A;Brand";v="8", "Chromium";v="105"' -H 'sec-ch-ua-mobile: ?0' -H 'sec-ch-ua-platform: "Windows"' -H 'sec-fetch-dest: empty' -H 'sec-fetch-mode: no-cors' -H 'sec-fetch-site: cross-site' -H 'user-agent: Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36' --data-raw '{"kmnrKey":"xxxxxxxxx","kmnrId":"1125570260","sub1":"test","sub2":"1001","sub3":"10","sub4":"1385282124113622","sub5":"222","sub6":"555666","sub7":"8833705265931305","sub8":"94839150"}' --compressed

Перенаправление пользователя на кликворкер

Пользователя надо отправить на страницу, где наш JS-скрипт сможет собрать о нём данные. Есть два варианта — воспользоваться нашим кликворкером, или реализовать свой.

С нашим кликворкером

Перенаправьте пользователя на https://kaminari.click/v1/click. В GET-запрос надо добавить следующие поля:

Название Описание
kmnrId kmnrId, сгенерированный при отстуке на https://kaminari.click/v2/ping. Нужен для склеивания кликов.
kmnrKey Идентификатор интеграции, в рамках которой анализируется показ.
sub1 Заполенные суб-метки. Если какие-то метки вы не используете, их слать не обязательно.
sub2 ...
sub3 ...
sub4 ...
sub5 ...
sub6 ...
sub7 ...
sub8 ...
sub9 ...
sub10 ...
u целевая ссылка, на которую пользователь будет отправлен после проверки. Должна быть в URL-безопасном виде (например, обработана JS-методом encodeURIComponent).

Пример:

https://kaminari.click/v1/click?kmnrKey=930824531&kmnrId=123456789&sub1=test&sub2=1001&sub3=10&sub4=1385282124113622&sub5=222&sub6=555666&sub7=8833705265931305&u=https%3A%2F%2Ftest.com

Со своим кликворкером

Свой кликворкер нужен, чтобы все манипуляции происходили на одном домене. В таком случае не будет потерь на редиректах. А так же не будет задержек на сетевых запросах, потому что скрипт размещается прямо на странице.

Код кликворкера должен храниться на стороне клиента и с какой-то периодичностью подтягиваться от нас для обновления.

Кликворкер можно скачать по ссылке: https://kaminari.space/v1/click?kmnrKey=Template:KmnrKey&kmnrId=Template:KmnrId&sub1=Template:Sub1&sub2=Template:Sub2&sub3=Template:Sub3&sub4=Template:Sub4&sub5=Template:Sub5&sub6=Template:Sub6&sub7=Template:Sub7&sub8=Template:Sub8&sub9=Template:Sub9&sub10=Template:Sub10&u=Template:ClickUrl&checkUrl=Template:ClickUrl. И затем при отдаче клиенту заменять шаблоны {{ }} своими значениями.

Название Описание
kmnrId kmnrId, сгенерированный при отстуке на https://kaminari.click/v2/ping. Нужен для склеивания кликов.
kmnrKey Идентификатор интеграции, в рамках которой анализируется показ.
sub1 Заполенные суб-метки. Если какие-то метки вы не используете, их слать не обязательно.
sub2 ...
sub3 ...
sub4 ...
sub5 ...
sub6 ...
sub7 ...
sub8 ...
sub9 ...
sub10 ...
u целевая ссылка, на которую пользователь будет отправлен после проверки. Должна быть в URL-безопасном виде (например, обработана JS-методом encodeURIComponent).
checkUrl URL, проксирующий на вашем домене наш эндпойнт проверки клика.

Кликворкер должен отдавать следующие заголовки:

accept-ch: Width, Viewport-Width, DPR, Device-Memory, Downlink, RTT, ECT, Save-Data, Sec-CH-UA-Arch, Sec-CH-UA-Bitness, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform, Sec-CH-UA-Platform-Version, Sec-CH-UA, Sec-CH-UA-Full-Version
access-control-allow-headers: X-Requested-With, Cache-Control, Content-Type
access-control-allow-methods: GET, POST, OPTIONS
access-control-allow-origin: *

Отправка результата проверки

После того, как скрипт закончит проверку он отправляет данные на https://kaminari.click/v2/check. Если вы хотите чтобы всё работало надёжнее, можно проксировать этот URL на свой домен. И тогда всё будет происходить в рамках одного домена.

Ваш эндпойнт надо указать в шаблоне checkUrl при скачивании кликворкера.

Настройка для Nginx

map $antifraud $antifraud_host {
	antifraud_new kaminari.space;
	antifraud kadam-antifraud.com;
}

split_clients $request_id $antifraud {
    100%     antifraud_new;
    *      antifraud;
}

map $request_uri $url_type {
	default other;
	~*^/cnt antifraud;
}

location /cnt/api/index {
	access_log /var/log/nginx/antifrod_access.log main;
	rewrite /cnt/(.*) /$1 break;
	root /var/www/html/collectrom.com/current/public;
	proxy_set_header Host $antifraud_host;
	proxy_http_version 1.1;
   	proxy_set_header Connection "";
	proxy_set_header X-Forwarded-For $http_x_forwarded_for;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-KUser-IP $http_x_real_ip;
	proxy_pass http://$antifraud;
}

Ping back

После того, как мы получили и обработали данные мы отсылаем их вам на Ping back url (указывается в настройках) в формате JSON POST. { kmnrId: <kmnrId, сгенерированный при отстуке на https://kaminari.click/v2/ping>, fraud: 0|1 }