Kev*_*vin 8 google-analytics phantomjs casperjs
我试图用我的脚本隐藏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'};
Run Code Online (Sandbox Code Playgroud)
casper.viewport()和casper.page.customHeaders似乎不适用于Google Analytics ...在尝试某些网站时,它似乎没问题,但Google Analytics会看到我是一个网络刮刀:
My lang is "c"
Compatibility with JAVA : no
Screen resolution : 1024x768
Flash version : not set
Run Code Online (Sandbox Code Playgroud)
我有什么可以做的吗?
(一块)解决方案
感谢kasper pedersen,这是解决方案的一部分:
我们可以在初始化部分覆盖一些变量:
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; };
});
})
});
});
Run Code Online (Sandbox Code Playgroud)
这会破坏Windows解析和Java插件.为了伪造闪存插件,我们可以做类似的事情:
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;
})();
});
});
Run Code Online (Sandbox Code Playgroud)
当这样做并验证PhantomJS的window.navigator中的信息时,一切似乎都没问题,但谷歌分析不再跟踪我作为访问者(我没有出现在Google Analytics的实时窗口中......) .
所以我只是伪造了前两个信息,而对于语言,我在改变我的服务器语言时假装它(export LC_ALL=en_US.utf8).
语言设置有点奇怪,但屏幕分辨率可能"错误",因为您正在设置视口,而不是屏幕res.AFAIK Google Analytics使用window.screen-object.
我没有和CasperJS合作过,但是在Phantom你可以这样做:
page.onInitialized = function () {
page.evaluate(function () {
window.screen = {
width: 1600,
height: 900
}
});
};
Run Code Online (Sandbox Code Playgroud)
我认为使用Java进行检查navigator.javaEnabled()并查找Flash navigator.plugins,因此可以对Flash和Java进行类似的操作.
感谢 kasper pedersen,这是解决方案的一部分:
我们可以在初始化部分覆盖一些变量:
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; };
});
})
});
});
Run Code Online (Sandbox Code Playgroud)
这会伪造 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;
})();
});
});
Run Code Online (Sandbox Code Playgroud)
当执行此操作并验证 PhantomJS 的 window.navigator 中的信息时,一切似乎都正常,但 Google Analytics 不再将我作为访问者进行跟踪(我没有出现在 Google Analytics 的实时窗口中......) 。
所以我只是伪造前两个信息,对于语言,我通过更改服务器的语言来伪造它(export LC_ALL=en_US.utf8)。
| 归档时间: |
|
| 查看次数: |
2364 次 |
| 最近记录: |