防止别人暴力破解或者流氓爬虫

         本网站,自成上线后,遭受了各种暴力破解和非法爬虫。没办法,只能进行防护,本文章,算对网站一年来的一个总结吧。
          当网站对外进行数据接口服务时,总会有人进行扫站、暴力破解。如果不进行防范,则会对用户体验或者网站安全造成很大的影响。今天站长,总结一下防止暴力破解,或者防止别人爬取网站内容的一些建议。
    这些建议只是建站一年来的,积攒下来的经验。没有经过系统性的学习。如有错误,请见谅
         俗话说知己知彼,百战不殆。想防止别人暴力破解或者爬虫,就需要知道对方会怎么暴力破解。

    一、攻击措施

     

    1. 使用专业的爬虫工具

     

    网上有各种成熟的Java爬虫,Python爬虫框架,只要稍微了解一下,怎么配置,就会得到一个很完美的爬虫框架。Arachnid、crawlzilla、jcrawl、JSpider等。

    2. 阅读网站接口,定制爬虫

         熟悉网络编程的,会阅读作者的html代码,可以得到网站请求的post get 数据。
    通过自己手工编程,就可以批量得到网站站长的接口数据。
         比如下面就是一个非常简易的PHP爬虫,但是功能十分强大。
    function get($url ){
             $ch = curl_init();
            $header = array(
                “header:xxxxx”,
            );
            curl_setopt($ch, CURLOPT_URL, $url);
            curl_setopt($ch, CURLOPT_HEADER, 0);
            curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
            curl_setopt($ch, CURLOPT_REFERER, “http://www.baidu.com/”); //构造来路
            curl_setopt($ch, CURLOPT_USERAGENT, ‘Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36’);
            curl_setopt($ch,CURLOPT_COOKIE,’JSESSIONID=01F4964E4E2512FFE81320FED761B745;’);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //禁止调用时就输出获取到的数据
            curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
            curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
            $result = curl_exec($ch);
            // echo  $result ;
            // $result = json_decode($result, true);
        return $result;
    }

    3. 建立代理IP池

         这个属于比较高级的。有些网站可能会使用特殊的手段,进行限制单位时间内,同一用户的爬取。这样会造成获取数据成本上升。这时候 就可以上IP池,通过全国各地的IP代理,模拟真实的用户IP访问。

    4. 人工访问&&OCR识别

         验证码是分别人机的一项很大的发明。但是随着OCR文字识别的发展。程序员设计的那些文字验证码,不管加了多少背景、扭曲度、混淆。再强大的OCR面前都不堪一击

    二、防御

     

    1. IP地址防御

         a.可以限制单用户的最高线程数,比如下载只能单线程下载。这样,要是遇到全站扫描比较有效
         b. 特殊页面,限制单页ip访问次数限制 : 比如登陆界面 只能提交10次数据
         c. IP地址辨析。可以把ip地址转为long类型,存到session中。防止别人盗取cookie,从别的电脑爬取
         d:ip应用场景分析。这个有经济条件的可以使用。通过网络接口查看,分析这个来源ip是否是机器人爬虫,非法ip、代理ip等。比如埃文科技,就有这种服务
         e:屏蔽地区。对于ban了n次ip,但是对方经常拨号换ip,对网站进行暴力破解。那么只能每次访问时,查询一下离线数据库的ip所在地,将该地区的ip全部屏蔽。
     本文由Chaipip站长完成,版权所有禁止抄袭,如需转载,请发邮件s39514@163.com获得同意

    2. 接口数据加密

         post提交字段,多个字段相互有关联关系,比如username字段,那么可以加一个um_md5等加密字符串,服务器进行验证合法性。
         hide隐藏数据:提交表单的时候,内置一个hide字符串。提交的时候合并提交,服务端进行验证
         加密字符串,当服务器返回数据的时候,提前在页面加一个加密的字符串,比如base64(time()); 这样在提交的时候可以解密字符串,用发送的时间和当前时间进行对比,超过5分钟,就ban掉

    3、利用cookie

         比如该接口提交时,必须登录,带有cookie

    4、网站接口动态变化

         post提交的url 后面加一个&t=15029232 字段,或者登陆地址 动态变化

    5. 网站代码加密

         a. 去掉注释,将html的所有注释
         b. 混淆,适用于js脚本。比如定义了function opurl() 函数,我们可以将opurl 改成a() 这样就会破解者造成很大的阅读代码成本
         c. 压缩代码:跟去掉注释一样
    这种功能网上好多,只要搜索代码混淆加密即可

    6. 验证码

         不要用文字验证码。如果实在没发,那么验证码验证过一次后,必须清除Session中的验证码。防止暴力破解
         采用拖拽移位的验证码:比如本网站的极验证的验证码。因为这种验证码做的是连线题。不是单纯的单选题。所以破解难度上升的N被
         问题验证码: 比如展示图片 询问加减法, 常识问题回答
    本文由Chaipip站长完成,版权所有禁止抄袭,如需转载,请发邮件s39514@163.com获得同意

    转载请注明:chaipip博客 » 防止别人暴力破解或者流氓爬虫

    喜欢 0
分类:网络

已经有2 人抢在你前面了~