> For the complete documentation index, see [llms.txt](https://docs.exoclick.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.exoclick.com/tutorials/ru/uchebnye-materialy/uchebnye-materialy-dlya-izdatelei/serve-sfw-ads.md).

# Как показывать SFW-рекламу с ExoClick

Поскольку страны начинают внедрять законы о проверке возраста, издателям нужно найти способ соблюдать эти законы, одновременно минимизируя их влияние на доход. Именно поэтому ExoClick добавил несколько параметров, которые можно добавить к рекламным зонам, чтобы помочь издателям не только блокировать NSFW-продукты, но и отслеживать, действительно ли эти пользователи успешно подтвердили свой возраст. В этом руководстве мы покажем, как использовать эти параметры.

## data-ex\_av

Параметр `параметр data-ex_av` определяет, подтвердил ли пользователь свой возраст, и позволяет использовать 3 значения:

* `"0"`: Нет проверки возраста (не определено)
* `"1"`: Проверка возраста — подтверждено
* `"2"`: Проверка возраста — не подтверждено (SFW)

Пример кода:

```html
<script async type="application/javascript" src="https://a.magsrv.com/ad-provider.js"></script> 
 <ins class="eas6a97888e2" data-zoneid="5209020"  data-ex_av="2"></ins> 
 <script>(AdProvider = window.AdProvider || []).push({"serve": {}});</script>
```

## data-block-ad-types

Параметр `data-block-ad-types` параметр позволяет блокировать определённые метки типов рекламы на лету. Для блокировки NSFW-рекламы мы будем использовать только значение `"101"` в этом параметре.

Пример кода:

```html
<script async type="application/javascript" src="https://a.magsrv.com/ad-provider.js"></script> 
 <ins class="eas6a97888e2" data-zoneid="5209020"  data-block-ad-types="101"></ins> 
 <script>(AdProvider = window.AdProvider || []).push({"serve": {}});</script>
```

## Использование параметров

Учитывая то, что мы объяснили, если вы хотите показывать рекламу, которая является SFW, и хотите определить этого пользователя как того, кто ещё не подтвердил свой возраст, вы внедрите параметры следующим образом:

```html
<script async type="application/javascript" src="https://a.magsrv.com/ad-provider.js"></script> 
 <ins class="eas6a97888e2" data-zoneid="5209020" data-ex_av="2"  data-block-ad-types="101"></ins> 
 <script>(AdProvider = window.AdProvider || []).push({"serve": {}});</script>
```

{% hint style="info" %}
**Примечание**: важно использовать оба параметра.
{% endhint %}

А если вы хотите показывать NSFW-рекламу верифицированному пользователю, это делается так:

```html
<script async type="application/javascript" src="https://a.magsrv.com/ad-provider.js"></script> 
 <ins class="eas6a97888e2" data-zoneid="5209020" data-ex_av="1"></ins> 
 <script>(AdProvider = window.AdProvider || []).push({"serve": {}});</script>
```

Следующий раздел содержит несколько примеров того, как можно динамически добавлять эти параметры в рекламные зоны. В зависимости от используемой вами проверки возраста пользователи могут подтверждаться либо через cookie, либо через параметр URL, либо как-то иначе. В конечном счёте, **именно вы отвечаете за определение статуса верификации ваших пользователей и соответствующую реализацию параметров.**

### Пример 1: Изменение параметров на основе значения cookie

Предположим, что вы назначаете пользователям, успешно подтвердившим свой возраст, стороннюю cookie под названием “verified\_user” со значением “yes”. В этом сценарии вы можете динамически добавлять параметры ex\_av и data-block-ad-types следующим образом:

```html
//баннерные рекламные зоны
<script async type="application/javascript" src="https://a.magsrv.com/ad-provider.js"></script>
<div id=”adspot1”>
<ins class="eas6a97888e2" data-zoneid="5409832" data-block-ad-types="101" data-ex_av="2"></ins>
<div id=”adspot2”>
<ins class="eas6a97888e2" data-zoneid="5632512" data-block-ad-types="101" data-ex_av="2"></ins>
<div id=”adspot3”>
<ins class="eas6a97888e2" data-zoneid="57382911" data-block-ad-types="101" data-ex_av="2"></ins>

//fpi ad zones
<script async type="application/javascript" src="https://a.pemsrv.com/ad-provider.js"></script> 
<ins class="eas6a97888e35" data-zoneid="5045990" data-block-ad-types="101"  data-ex_av="2"></ins>

//динамическая функция на основе cookie
<script>
function getCookie(name) {
const value = `; ${document.cookie}`;
const parts = value.split(`; ${name}=`);
if (parts.length === 2) return parts.pop().split(';').shift();
}

const verifiedUser = getCookie("verified_user");
if (verifiedUser === "verifiedUser") {
const adInsElements = document.querySelectorAll("ins");
adInsElements.forEach(ins => {
ins.setAttribute("data-ex_av", "1");
ins.setAttribute("data-block-ad-types", "0");
});
}
(AdProvider = window.AdProvider || []).push({"serve": {}});
</script>
```

Этот скрипт позволит вам показывать NSFW-рекламу тем пользователям, у которых есть cookie “user\_verified”. Обратите внимание, что после того, как пользователь подтвердит свой возраст, вам нужно будет обновить страницу, чтобы скрипт мог корректно обнаружить cookie.

### Пример 2: Изменение параметров на основе параметра URL

В этом примере мы предполагаем, что при успешном подтверждении возраста пользователем URL получает параметр “user\_verified=yes”.

```html
<script async type="application/javascript" src="https://a.magsrv.com/ad-provider.js"></script>
<div id="ad-container">
      <ins class="eas6a97888e20" data-zoneid="5662140" data-block-ad-types="101" data_ex_av="2"></ins>
</div>
    <script>
      (AdProvider = window.AdProvider || []).push({ serve: {} });
    </script>
    <script>
      const userVerified = new URLSearchParams(window.location.search).get(
        "user_verified"
      );
      if (userVerified === "yes") {
        let container = document.getElementById("ad-container");

        container.innerHTML = "";

        let newIns = document.createElement("ins");
        newIns.className = "eas6a97888e20";
        newIns.setAttribute("data-zoneid", "5662140");
        newIns.setAttribute("data-block-ad-types", "");
        newIns.setAttribute("data-ex_av","1");
        container.appendChild(newIns);

        (AdProvider = window.AdProvider || []).push({ serve: {} });
      }
    </script>
```

{% hint style="info" %}
**Помните**: эти примеры кода — всего лишь рекомендации. Вам следует обсудить с инструментом проверки возраста, как пользователи проходят верификацию, и соответствующим образом адаптировать ваши скрипты.
{% endhint %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.exoclick.com/tutorials/ru/uchebnye-materialy/uchebnye-materialy-dlya-izdatelei/serve-sfw-ads.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
