最好的方法:检测真实用户+块机器人

时间:2011-12-21 22:45:42

标签: javascript api bots

我使用的是Maps API,每次请求的费用非常高

  • 我的目标是尽可能少地提出请求,所以我在这里使用了很多缓存
  • 在每个页面加载上调用API,但不需要像googlebot那样为非人类用户调用

那么,检测用户是机器人还是人类的最佳方法是什么?

  • 请不要在这里使用验证码。
  • 也许我们可以在页面加载时检查鼠标事件并在检查时向用户显示加载图标(以及技术想法如何实现这一点)?
  • 更好的想法?

2 个答案:

答案 0 :(得分:1)

我会使用Javascript加载地图图片。 Web刮刀和机器人通常不会尝试解析或执行Javascript。这可确保您的API调用仅在浏览器访问该页面时进行。

您可以通过将API调用分解为通过AJAX调用的单独页面来实现此目的。

答案 1 :(得分:1)

使用javascript函数,例如initialize()设置您的Google Maps API调用。

e.g。

<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>

(从api v3 reference复制)