1、通过User-Agent来控制访问

      User-Agent是指用户代理,使服务器能够识别客户使用的操作系统及版本、CPU 类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等。

       无论是浏览器还是爬虫程序,在向服务器发起网络请求的时候,都会发过去一个头文件:headers。

       这里面的大多数的字段都是浏览器向服务器”表明身份“用的。

        对于爬虫程序来说,最需要注意的字段就是:User-Agent

        很多网站都会建立 user-agent白名单,只有属于正常范围的user-agent才能够正常访问。

        缺点:容易伪造头部。  

 

        对于爬虫程序而言:

        如果不设置User-Agent,服务器端只会收到一个单纯的对于该页面访问的请求,但是服务器并不知道发送这个请求使用的浏览器,操作系统,硬件平台等信息,而缺失这些信息的请求往往都是非正常的访问,例如爬虫。

        所以需要伪造User-Agent进行请求【可以手动设置一个User-Agent,但是更好的是提供多个User-Agent】

 

2、IP限制

        如果一个固定的ip在短暂的时间内,快速大量的访问一个网站,后台管理员可以编写IP限制,不让该IP继续访问。

        缺点:可以使用免费/付费代理,绕过检测。

   

       对于爬虫程序而言:使用代理(池)

IP是上网需要唯一的身份地址,身份凭证,而代理IP就是我们上网过程中的一个中间平台,是由你的电脑先访问代理IP,之后再由代理IP访问你点开的页面,所以在这个页面的访问记录里留下的是就是代理IP的地址,而不是你的电脑本机IP。

       

3、Session访问限制

  后台统计登录用户的操作,比如短时间的点击事件,请求数据事件,与正常值比对,用于区分用户是否处理异常状态,如果是,则限制登录用户操作权限。

    缺点:需要增加数据埋点功能【统计用户行为】

 

    对于爬虫而言:注册多个账号、模拟正常操作。

 

4、验证码验证

         短信验证码、图片验证码等反爬虫

        

       对于爬虫而言:

         1、图片验证码: OCR技术

         2、短信验证码:用Webbrowser技术,模拟用户打开短信的行为,最终获取短信验证码。

 

5、使用robot.txt

robots.txt(统一小写)是一种存放于网站根目录下的ASCII编码的文本文件,它通常告诉网络搜索引擎的漫游器(又称网络蜘蛛),此网站中的哪些内容是不应被搜索引擎的漫游器获取的,哪些是可以被漫游器获取的。因为一些系统中的URL是大小写敏感的,所以robots.txt的文件名应统一为小写。robots.txt应放置于网站的根目录下。如果想单独定义搜索引擎的漫游器访问子目录时的行为,那么可以将自定的设置合并到根目录下的robots.txt,或者使用robots元数据(Metadata,又称元数据)。
robots.txt协议并不是一个规范,而只是约定俗成的,所以并不能保证网站的隐私。注意robots.txt是用字符串比较来确定是否获取URL,所以目录末尾有与没有斜杠“/”表示的是不同的URL。robots.txt允许使用类似"Disallow: *.gif"这样的通配符。


6、动态数据加载

     使用JS加载数据方式,能提高爬虫门槛。

      对于爬虫而言: 进行网页分析(抓包)

 

7、数据加密

   使用JS生产加密指令

    对于爬虫:分析对应的JS函数进行破解