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