Штатные механизмы работы системы WNAM (не требующие отдельной лицензии) позволяют обеспечить показ абоненту Wi-Fi таргетированный рекламный контент расположенный на внешнем ресурсе. Эта функция реализована в системе WNAM версии 1.6.2753 и старше.

При подключении абонента проводится проверка идентифицированности его устройства (по МАС-адресу). При необходимости, проводится идентификация (авторизация) настроенным в системе способом. Затем, на стадии приветствия (после идентификации или при повторном подключении) система WNAM может перенаправить абонента на внешний (относительно системы WNAM) сервер в сети Интернет. На внешнем сервере размещен произвольный рекламный контент. В этот момент у абонента нет доступа в сеть Интернет. После просмотра рекламного контента внешний сервер обязан "вернуть" веб-сессию абонента обратно на сервер системы WNAM, после чего произойдет открытие полного доступа абонента в сеть Интернет.

Для настройки этого метода необходимо:

1. В настройках "Приветствия" (общих, у клиента, на площадке) выбрать опцию "Внешняя рекламная система", а также указать ссылку на неё.

При этом в URL можно (но не обязательно) указать мета-параметры: $(mac), $(ip), $(phonenumber), $(site-id), $(server), $(ap-id), которые в момент перехода абонента будут заполнены реальными значениями.

2. Необходимо добавить адрес внешнего сервера в список безусловно разрешенных до авторизации ресурсов, walled garden или acl на используемом оборудовании хотспота.

Если внешний рекламный ресурс в свою очередь использует какие-либо CDN-сети или подгружаемый извне контент, адреса этих ресурсов тоже необходимо добавить в walled garden либо использовать проксирование.

3. Внешний ресурс, на который будет перенаправлен абонент, может использовать таргетирование, полученное в URL, для показа своего контента. Вот как может выглядеть поступивший запрос:

GET /x.html?phone=79998887766&mac=EA:0A:BC:B4:AF:6D HTTP/2.0" 200 841 "http://aaa.ru/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.1 Safari/605.1.15"

Также следует учитывать, что устройство абонента будет подгружать по Wi-Fi контент, который может быть загружен. Не следует размещать в качестве контента jpeg-картинки размером 10 мегабайт и виде-ролики по 100 мегабайт.

4. По завершении показа контента внешний ресурс должен перенаправить абонента обратно на сервер системы WNAM. Это можно сделать автоматически по таймеру или через какую-либо кнопку, которую абонент должен будет нажать явно. Например, для этого можно использовать подобный Javascript-код:

<!DOCTYPE html>
<html lang="ru">
<head>
<title>External adv content</title>
</head><body><p>External adv content</p>
<!-- Hidden Redirect Form -->
<form name="redirectForm" role="form" action="http://172.16.131.5/cp/login" method="post"></form>
<script>
setTimeout(doSubmit, 10000);
function doSubmit() { document.redirectForm.submit(); }
</script>
</body>
</html>

В данном примере ссылку на сервер системы WNAM необходимо поправить "по месту".

Для корректной работы обратного перенаправления необходимо, чтобы оба сервера (рекламный и системы WNAM) работали по HTTP либо оба - по HTTPS. Возможно, потребуется явно устанавливать заголовки типа Access-Control-Allow-Origin для CORS политики.

5. По завершении перехода сессии абонента обратно на сервер системы WNAM, сервер системы открывает абоненту доступ в сеть Интернет в обычном режиме на заданное в "Ограничениях" время.

Лог-файл сервера выглядит следующим образом:

20:36:09.157 DEBUG [c.n.w.s.vendors.MikrotikService:342] - CP mikrotik clicked: username=D6:31:8E:20:A6:7A, ip=10.130.3.252, dst='http://aaa.ru/', server_address=10.130.3.1:80, server_name='mk1-hs'
20:36:09.170 DEBUG [com.netams.wnam.web.cp.PageGenerator:657] - processAuthRequest MIKROTIK: username=D6:31:8E:20:A6:7A, ip=10.130.3.252, server=10.130.3.1:80, site_id=223, dst='http://aaa.ru/' adv curr/max=1/1
20:36:09.172 DEBUG [com.netams.wnam.web.cp.PageGenerator:381] - processRedirectRequestCi mac=D6:31:8E:20:A6:7A, method=EXTADV, formName=, redirectUrl=phone=$(phonenumber)&mac=$(mac), key=ef465b89-c7d9-4202-a253-51638c0f3b23
# задержка в ~10 секунд на показ рекламы внешним сервером
20:36:21.058 DEBUG [c.n.w.web.cp.CaptivePortalController:2108] - webLoginCi: site_id=223, username=D6:31:8E:20:A6:7A, dst='http://aaa.ru/', dst_extra='null'
20:36:21.059 DEBUG [com.netams.wnam.web.cp.PageGenerator:798] - loginAtNasCi MIKROTIK mac=D6:31:8E:20:A6:7A, ip=10.130.3.252, server=10.130.3.1:80, dst='http://aaa.ru/'
20:36:21.066 DEBUG [c.n.w.s.vendors.MikrotikService:287] - backToMikrotik login len=531, server='10.130.3.1:80', username=D6:31:8E:20:A6:7A, password=password, dst='http://aaa.ru/'
20:36:21.169 DEBUG [c.n.wnam.services.WnamCmdService:1429] - AUTH for new session ID=null, request MAC=D6:31:8E:20:A6:7A, IP=10.130.3.252, cust_clientid=null, site_id=223
20:36:21.194 DEBUG [c.n.wnam.services.WnamCmdService:606] - ACCT Start new session ID=80700006, MAC=D6:31:8E:20:A6:7A, IP=10.130.3.252, User=D6:31:8E:20:A6:7A, NAS_IP=172.16.131.1, site_id=223