用过google 的用户就知道,如果你写一个c++ 不断的刷google 的页面。大概30秒以后,google 就会给你一个检测识别码的页面这个功能其实很重要。因为可以防止服务器被爬行 或者抓取。 如何实现这个功能大家又思路马?功能的关键是 在30 -40 秒以内,对某个ip 的访问次数进行统计。如何实现这个呢? 如果是存放在db里面,自然美问题,但是性能太差,每次页面被请求都要有一次db 操作。
session , 和 cookie 又有不适用的地方, 比如 index.php 获取session, 在下一个页面检测session,  对方只要获取一个session  然后使用1次,就放弃。重新获取session 和cookie 就能完成了,再次刷新的机会。 所以这个功能也不太妥当阿。有其他的建议马?

解决方案 »

  1.   

    看你的web服务器是什么了,里面应该有个选项,应该不是程序来做的
      

  2.   

    只听说有web server配置robots.txt的方案,这样的需求和session/cookie好像没什么关系。
      

  3.   

    比如 你的网站上有10000 部电影。你愿意被人 瞬间download 下所有的资源马?立刻克隆出来?再比如google 的网站。 我用简单的flashget 每天24 小时抓取他的搜索结果。google 会愿意吗?开放网站和自我保护是2个概念. kaixin 很火.如果我用爬虫把所有人的图片 介绍抓取下来 开心又会如何考虑?
      

  4.   

    把访问ip保存在内容里一段时间, 当然是用c/c++写的应用
      

  5.   

    麻烦的就是这个交互,涉及到一次进程间通信。  需要由php => c++ 服务器的交互
    用什么做socket? 性能损失很大啊 所以我想用php 本身的一些能力来做。
      

  6.   


    不是有个memcache的吗? 可以让服务器短暂缓存一下ip,
      

  7.   

    恩,可以用memcache来做,不过防爬虫代价挺大的!
      

  8.   

    简单的说 你要防止到什么程度memache 也是一次socket 操作。代价一样很大。如果是php 页面。 用session + memache 方案解决。
    html  其他类似的资源 比如jpg, bmp rar zip 这种资源如何保护。又是另一个问题了。
      

  9.   

    这个问题应该在web服务器处理http请求时就要考虑,比如apache可以开发扩展模块。
      

  10.   

    用memcachekey用IP
    value是该最近几次的访问信息
      

  11.   

    这个可以考虑, 用apache扩展, 直接apache实现了不经过php可能会更省事。