Master-X
Форум | Новости | Статьи
Главная » Форум » Программинг, Скрипты, Софт, Сервисы » 
Тема: Обход Adblock от Exoclick
цитата
09/11/16 в 15:34
 Mit
У кого стоит и работает сабж, дайте phpinfo() своего сервака, у меня не работает почему-то.
примеры рабочих скриптов от exo:
http://www.tube18.sex/
http://www.teenpornvideo.xxx/
может овнеры здесь есть?
цитата
09/11/16 в 17:55
 Гарин
Если речь о четырех баннерах внизу, то их видно, да, но ссылки с них не будут работать как надо: попап (или что там должно было быть) немедленно закроется адблоком, если целевой урл (или его часть) окажется в одном из многочисленных черных списков. Например меня под ру кинуло на какой-то livedigest.net, а для него в RU AdList красным по белому написано: ||livedigest.net^, т.е. иди пасись. И в чем смысл такого решения?

Не знаю чьи это сайты, но заморачиваться анти адблок решением и при этом иметь в коде div с id="banner" и script с src="porn_ad.js" и src="sex_ad.php" это надо быть очень умным. Дай угадаю: кулинарный техникум? smail101.gif
цитата
09/11/16 в 19:00
 Mit
Ничего не знаю про кулинарные техникумы, но скрипт работает, заморочек с ним нет совершенно и лично меня с баннеров кидало на main.dynsrvaba.com, который не блокируется.
У меня не работает из-за проблем с сервером: саппорт exo не хочет разбираться с конфигом моего сервака, а саппорт сервака не хочет разбираться в коде скрипта.
Мне бы по теме лучше кто помог
Гарин: а ты часом не завязан как нибудь на Adblock, а то что-то слишком навязчиво ты его пиаришь
цитата
09/11/16 в 19:20
 Гарин
Разметка:
<div class="banner">
<div>
<script type="text/javascript">
var ad_idzone = "1886044",
    ad_width = "300",
    ad_height = "250";
</script>
<script type="text/javascript" src="https://ads.exoclick.com/ads.js"></script>
<noscript>&lt;a href="http://main.exoclick.com/img-click.php?idzone=1886044" target="_blank"&gt;&lt;img src="https://syndication.exoclick.com/ads-iframe-display.php?idzone=1886044&amp;output=img&amp;type=300x250" width="300" height="250"&gt;&lt;/a&gt;</noscript>
<iframe style="border:0px solid #000000" frameborder="0" scrolling="no" width="300" height="250" src="about:blank"></iframe><script type="text/javascript">
    ExoLoader.addZone({"type": "banner", "width":"300", "height":"250", "idzone":"1886044"});
</script>
</div>

</div>
Код скрипта полностью:
var ExoLoader = (function () {
    var version = '2.4';

    var setCookie = function (name, value, minutes_ttl) {
        var exdate = new Date();
        exdate.setMinutes(exdate.getMinutes() + minutes_ttl);
        var c_value = encodeURI(value) + "; expires=" + exdate.toUTCString() + "; path=/";
        document.cookie = name + "=" + c_value;
    };

    var openLink = function (event, dest) {
        var ie = (function(){
            var undef,rv = -1; // Return value assumes failure.
            var ua = window.navigator.userAgent;
            var msie = ua.indexOf('MSIE ');
            var trident = ua.indexOf('Trident/');

            if (msie > 0) {
                // IE 10 or older => return version number
                rv = parseInt(ua.substring(msie + 5, ua.indexOf('.', msie)), 10);
            } else if (trident > 0) {
                // IE 11 (or newer) => return version number
                var rvNum = ua.indexOf('rv:');
                rv = parseInt(ua.substring(rvNum + 3, ua.indexOf('.', rvNum)), 10);
            }

            return ((rv > -1) ? rv : undef);
        }());

        if ( typeof(event) != "undefined" ) {
            event.returnValue = false;
            if ( event.preventDefault ) {
                event.preventDefault();
            }
        }
        var f = document.createElement("form");
        if (ie) {
            f.setAttribute("action", dest);
        } else {
            f.setAttribute("action", "data:text/html;base64," + btoa("<html><meta http-equiv=\"refresh\" content=\"0; url=" + dest + "\"></html>"));
        }
        f.setAttribute("method", "post");
        f.setAttribute("target", "_blank");
        document.getElementsByTagName("body").item(0).appendChild(f);
        f.submit();
        document.getElementsByTagName("body").item(0).removeChild(f);
        return false;
    };

    var ad_types = ['banner', 'popunder'];
    var zone_params = {};
    var dom = {};
    var debug_messages = [];

    var addDebugMessage = function (message) {
        var date = new Date();
        debug_messages.push(date.toISOString() + ": " + message);
    };

    var stringify = function (value) {
        var reassign_when_finished = false;
        if (typeof Array.prototype.toJSON !== 'undefined') {
            reassign_when_finished = true;
            var array_to_json = Array.prototype.toJSON;
            delete Array.prototype.toJSON;
        }
        var val = JSON.stringify(value);
        if (reassign_when_finished) {
            Array.prototype.toJSON = array_to_json;
        }
        return val;
    };

    var loader = {
        cookie_name: "exo_zones",
        addZone: function(params) {
            if (typeof exo99HL3903jjdxtrnLoad != "undefined" && exo99HL3903jjdxtrnLoad) {
                return false;
            }
            if (typeof params != 'object'
                || typeof params.type == 'undefined'
                || ad_types.indexOf(params.type) == -1
            ) {
                addDebugMessage("addZone() invalid params");
                return false;
            }
            var scripts = document.getElementsByTagName('script');
            // The current <script> tag where the method is called
            var here = scripts[ scripts.length - 1 ];

            var type = params.type;
            delete params.type;
            if (typeof zone_params[type] == 'undefined') {
                dom[type] = [];
                zone_params[type] = [];
            }

            zone_params[type].push(params);

            if (type == 'banner') {
                var iframe = document.createElement('iframe');
                iframe.setAttribute('style', 'border:0px solid #000000');
                iframe.setAttribute('frameborder', '0');
                iframe.setAttribute('scrolling', 'no');
                iframe.setAttribute('width', params.width);
                iframe.setAttribute('height', params.height);
                iframe.setAttribute('src', 'about:blank');
                here.parentNode.insertBefore(iframe, here);
                dom[type].push(iframe);
            }

            addDebugMessage("addZone() " + type + " " + params.idzone + " added");
            return true;
        },
        renderBannerZone: function (id, img_data, dest) {
            addDebugMessage("renderBannerZone(" + id + ", ...) called");
            if (typeof dom['banner'][id] == 'undefined'
                || typeof img_data != 'object'
                || typeof img_data.img == 'undefined'
                || typeof img_data.content_type == 'undefined'
                || typeof dest == 'undefined'
            ) {
                addDebugMessage("renderBannerZone(" + id + ") corrupt params");
                return false;
            }
            var doc = dom['banner'][id].contentWindow.document;
            doc.body.style.margin = "0px";
            doc.body.innerHTML = '' +
            '<a id="dest" href="javascript:void(0)" target="_blank" border="0">' +
            '<img width="' + zone_params['banner'][id].width + '" height = "' + zone_params['banner'][id].height + '" src = "data:' + img_data.content_type + ';base64,' + img_data.img + '">' +
            '</a>';
            doc.getElementById('dest').onclick = (function(dest) {
                return function(event) {
                    openLink(event, dest);
                };
            })(dest);
        },
        renderBannerZones: function (response) {
            addDebugMessage("renderBannerZones() called");
            if (typeof response != 'object'
                || typeof response.zones != 'object'
                || typeof response.images != 'object'
            ) {
                addDebugMessage("renderBannerZones() empty zones or images");
                return;
            }
            for (var i = 0; i < response.zones.length; i++) {
                var img_key = response.zones[i].img_key;
                this.renderBannerZone(i, response.images[img_key], response.zones[i].dest);
            }
        },
        serve: function(params) {
            if (typeof exo99HL3903jjdxtrnLoad != "undefined" && exo99HL3903jjdxtrnLoad) {
                addDebugMessage("serve() ad blocker not enabled");
                return false;
            }
            var zones_added = false;
            for (var type_index = 0; type_index < ad_types.length; type_index++) {
                if (typeof zone_params[ad_types[type_index]] !== 'undefined' && zone_params[ad_types[type_index]].length > 0) {
                    zones_added = true;
                    break;
                }
            }
            if (!zones_added) {
                addDebugMessage("serve() no zones added");
                return false;
            }
            window.exoNoExternalUI38djdkjDDJsio96 = true;
            addDebugMessage("serve() called");
            setCookie(this.cookie_name, stringify(zone_params), 5);
            var loadDataScript = function () {
                var dataScript = document.createElement("script");
                dataScript.async = true;
                dataScript.setAttribute('type', 'text/javascript');
                dataScript.setAttribute('src', params.script_url);
                dataScript.onload = function(){
                    addDebugMessage("serve() hosted script loaded");
                };
                document.getElementsByTagName("body").item(0).appendChild(dataScript);
            };
            if (window.addEventListener) {
                window.addEventListener("load", loadDataScript, false);
            } else if (window.attachEvent) {
                window.attachEvent("onload", loadDataScript);
            } else {
                window.onload = loadDataScript;
            }
            return true;
        },
        getDebug: function() {
            for (var i = 0; i < debug_messages.length; i++) {
                console.log(debug_messages[i]);
            }
        },
        getVersion: function() {
            return version;
        }
    };

    return loader;
})();
Так он вызывается:
ExoLoader.renderBannerZones({
  // Здесь урлы для слива и картинки в base64
});

А теперь внимание вопрос: какие проблемы на сервере могут помешать этому коду работать?
цитата
09/11/16 в 19:40
 Diablo
Гарин: а скинь свои контакты плиз какие-нибудь icon_rolleyes.gif в профайле пусто ,
а то ты видимо неплохой спец по адблок решениям
цитата
10/11/16 в 06:25
 Mit
Гарин писал:
А теперь внимание вопрос: какие проблемы на сервере могут помешать этому коду работать?

Так к чему ты клонишь? К тому, что все у кого баннеры показываются проплатили whitelist, а весь этот код - так, для отвода глаз?
цитата
10/11/16 в 06:49
 Гарин
Единственная причина на сервере по которой этот код может не сработать это если сервер не отдаст его вовсе. icon_smile.gif
цитата
10/11/16 в 18:12
 Mit
Гарин писал:
Так он вызывается:
Код: [свернуть]
ExoLoader.renderBannerZones({
// Здесь урлы для слива и картинки в base64
});

ты забыл про php код
<script type="text/javascript">
    ExoLoader.serve({"script_url":"/backend_loader.php"});
</script>
которому необходим php 5.2, curl, ну и наверное что-то еще чего у меня нет или не правильно настроено.
Гарин писал:
Единственная причина на сервере по которой этот код может не сработать это если сервер не отдаст его вовсе.

Вот тут ты прав
цитата
10/11/16 в 18:24
 Гарин
Mit писал:
backend_loader.php

Нет не забыл. На tube18.sex он назывется sex_ad.php и возвращает вот это:

Код:
ExoLoader.renderBannerZones({
zones": [{
        "dest": "урл для слива",
        "img_key": 0
    },
    ...
    ],
    "images": {
        "0": {
            "img": "картинка в base64",
            "content_type": "image\/gif"
        }
    }
});


Загружается все это дело путем создания тэга script с src="sex_ad.php" и вставки его в дом.

serve: function(params) {
    if (typeof exo99HL3903jjdxtrnLoad != "undefined" && exo99HL3903jjdxtrnLoad) {
        addDebugMessage("serve() ad blocker not enabled");
        return false;
    }
    var zones_added = false;
    for (var type_index = 0; type_index < ad_types.length; type_index++) {
        if (typeof zone_params[ad_types[type_index]] !== 'undefined' && zone_params[ad_types[type_index]].length > 0) {
            zones_added = true;
            break;
        }
    }
    if (!zones_added) {
        addDebugMessage("serve() no zones added");
        return false;
    }
    window.exoNoExternalUI38djdkjDDJsio96 = true;
    addDebugMessage("serve() called");
    setCookie(this.cookie_name, stringify(zone_params), 5);
    var loadDataScript = function () {
        var dataScript = document.createElement("script");
        dataScript.async = true;
        dataScript.setAttribute('type', 'text/javascript');
        dataScript.setAttribute('src', params.script_url);
        dataScript.onload = function(){
            addDebugMessage("serve() hosted script loaded");
        };
        document.getElementsByTagName("body").item(0).appendChild(dataScript);
    };
    if (window.addEventListener) {
        window.addEventListener("load", loadDataScript, false);
    } else if (window.attachEvent) {
        window.attachEvent("onload", loadDataScript);
    } else {
        window.onload = loadDataScript;
    }
    return true;
}

При чем тут версия пхп, курл и т.д. все равно не понятно. Тем не менее программирование по переписке занятие увлекательное, продолжай. icon_smile.gif
цитата
11/11/16 в 07:44
 beto
у меня заработало после 2 вещей:
пхп 5.4(на 5.2 никак не хотел)
The PHP APC extension+json

там в архиве есть замечательный файл README.md
а именно вот это место
##My ads aren't showing. What to do?
* Have you run *diag.php*? It could hint you if there is an issue with your backend loader configuration.
* Check the "Network" tab in Chrome/FF "Developer tools" toolbar. Is your frontend_loader.js loading properly?
Maybe you need to specify a different path. Try a full path to it in src instead of "/frontend_loader.js"
* Check that ExoLoader.addZone() is called *before* ExoLoader.serve()
* Check the "Console" tab in Chrome/FF "Developer tools" toolbar. There could be errors related to frontend_loader.js
* Run ExoLoader.getDebug(); in javascript console to see what is happening. The output looks like this:
цитата
11/11/16 в 14:29
 Mit
beto:
Точно, админы моего сервака тоже к тому-же выводу пришли:
скрипт backend_loader корректно работает начиная с php5.3, а в php5.2, который у меня стоит, вероятно, отличается вывод/работа функций php. В частности, основное подозрение на json_decode.
цитата
11/11/16 в 17:56
 Гарин
Mit писал:
backend_loader

Покажешь?
цитата
11/11/16 в 20:11
 Mit
Гарин писал:
Покажешь?

В личке


Эта страница в полной версии