Скрыть след CasperJS с помощью Google Analytics


Я пытаюсь скрыть использование CasperJS с помощью одного моего скрипта. В настоящее время я пытаюсь изменить разрешение, пользовательский агент и язык с помощью этого:

casper.userAgent("My UA");
casper.viewport(1600, 900);
casper.page.customHeaders = {'Accept-Language': 'fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3'};

Каспер.viewport () и Каспер.страница.customHeaders, похоже, не работает с Google Analytics... При попытке на некоторых сайтах, кажется, все в порядке, но Google Analytics получает видеть, что я веб-скребок:

My lang is "c"
Compatibility with JAVA : no
Screen resolution : 1024x768
Flash version : not set
Есть ли что-нибудь, что я могу сделать, чтобы подделать это ?

(кусок) Решение

Благодаря Касперу Педерсену, вот часть решения:

Мы можем переопределить некоторую переменную во время инициализации с помощью:

casper.on('page.initialized', function (page) {
    page.evaluate(function () { 
        (function() {
            window.screen = {
                width: 1600,
                height: 900
            };
            window.navigator.__defineGetter__('javaEnabled', function () {
                return function() { return true; };
            });
        })
    });
});

Это подделка разрешения windows и плагина для Java. Чтобы подделать Плагины flash, мы могли бы сделать что-то вроде этого:

casper.on('page.initialized', function (page) {
page.evaluate(function () { 
    (function() {
        window.screen = {
            width: 1600,
            height: 900
        };
        var fake_navigator = {};
        for (var i in navigator) {
          fake_navigator[i] =  navigator[i];
        }
        fake_navigator.javaEnabled = function() { return true; };
        fake_navigator.language = 'en-US';
        fake_navigator.plugins = {
            length: 1,
            'Shockwave Flash': {
                description: 'Shockwave Flash 11.9 r900',
                name: 'Shockwave Flash',
                version: '11.9.900.117'
            }
        };
        window.navigator = fake_navigator;
    })();
});
});

При выполнении этого и проверке информации в окне.навигатор PhantomJS, кажется, все в порядке, но Google Analytics больше не отслеживает меня как посетителя (я не появляюсь в окно реального времени Google Analytics...).

Поэтому я просто подделываю первые две информации, а для языка я подделываю их, изменяя язык моего сервера (export LC_ALL=en_US.utf8).

2 8

2 ответа:

Языковые настройки немного странные, но разрешение экрана, вероятно, "неправильное", потому что вы устанавливаете видовой экран, а не Разрешение экрана. AFAIK Google Analytics использует window.screen-объект.

Я не работал с CasperJS, но в Phantom вы можете сделать это:

page.onInitialized = function () {
    page.evaluate(function () {
    window.screen = {
            width: 1600,
            height: 900
        }
    });
};

Я думаю, что Java проверяется с помощью navigator.javaEnabled(), а Flash ищется в navigator.plugins, поэтому что-то подобное можно было бы сделать для Flash и Java.

Благодаря Касперу Педерсену, вот часть решения:

Мы можем переопределить некоторую переменную во время инициализации части с помощью:

casper.on('page.initialized', function (page) {
    page.evaluate(function () { 
        (function() {
            window.screen = {
                width: 1600,
                height: 900
            };
            window.navigator.__defineGetter__('javaEnabled', function () {
                return function() { return true; };
            });
        })
    });
});

Это подделка разрешения windows и плагина для Java. Чтобы подделать Плагины flash, мы могли бы сделать что-то вроде этого:

casper.on('page.initialized', function (page) {
page.evaluate(function () { 
    (function() {
        window.screen = {
            width: 1600,
            height: 900
        };
        var fake_navigator = {};
        for (var i in navigator) {
          fake_navigator[i] =  navigator[i];
        }
        fake_navigator.javaEnabled = function() { return true; };
        fake_navigator.language = 'en-US';
        fake_navigator.plugins = {
            length: 1,
            'Shockwave Flash': {
                description: 'Shockwave Flash 11.9 r900',
                name: 'Shockwave Flash',
                version: '11.9.900.117'
            }
        };
        window.navigator = fake_navigator;
    })();
});
});

При выполнении этого и проверке информации в окне.навигатор PhantomJS, кажется, все в порядке, но Google Analytics больше не отслеживает меня как посетителя (я не появляюсь в окне реального времени из Google Analytics...).

Поэтому я просто подделываю первые две информации, а для языка я подделываю их, изменяя язык моего сервера (export LC_ALL=en_US.utf8).