注册
登录
提问时间:2017/12/15 15:35:56    楼主:未知网友   阅读量:378
自从有了爬虫工作者这个职业后,也就有了反爬虫策略来对付他们,从此,爬虫与反爬虫之间的战争开始了。所谓知己知彼方能百战百胜,那么有哪些比较常见的反爬虫策略呢,又该怎么对付它们呢?

有一种比较普通的反爬虫策略:通过cookie限制抓取信息,比如我们模拟登陆之后,想拿到登陆之后某页面信息,千万不要以为模拟登陆之后就所有页面都可以抓了,有时候还需要请求一些中间页面拿到特定cookie,然后才可以抓到我们需要的页面。

解决方法:通过浏览器的F12查看器,观察具体整个过程都请求了哪些URL(主要包括HTML、JS、XHR),挨个试吧,试到成功为止。

另外一种比较常见的反爬虫模式当属采用JS渲染页面了。什么意思呢,就是返回的页面并不是直接请求得到,而是有一部分由JS操作DOM得到,所以那部分数据我们也拿不到咯。

解决方法:
    1)一般JS或者XHR都是请求某个链接得到数据,所以需要我们去对应JS、XHR代码里面分析具体请求了哪个链接,然后采用同样的方式,用程序模拟请求。
    2)有一些开源工具包是可以执行js的,例如HtmlUnit,可以试试哦(不过执行起来比较慢,这是缺点)

还有一种反爬虫,实在登录部分做了手脚,对用户名或者密码进行加密处理。而我们模拟登陆的时候如果用原始用户名密码的话,肯定登录失败的。
      
解决方法:
    1)一般加密都在某个JS里面,所以只能分析JS,在我们的程序里面进行加密了。
    2)用HtmlUnit等开源工具,直接执行JS,直接就可以登录啦。

最恶心最恶心的反爬虫,把页面全部转换成图片,你抓取到的内容全部隐藏在图片里。想提取内容,休想。

解决办法:唯一解决的办法:图像识别吧,但是感觉代价很大。。。

这些只是爬虫与反爬虫之间的战争缩影,反爬虫策略在不断升级,为了能顺利完成爬取工作,爬虫策略也要不断的升级。