Думаю если вы зашли на данную страницу значит вы знакомы с тем что из себя предсталяет clickunder (Кликандер). Это один из самых распространённых форматов «чёрной» рекламы.
Сегодня мы с вами напишем свой качественный мульти-платформенный скрипт кликандера.
Прицип действия clickunder:
Посетитель заходит на сайт на котором установлен скрипт кликандера.
После того как этот посетитель сделать клик в любом месте странице, не важно где и куда — откроется новое окно с новым сайтом.
Обычно окно открывается сразу свёрнутым и невнимательный посетитель замечает его лишь ближе к концу своей интернет-сессии.
Итак, как же сделать свой собственный скрипт кликандера, который бы при клике открывал поставленный вами сайт?
Всё очень просто. Наш кликандер будет состоять из небольшого скрипта:
Самый простой Кликандер ( clickunder )
<script type="text/javascript">
var params = "menubar=yes,location=yes,resizable=yes,scrollbars=yes,status=yes"
function PopShow3() {
CookieTest=navigator.cookieEnabled;
if(CookieTest)
{
ClickUndercookie = GetCookie('clickunder');
if (ClickUndercookie == null)
{
var ExpDate = new Date ();
ExpDate.setTime(ExpDate.getTime() + (24 * 60 * 60 * 1000));
SetCookie('clickunder','1',ExpDate, "/");
window.open("http://ya.ru/", "Yandex", params);
window.focus();
}
}
}
function GetCookie (name) {
var arg = name + "=";
var alen = arg.length;
var clen = document.cookie.length;
var i = 0;
while (i < clen) {
var j = i + alen;
if (document.cookie.substring(i, j) == arg)
return getCookieVal (j);
i = document.cookie.indexOf(" ", i) + 1;
if (i == 0) break;
}
return null;
}
function SetCookie (name, value) {
var argv = SetCookie.arguments;
var argc = SetCookie.arguments.length;
var expires = (argc > 2) ? argv[2] : null;
var path = (argc > 3) ? argv[3] : null;
var domain = (argc > 4) ? argv[4] : null;
var secure = (argc > 5) ? argv[5] : false;
document.cookie = name + "=" + escape (value) +
((expires == null) ? "" : ("; expires=" + expires.toGMTString())) +
((path == null) ? "" : ("; path=" + path)) +
((domain == null) ? "" : ("; domain=" + domain)) +
((secure == true) ? "; secure" : "");
}
document.onmouseup=PopShow3;
</script>
Жирным помечено то что вам следует изменить под свой кликандер:
window.open("http://адрессайта.ру";, "Имя окна", params);
Измените 2 значение в вышеуказанной строчке скрипта. На месте http://адрессайта.ру напишите адрес, который откроется в новом окне после клика посетителя. Вместо Имя окна напишите имя окна которое откроется. Несмотря на то что в Хроме, в частности на моей версии Хрома, Имя окна никак не влияло, всё же укажите этот параметр.
Кликандер для уникального посетителя будет работать 1 раз в сутки, чтобы изменить это значение, поменяйте цифры в строке:
ExpDate.setTime(ExpDate.getTime() + (24 * 60 * 60 * 1000));
24 * 60 * 60 * 1000 обозначает 24часа * 60минут * 60секунд * 1000миллисекунд. Т.е Данное выражение вычисляет количество миллисекунд через которое одному и тому же посетителю можно вновь показывать рекламу. Например для того чтобы сделать работу кликандера для одного посетителя раз в час поменяйте 24 на 1, для того чтобы сделать раз в 2 суток, поменяйте 24 на 48.
На этом всё. У нас получился отличный рабочий кликандер. Вставлять код в страницу было бы слишком громоздко, поэтому рекомендуется сделать файлик с именем clicunder.js и затем на странице в месте, желательно перед закрывающим тегом </body> поставить строчку:
<script src="clicunder.js"></script>
Если у вас возникли вопросы по работе кликандера, его установке пишите в комментариях, а пока мы разберем с вами еще один, более сложный скрипт.
Сложный, но очень качественный скрипт Кликандера ( кросс-платформенный)
var amcu_day_shows = 2; // дни
var amcu_session_shows = 2; //сессии
var amcu_interval = 3;
txt = new Array();
txt[0]="http://первый адрес"
txt[1]="http://второй адрес"
var b = Math.round(Math.random() * (txt.length - 1))
var amcu_url = txt[b];
var code_vers = 5;
var amcu_target;
var amcu_getCookie = function(name) {
if (document.cookie.length > 0) {
start = document.cookie.indexOf(name + "=");
if (start !== -1) {
start = start + name.length + 1;
end = document.cookie.indexOf(";", start);
if (end === -1) {
end = document.cookie.length;
}
return unescape(document.cookie.substring(start, end));
}
}
return "";
};
var amcu_setCookie = function(name, val, endh) {
var exdate = new Date;
endh = exdate.getHours() + endh;
exdate.setHours(endh);
document.cookie = name + "=" + escape(val) + (endh === null ? "" : ";expires=" + exdate.toGMTString() + ";path=/;");
};
if (!Array.prototype.indexOf) {
Array.prototype.indexOf = function(elem, startFrom) {
var startFrom = startFrom || 0;
if (startFrom > this.length) {
return -1;
}
for (var i = 0; i < this.length; i++) {
if (this[i] == elem && startFrom <= i) {
return i;
} else if (this[i] == elem && startFrom > i) {
return -1;
}
}
return -1;
};
}(function() {
var browser = (function() {
var appName = navigator.appName,
ua = navigator.userAgent,
tem;
var matches = ua.match(/(opera|chrome|safari|firefox|msie)\/?\s*(\.?\d+(\.\d+)*)/i);
if (matches && (tem = ua.match(/version\/([\.\d]+)/i)) != null) {
matches[2] = tem[1];
}
matches = matches ? [matches[1].toUpperCase(), matches[2]] : [appName, navigator.appVersion, '-?'];
if (ua.indexOf('OPR') + 1) {
matches[0] = "OPERA";
}
return matches;
})();
var browserName = browser[0];
var amcu_switcher = 1;
var amcu_click = 0;
var amcu_n = (amcu_getCookie("amcu_n")) ? parseInt(amcu_getCookie("amcu_n"), 10) : 0;
var amcu_pop = (amcu_getCookie("advmaker_pop")) ? parseInt(amcu_getCookie("advmaker_pop"), 10) : 0;
var amcu_intervals = new Array();
for (var i = 1; i <= amcu_session_shows; i++) {
amcu_intervals.push(-amcu_interval + (amcu_interval * i) + 1);
}
var amcu_set_overlay = function() {
if (!amcu_target) {
var amcu_body = document.body,
amcu_html = document.documentElement;
var amcu_height = Math.max(amcu_body.scrollHeight, amcu_body.offsetHeight, amcu_html.clientHeight, amcu_html.scrollHeight, amcu_html.offsetHeight);
var amcu_width = Math.max(amcu_body.scrollWidth, amcu_body.offsetWidth, amcu_html.clientHeight, amcu_html.scrollWidth, amcu_html.offsetWidth);
var amcu_overlay = document.createElement('div');
amcu_overlay.style.position = (document.compatMode === 'CSS1Compat') ? 'fixed' : 'absolute';
// amcu_overlay.innerHTML = '<img src="//w30.am15.net/img/ie_img_fix.gif" width="100%" height="100%">';
amcu_overlay.style.zIndex = "9999999";
amcu_overlay.style.top = "0";
amcu_overlay.style.left = "0";
document.body.appendChild(amcu_overlay);
amcu_target = amcu_overlay;
amcu_target.style.width = amcu_width + "px";
amcu_target.style.height = amcu_height + "px";
}
setTimeout(function() {
var amcu_frames = document.getElementsByTagName('iframe');
for (var i = 0; i < amcu_frames.length; i++) {
if (amcu_frames[i].src.indexOf('am15.net') != -1) {
var amcu_bnrect = amcu_frames[i].getBoundingClientRect();
var amcu_spot = document.createElement('div');
amcu_spot.style.position = "absolute";
amcu_spot.style.zIndex = "10000000";
amcu_spot.style.width = amcu_bnrect.width + "px";
amcu_spot.style.height = amcu_bnrect.height + "px";
amcu_spot.style.left = amcu_bnrect.left + "px";
amcu_spot.style.top = amcu_bnrect.top + "px";
amcu_spot.onmouseover = function() {
amcu_overlay.style.display = "none";
};
amcu_spot.onmouseout = function() {
amcu_overlay.style.display = "block";
};
amcu_frames[i].onmouseover = function() {
amcu_overlay.style.display = "none";
};
amcu_frames[i].onmouseout = function() {
amcu_overlay.style.display = "block";
};
amcu_overlay.appendChild(amcu_spot);
}
}
}, 3000);
};
var amcu_run = function(e) {
if (browserName == "CHROME" || browserName == "SAFARI" || browserName == "OPERA") {
if (!e) {
e = window.event;
}
var a = document.createElement('a');
a.target = '_blank';
a.href = amcu_url;
var clk = document.createEvent('MouseEvents');
clk.initMouseEvent('click', true, true, window, 0, 0, 0, 0, 0, true, false, false, true, 0, null);
a.dispatchEvent(clk);
} else if (browserName == "FIREFOX") {
var cu = self.window.open(amcu_url, "", 'width=' + (screen.width - 11) + ',height=' + (screen.height - 11) + ',scrollbars=1,top=0,left=0');
cu.blur();
cu.opener.window.focus();
window.self.window.blur();
window.focus();
for (var i = 0; i < 2; i++) {
var dummy = window.open("about:blank");
dummy.focus();
dummy.close();
}
} else if (browserName == 'MSIE') {
w = screen.availWidth + 1;
h = screen.availHeight + 1;
args = "titlebar=0,toolbar=0,location=0,menubar=0,scrollbars=1,resizable=1,channelmode=0,directories=0,status=0,";
args += "width=" + w + ",height=" + h + ",";
args += "left=0,top=0";
newwin1 = window.open(amcu_url, "", args);
newwin1.blur();
amcu_target.onclick = null;
} else {
window.open(amcu_url);
}
};
var amcu_open_cu = function() {
amcu_run();
if (amcu_target != window) {
amcu_target.parentNode.removeChild(amcu_target);
}
document.cookie = 'advmaker_pop=; expires=Thu, 01 Jan 1970 00:00:01 GMT; path=/';
return false;
};
if (amcu_click === 0) {
if (amcu_click === 0 && amcu_switcher === 1) {
amcu_click = 1;
if (amcu_n < (amcu_session_shows * amcu_interval + 1) && amcu_pop == 0) {
amcu_n++;
amcu_setCookie("amcu_n", amcu_n, 24 / amcu_day_shows);
}
if ((amcu_intervals.indexOf(parseInt(amcu_n)) != -1)) {
amcu_setCookie("advmaker_pop", 1, 24 / amcu_day_shows);
}
if (amcu_getCookie("advmaker_pop")) {
amcu_set_overlay();
if (browserName == "FIREFOX" || browserName == "MSIE") {
amcu_target.onclick = function() {
amcu_open_cu();
};
} else {
amcu_target.onmousedown = function() {
amcu_open_cu();
};
}
}
}
}
})();
Кому не ясно что к чему в данном коде — рекомендую использовать первый вариант — он проще.
Ну и на последок совет: неплохо было бы закодировать ( обусфицировать ) скрипт от поисковиков. Сделать это можно тут: www.javascriptobfuscator.com