Скрыть след 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 ответа:
Языковые настройки немного странные, но разрешение экрана, вероятно, "неправильное", потому что вы устанавливаете видовой экран, а не Разрешение экрана. 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
).