2013-10-27 3 views
8

Ich versuche, die Verwendung von CasperJS mit einem meiner Skripte zu verbergen. Derzeit versuche ich, die Auflösung zu ändern, den User-Agent und die Sprache mit, dass:Verstecken Sie die Grundfläche von CasperJS mit Google Analytics

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'}; 

Die casper.viewport() und casper.page.customHeaders scheint nicht mit Google Analytics zu arbeiten ... wenn auf einigen Websites versuchen, es scheint in Ordnung zu sein, aber Google Analytics zu sehen bekommt, ich bin ein Web Scraper:

My lang is "c" 
Compatibility with JAVA : no 
Screen resolution : 1024x768 
Flash version : not set 

gibt es etwas, das ich diese zu fälschen tun kann?

(Stück) Lösung

Dank Kasper Pedersen, hier ist ein Teil der Lösung:

Wir einige Variablen während der initialize Teil außer Kraft setzen können:

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; }; 
      }); 
     }) 
    }); 
}); 

Dies täuscht die Windows-Auflösung und das Plugin für Java vor. Zu fälschen die Flash-Plug-ins, könnten wir so etwas tun:

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; 
    })(); 
}); 
}); 

Wenn dies zu tun und die Überprüfung der Informationen in der window.navigator von PhantomJS scheint alles in Ordnung, aber Google Analytics mich nicht als Besucher verfolgen mehr (ich bin nicht im Echtzeitfenster von Google Analytics ...).

Also fake ich nur die ersten zwei Informationen, und für die Sprache, ich fälsche es in der Sprache meines Servers().

+0

Ich bin noch nie auf dieses Problem gestoßen, woher wissen Sie, dass sie Sie als Schaber betrachten? –

+0

Ich scrape eine Webseite, die nur ich kenne und sehe das Ergebnis in Google Analytics. – Kevin

+0

Warum hast du diesen Teil der Lösung nicht als Antwort gepostet? –

Antwort

3

Dank Kasper Pedersen, hier ist ein Teil der Lösung:

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; }; 
      }); 
     }) 
    }); 
}); 

Dies täuscht die Windows-Auflösung und das Plugin für Java:

Wir einige Variablen während des initialize Teils mit außer Kraft setzen können. Zu fälschen die Flash-Plug-ins, könnten wir so etwas tun:

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; 
    })(); 
}); 
}); 

Wenn dies zu tun und die Überprüfung der Informationen in der window.navigator von PhantomJS scheint alles in Ordnung, aber Google Analytics mich nicht als Besucher verfolgen mehr (ich bin nicht im Echtzeitfenster von Google Analytics ...).

Also fake ich nur die ersten zwei Informationen, und für die Sprache, ich fälsche es in der Sprache meines Servers().

7

Die Spracheinstellungen sind ein wenig seltsam, aber die Bildschirmauflösung ist wahrscheinlich "falsch", weil Sie das Ansichtsfenster einstellen, nicht den Bildschirm res. AFAIK Google Analytics verwendet das window.screen-Objekt.

Ich habe nicht mit CasperJS gearbeitet, aber in Phantom können Sie dies tun:

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

denke ich Java aktiviert ist mit navigator.javaEnabled() und Flash-in navigator.plugins nachgeschlagen wird, so etwas Ähnliches könnte für Flash getan werden und Java.

+0

Perfekt, genau die Antwort wurde ich erwartet. Ich habe mein Skript geändert, aber noch nicht in Google Analytics überprüft, aber alles scheint in Ordnung zu sein. – Kevin

+0

Nach einer Menge von Test funktioniert Ihre Funktion, um die window.screen zu ändern, aber nicht die Navigator.plugins und navigator.language zu ändern: Diese Funktionen sind schreibgeschützt, und '__defineGetter__' hat nicht funktioniert. Außerdem habe ich versucht, mein Gebietsschema auf meinem Rechner (LC_ALL) zu ändern, aber ich habe immer das Gebietsschema "C". – Kevin

+0

Ich denke Phantom erlaubt es Ihnen, das gesamte 'window.navigator' Objekt zu überschreiben, wenn Sie es während' onInitialized' machen. Aber Sie müssen das gesamte "Navigator" -Objekt ersetzen, nicht nur bestimmte Eigenschaften. Checkout Phantoms Beispiel für das Erkennen von Browser-Sniffing: https://github.com/ariya/phantomjs/blob/master/examples/detectsniff.js –

Verwandte Themen