Meta redirect s2s: Difference between revisions

From Wiki Kaminari Click
No edit summary
No edit summary
Line 1: Line 1:
Интеграция предназначена для серьёзных решений без потери кликов.
Интеграция предназначена для серьёзных решений без потери кликов.


== НАСТРОЙКА ИНТЕГРАЦИИ ==
== Настройка интеграции ==


=== Общие настройки ===
=== Общие настройки ===
Line 21: Line 21:
[[File:Meta redirect 7.png]]
[[File:Meta redirect 7.png]]


== НАСТРОЙКА НА СТОРОНЕ СЕРВЕРА ==
== Настройка на стороне клиента ==


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


Данные должны слаться в формате JSON.
Данные должны слаться в формате JSON.
Line 35: Line 35:
| kmnrId || рандомный идентификатор показа. Генерируется на стороне клиента. Это может быть всё, что угодно — UUID, случайное число, случайная текстовая строка.
| kmnrId || рандомный идентификатор показа. Генерируется на стороне клиента. Это может быть всё, что угодно — UUID, случайное число, случайная текстовая строка.
|-
|-
| kmnrKey || идентификатор интеграции, в рамках которой анализируется показ.
| kmnrKey || идентификатор интеграции, в рамках которой анализируется показ
|-
|-
| sub1 || заполенные суб-метки. Если какие-то метки вы не используете, их слать не обязательно.
| sub1 || заполенные суб-метки. Если какие-то метки вы не используете, их слать не обязательно
|-
|-
| sub2 || ...
| sub2 || ...
Line 60: Line 60:
Также в запрос должны быть добавлены следующие заголовки, полученные от пользователя:
Также в запрос должны быть добавлены следующие заголовки, полученные от пользователя:
{| class="wikitable"
{| class="wikitable"
|+ Caption text
|+ Заголовки
|-
|-
! Название !! Описание
! Название !! Описание
|-
|-
| user-agent || user agent пользователя.
| user-agent || user agent пользователя
|-
|-
| referer || страница, с которой пришёл пользователь.
| referer || страница, с которой пришёл пользователь
|-
|-
| accept-language || язык интерфейса браузера.
| accept-language || язык интерфейса браузера
|-
|-
| x-original-ip || IP
| x-original-ip || IP
Line 78: Line 78:


Пример:
Пример:
<code>
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
</code>


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


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


{| class="wikitable"
|+ Caption text
|-
! Название !! Описание
|-
| 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]).
|}


 
Пример:
<code>
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
</code>


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


Чтобы все манипуляции происходили на одном домене. Нет потери на редиректах, нет потери на сетевых запросах, потому что скрипт размещается прямо на странице.
Должен храниться на стороне клиента и с какой-то периодичностью подтягиваться от нас.
 
Сервер. На кликворвер приходит клик
 
Собирается инфа о клике, генерится kmnrId, передаётся на /ping (application/json)
kmnrId
kmnrKey
sub1..10
  UA в хидере User-Agent
IP клиентский (хидер X-Original-IP)
IP x-forwarded-for (хидер X-Forwarded-For)
IP x-real-ip (хидер X-Real-IP)
  referrer
  acceptLanguage
Пример:
'accept-language: en-US,en;q=0.9,uk;q=0.8,ru;q=0.7,sr;q=0.6'
'cache-control: no-cache'
'origin: https://test.my'
'pragma: no-cache'
'referer: https://test.my/'
'sec-ch-ua: "Google Chrome";v="105", "Not)A;Brand";v="8", "Chromium";v="105"'
'sec-ch-ua-mobile: ?0'
'sec-ch-ua-platform: "Windows"'
'sec-fetch-dest: empty'
'sec-fetch-mode: no-cors'
'sec-fetch-site: cross-site'
'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'
+
{"kmnrKey":"e15f644b-a755-4e96-271c-bd38ba8abb96","kmnrId":"1125570260","utmSource":"test","utmCampaign":"1001","utmMedium":"10","utmSite":"1385282124113622","utmTerm":"222","utmContent":"555666","utmClickId":"8833705265931305","utmBlockId":"94839150","utmPlacementId":"50656068","clickId":432971006,"blockId":333333,"domainId":-2222222,"eventType":"test","susReason":"123"}
 
Фронт. Кликворкер
Шаблон с параметрами и скриптами. Должен храниться на стороне клиента и с какой-то периодичностью подтягиваться от нас.


Кликворкер должен отдавать следующие заголовки:
<code>
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
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-headers: X-Requested-With, Cache-Control, Content-Type
access-control-allow-methods: GET, POST, OPTIONS
access-control-allow-methods: GET, POST, OPTIONS
access-control-allow-origin: *
access-control-allow-origin: *
 
</code>
Параметры (заполняются клиентом):
{%= url %} - целевой URL
{%= kmnrKey %} - kmnrKey
{%= kmnrId %} - kmnrId
{%= sub1 %}
{%= sub2 %}
{%= sub3 %}
{%= sub4 %}
{%= sub5 %}
{%= sub6 %}
{%= sub7 %}
{%= sec_fetch %}


{%l= clickUrl %} - URL, на который скрипт отправит данные
{%l= clickUrl %} - URL, на который скрипт отправит данные
{%l= trafficBackUrl %} - заполняем мы
{%l= trafficBackUrl %} - заполняем мы


Скрипты:  
== Отправка результата проверки ==
kaminari/click.legacy,
После того, как скрипт закончит проверку он отправляет данные на https://kaminari.click/v2/check. Если вы хотите чтобы всё работало надёжнее, можно проксировать этот URL на свой домен. И тогда всё будет происходить в рамках одного домена.
clickworker/antifraud.script,
kaminari/click.error,
kaminari/click.noscript
 
Наша JS-ка отрабатывает, посылает данные на clickUrl, который расположен на том же домене, что и кликворкер. clickUrl проксирует данные на наш /check.


Кликворкер редиректит на clickUrl.
== Ping back ==


Данные обрабатываются, пишутся в КХ, на Ping back url (указывается в настройках) шлётся fraud и то, что пришло на /ping
Данные обрабатываются, пишутся в КХ, на Ping back url (указывается в настройках) шлётся fraud и то, что пришло на /ping
req.Header.SetContentType(ApplicationJSON)
req.Header.SetContentType(ApplicationJSON)
req.Header.SetMethod("POST")
req.Header.SetMethod("POST")

Revision as of 08:28, 10 March 2023

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

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

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

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

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

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

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

Meta redirect 6.png

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

Meta redirect 8.png

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

Meta redirect 7.png

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

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

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

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

Caption text
Название Описание
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

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

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

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

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

Caption text
Название Описание
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

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

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

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

Кликворкер должен отдавать следующие заголовки: 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: *

{%l= clickUrl %} - URL, на который скрипт отправит данные {%l= trafficBackUrl %} - заполняем мы

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

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

Ping back

Данные обрабатываются, пишутся в КХ, на Ping back url (указывается в настройках) шлётся fraud и то, что пришло на /ping req.Header.SetContentType(ApplicationJSON) req.Header.SetMethod("POST")