• 如何防止网站被爬虫爬取的几种办法


    相较于爬虫技术,反爬虫实际上更复杂。目前许多互联网企业都会花大力气进行“反爬虫”,网络爬虫不但会占据过多的网站流量,导致有真正需求的用户没法进入网站,另外也有可能会导致网站关键数据的外泄等现象。网络爬虫遍布互联网的各个角落,因此网络爬虫有好处也有坏处,接下来介绍一下和网络爬虫一同诞生的反爬虫技术,如何才能防止别人爬取自己的网站?
    1、基于程序本身去防止爬取:作为爬虫程序,爬取行为是对页面的源文件爬取,如爬取静态页面的html代码,可以用jquery去模仿写html,这种方法伪装的页面就很难被爬取了,不过这种方法对程序员的要求很高。
    2、基于iptables和shell脚本:可以对nginx的access.log进行策略定义,例如定义在1分钟内并发连接数超过30个ip为非法,如ip不在白名单内,则加入iptables策略封掉,当然这种的缺点是会有“误伤”,策略细粒度越小就会有更多的“误伤”,细粒度大就会使效果变差,另外还有类似的第三方工具fail2ban,利用做filter和actor对一些有危害的操作记录或是封ip。但是对于某个特定的爬虫地址(例如网易、有道)的爬取行为拒绝也很难准确做到,因为你无法准确知道这些特定的爬虫ip地址。注意:建议不要用封ip条目的方式,iptables列表长度是65535时就会封满,服务器也就会死机。
    3.使用robots.txt文件:例如阻止所有的爬虫爬取,但是这种效果不是很明显。
    User-agent: *
    Disallow: /
    4.使用nginx的自带功能:通过对httpuseragent阻塞来实现,包括GET/POST方式的请求,以nginx为例,具体步骤如下:
    编辑nginx.conf
    拒绝以wget方式的httpuseragent,增加如下内容

    Block http user agent - wget

    if ($http_user_agent ~* (Wget) ) {
    return 403;
    }

    Block Software download user agents

    if ($http_user_agent ~* LWP::Simple|BBBike|wget) {
    return 403;
    平滑启动

    /usr/local/nginx/sbin/nginx -s reload

    如何拒绝多种httpuseragent,内容如下:
    if ($http_user_agent ~ (agent1|agent2|Foo|Wget|Catall Spider|AcoiRobot) ) {
    return 403;
    }
    大小写敏感匹配

    大小写敏感http user agent拒绝###

    if ($http_user_agent ~ (Catall Spider|AcoiRobot) ) {
    return 403;
    }

    大小写不敏感http user agent拒绝###

    if ($http_user_agent ~* (foo|bar) ) {
    return 403;
    }
    注意语法:*表示是大小写不敏感,表示是大小写敏感
    }

  • 相关阅读:
    南美哥伦比亚市场最全分析开发攻略,收藏一篇就够了
    用户管理系统(1)
    Nginx学习记录一揽子:学会配置Nginx
    MySQL中:cmd下输入命令mysql -uroot -p 连接数据库错误
    docker day01
    vivado Versal 串行 I/O 硬件调试流程、使用 Vivado Serial I/O Analyzer 来调试设计
    小样本利器1.半监督一致性正则 Temporal Ensemble & Mean Teacher代码实现
    docker安装mysql8和mysql5.7
    java中截取字符串最后一位
    畅购商城-第7章商品搜索
  • 原文地址:https://blog.csdn.net/D0126_/article/details/128109536