Некоторые 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.

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