2013-10-27 4 views
8

私は自分のスクリプトで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'}; 

casper.viewportを()とcasper.page.customHeadersは、Googleアナリティクスで動作していないよう...:現在、私はそれで、解像度、ユーザーエージェントや言語を変更しようとしていますいくつかのウェブサイトにしようとすると、大丈夫のようですが、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用のプラグインをフェイクします。偽のフラッシュプラグインのために、我々はそのような何かを行うことができます:

これを行うとPhantomJSのwindow.navigatorで情報を確認すること
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; 
    })(); 
}); 
}); 

、すべてが大丈夫そうですが、Google Analyticsでは、訪問者として私を追跡することはありませんそれ以上(私はGoogleアナリティクスのリアルタイムウィンドウに表示されません...)。

私はちょうど最初の2つの情報を偽造し、言語のために、私は私のサーバー(export LC_ALL=en_US.utf8)の言語を変更することでそれを偽造します。

+0

私はこの問題に遭遇したことがありません。彼らはあなたをスクレーパーとみなしていることをどのように知っていますか? –

+0

Googleアナリティクスで私にしかわかっていない結果が表示されているウェブページを擦ってしまいます。 – Kevin

+0

このソリューションを回答として投稿しなかったのはなぜですか? –

答えて

3

おかげで、ここでのソリューションの一部です:

我々が初期部分の間にいくつかの変数を上書きすることができます。これは、Windowsの解像度と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; }; 
      }); 
     }) 
    }); 
}); 

。偽のフラッシュプラグインのために、我々はそのような何かを行うことができます:

これを行うとPhantomJSのwindow.navigatorで情報を確認すること
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; 
    })(); 
}); 
}); 

、すべてが大丈夫そうですが、Google Analyticsでは、訪問者として私を追跡することはありませんそれ以上(私はGoogleアナリティクスのリアルタイムウィンドウに表示されません...)。

私はちょうど最初の2つの情報を偽造し、言語のために、私は私のサーバー(export LC_ALL=en_US.utf8)の言語を変更することでそれを偽造します。

7

言語設定は少しばかりですが、画面解像度ではなくビューポートを設定しているため、画面解像度が「間違っている」可能性があります。 AFAIK Googleアナリティクスはwindow.screenオブジェクトを使用します。

私はCasperJSで働いていないが、ファントムに、あなたはこれを行うことができます:

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

私は、Javaがnavigator.javaEnabled()を使用してチェックされ、フラッシュがnavigator.pluginsで検索されているので、似たようなフラッシュのために行うことができると思いますとJava。カスパーのペダーセンへ

+0

パーフェクト、ちょうど答え私はexpactedされました。私はスクリプトを修正しましたが、Googleアナリティクスではまだチェックしていませんが、すべて問題はないようです。 – Kevin

+0

多くのテストの後、window.screenを変更する機能は動作しますが、navigator.pluginsとnavigator.languageを変更する機能はありません。これらの関数は読み取り専用であり、 '__defineGetter__'は機能しませんでした。さらに、私は私のマシン(LC_ALL)で私のロケールを変更しようとしましたが、私は常に "C"ロケールを持っています。 – Kevin

+0

'onInitialized'の間にPhantomを使うと、' window.navigator'オブジェクト全体をオーバーライドすることができます。しかし、特定のプロパティだけでなく、 'navigator'オブジェクト全体を置き換える必要があります。ブラウザのスニッフィングを検出するPhantomの例をチェックアウトしてください。https://github.com/ariya/phantomjs/blob/master/examples/detectsniff.js –