帮助中心

   

热门搜索: 免费续期  推广  永久会员

反爬虫措施如何保护网站内容?

原创内容的生成是非常不容易的,不仅耗费了大量的时间、精力,在这内容为王的时代,好的原创内容是能够吸引用户、留住用户。但是现在代理IP的使用,让爬虫工作变得容易了,网站如果没有做相应的反爬措施来保护网站的原创内容,那么只能够白白看着自己的宝贵内容被恶意抓取。

 

网站设置反爬虫设施,来抵制恶意爬虫,可以通过什么方法?

 

1、机器人协议

 

除此之外,在爬虫抓取技术领域还有一个“白道”的手段,叫做robots协议。你可以在一个网站的根目录下访问/robots.txt,比如让我们一起来看看github的机器人协议,Allow和Disallow声明了对各个UA爬虫的抓取授权。

 

不过,这只是一个君子协议,虽具有法律效益,但只能够限制那些商业搜索引擎的蜘蛛程序,你无法对那些“野爬爱好者”加以限制。

 

2、基于客户端js运行时的检测

 

从前有基于webkit内核的PhantomJS,基于Firefox浏览器内核的SlimerJS,甚至基于IE内核的trifleJS,有兴趣可以看看这里和这里 是两个headless browser的收集列表。

 

这些headless browser程序实现的原理其实是把开源的一些浏览器内核C++代码加以改造和封装,实现一个简易的无GUI界面渲染的browser程序。但这些项目普遍存在的问题是,由于他们的代码基于fork官方webkit等内核的某一个版本的主干代码,因此无法跟进一些最新的css属性和js语法,并且存在一些兼容性的问题,不如真正的release版GUI浏览器。

 

这其中最为成熟、使用率最高的应该当属 PhantonJS 了。PhantomJS存在诸多问题,因为是单进程模型,没有必要的沙箱保护,浏览器内核的安全性较差。

 

如今Google Chrome团队在chrome 59 release版本中开放了headless mode api,并开源了一个基于Node.js调用的headless chromium dirver库,我也为这个库贡献了一个centos环境的部署依赖安装列表。

 

headless chrome可谓是headless browser中独树一帜的大杀器,由于其自身就是一个chrome浏览器,因此支持各种新的css渲染特性和js运行时语法。

 

基于这样的手段,爬虫作为进攻的一方可以绕过几乎所有服务端校验逻辑,但是这些爬虫在客户端的js运行时中依然存在着一些破绽,诸如:

 

基于plugin对象的检查

 

2211.png
  基于language的检查

 

2222.png
  基于webgl的检查

 

2233.png
  基于浏览器hairline特性的检查

 

2244.png
  基于错误img src属性生成的img对象的检查

 

2255.png
  基于以上的一些浏览器特性的判断,基本可以通杀市面上大多数headless browser 程序。在这一点上,实际上是将网页抓取的门槛提高,要求编写爬虫程序的开发者不得不修改浏览器内核的C++代码,重新编译一个浏览器,并且,以上几点特征是对浏览器内核的改动其实并不小。

 

上面介绍了2种比较常用的反爬策略,多数网站都会应用,虽然现在又有不少反反爬策略但是,但是作为网站运营,该做的保护还是不能漏。

关闭
19907977089
关注微信公众号,免费送30分钟时长