IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    cc和抓取的防御方法

    花生发表于 2014-09-28 10:15:42
    love 0

    最近个人站被一SB给爬了,之前没发现,都爬了几个月了。之所以是SB就是拿着个火车头就认为自己爬遍网络无阻拦了。记录一下最近对防抓的研究和理解

    防抓可以分为主动和被动,主动被动是对于网站来说的。下面的策略都得先过滤掉蜘蛛

    被动防御
      1.统计单位时间内单个IP的访问次数
      2.统计单位时间内单个UA的访问次数(针对火车头)
    
    主动防御
      1.302跳转
      2.js跳转
      3.cookie验证

    前两个没啥好说的,很简单的,着重说一下后面三个的实现方式

    302跳转
    302跳转主要是对访问的ip随机的进行一次302跳转,而跳转的时候在原始url后面加上几个参数,一般抓取程序或者cc攻击不会去识别header,设定一个阀值,当一个IP多次不跳转的时候就可以干掉他了。而如果成功进行了跳转的话,一般就可以认为是正常的用户,那么我们可以设置一个cookie值以及时效,当然cookie的值是经过ip和一些特殊参数计算出来的,不能让别人给破解了,然后在这个时效内不会再对用户进行探测

    js跳转
    其实js跳转也跟上面类似,不过跳转的方式是通过js来进行的。当一个请求来的时候可以吐出一个简单的js跳转,然后再原始的url后面加上一些参数,接下来的一些验证什么的就跟上面302跳转一样了

    cookie验证
    cookie验证是当用户第一次访问的时候就给他种下cookie,并记录访问次数,如果第二次来访问没cookie的话可以再次尝试种cookie,当cookie回传失败次数大于某个阀值就可以干掉这个IP了。

    其实这些都有现成的实现了,用的nginx+lua来实现的,项目地址是:HttpGuard 我给他加上了文件黑名单功能以及对UA的封锁



沪ICP备19023445号-2号
友情链接