2011-12-21 3 views
0

J'utilise une API Google Maps qui coûte beaucoup par demandemeilleure façon de: détecter les robots utilisateur réel + bloc

  • Mon but est de faire aussi peu de demandes que possible, donc j'utiliser une mise en cache beaucoup ici
  • l'API est appelée sur chaque pageload mais n'a pas besoin d'être appelé pour l'utilisateur non humain comme Googlebot

Alors, quelle est la meilleure façon de détecter si l'utilisateur est un bot ou humain?

  • S'il vous plaît pas de trucs de captcha ici.
  • Peut-être que nous pouvons vérifier les événements de la souris sur pageload et montrer à l'utilisateur une icône de chargement lors de la vérification (et l'idée technique comment réaliser cela)?
  • De meilleures idées?
+0

Si vous pouvez vivre avec certains utilisateurs sans javascript ne peut pas accéder à la carte, placez le code de la carte en javascript. Les robots n'exécutent pas de javascript. – Yogu

+0

Voir http://stackoverflow.com/questions/677419/how-to-detect-search-engine-bots-with-php pour l'inspiration :) – Stefan

Répondre

1

J'utiliserais Javascript pour charger l'image de carte. Les scrapers Web et les robots n'essaient généralement pas d'analyser ou d'exécuter Javascript. Cela garantit que votre appel API est uniquement effectué lorsqu'un navigateur visite la page.

Vous pouvez réaliser ceci en répartissant votre appel API sur une page séparée que vous appelez via AJAX.

1

utilisez une fonction javascript, par ex. initialize() pour configurer votre appel API Google Maps.

par exemple.

<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=set_to_true_or_false"></script> 
<script type="text/javascript"> 
    function initialize() { 
    var latlng = new google.maps.LatLng(-34.397, 150.644); 
    var myOptions = { 
     zoom: 8, 
     center: latlng, 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
    }; 
    var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions); 
    } 

</script> 
</head> 
<body onload="initialize()"> 
    <div id="map_canvas" style="width:100%; height:100%"></div> 
</body> 

(copié à partir du api v3 reference)

+0

merci, malheureusement surtout le googlebot coûte beaucoup et interroge beaucoup l'API ;) → suppose qu'il mange JS ... – Lukas

+0

si toujours besoin d'une solution et vous connaissez vos robots, par exemple google suit ces mesures ([link] (http://support.google.com/webmasters/bin/answer.py?hl=fr&answer=1061943)) consultez la balise meta en fin de page, bonnes économies sur Xmas veille;) – maxRoald

Questions connexes