美文网首页
爬虫之反爬虫策略总结

爬虫之反爬虫策略总结

作者: 非问 | 来源:发表于2018-07-09 15:42 被阅读0次

前介

爬虫的意义和危害

爬虫的意义在于通过技术手段大批量的获取网站信息的一种方式,这种大批量的信息采集往往会对目标网站的服务器主机造成超出其负载的请求,从而造成网站不能针对目标用户进行服务,降低了网站用户对于网站服务的满意度。

反爬的意义

反爬虫就是为了防止爬虫在大批量的采集网站信息的过程对服务器造成超负载,将爬虫行为和用户行为进行分离,从而杜绝爬虫行为妨碍到用户的体验,从而提高用户使用网站服务的满意度。


常见反爬

通过请求头的信息过滤爬虫(Headers)

这类反爬虫策略是检查请求头内部的Headers,爬虫默认的Headers和浏览器的Headers有很大差异。有时网站也会对Referer进行检查,在浏览器内部这些都会自动添加到请求头中。爬虫解决这些反爬的策略就是将Headers修改为浏览器的User-Agent,如果有检查防盗链的话就将Referer的值修改为目标网站域名


基于用户行为的反爬

正常的用户在浏览和点击网页时会有一定的时间间隔,如果同一个IP在短时间内对同一个页面进行多次访问或者进行多次操作,那么这就超出正常用户行为了,网站会阻断该IP的请求。这种问题使用代理IP就可以解决,如果需要在短时间内访问同一个网页的话,使用代理IP在服务器端会显示多个IP访问同一页面,这样就不会被封禁IP了。
或者模仿用户行为,将多次请求中间的时间间隔变大,模仿真正的用户访问网页的行为。


动态页面的反爬虫

有的时候请求的网页中并没有数据,所有没有办法直接从请求的网页中抽取数据,因为数据是使用JavaScript动态渲染上去的,这里的JS渲染使用的是Ajax(网页局部刷新技术),在Ajax中会对数据的API发起请求,然后将返回的真实数据通过DOM技术加载到网页里,这种技术的缺点是在网速较慢的时候,数据的渲染会有比较明显的延迟。解决这类反爬也很简单,只需要找到Ajax发起请求的API的地址,对这个地址再次发起请求,就可以得到想要的数据了。
一般的Ajax的API都是符合Restful规范返回的都是Json数据,这样我们处理的时候就会十分愉悦,但是有的神经病API返回的是JS文件,在文件内部通过判断之后进行网页的数据渲染,这一类数据的提取没有别的简单的方式,只需要手工去除不是Json数据的地方就可以了。
最头痛的是如果Ajax传输的参数是加密参数的话,很难通过模拟请求获取API的数据,只能通过PhantomJS模拟用户点击执行js脚本。


登陆时的验证码问题

一般的图片验证码,可以使用OCR和PIL库进行处理,但是OCR在处理图片验证码时的问题在于,他可以很好的识别英文和数字验证码,对于中文的验证码的识别率十分的低,而且在识别数字的1,和英文的i和I(大写i)以及l(小写L)或者数字0和英文的o和O时有着很明显的缺陷,相连的r和i会被识别为n,f有时会被认作p,不过这些相似的数字和英文对于正常的人来说也有比较低的识别率,一般正常的网站都会刻意避开这些十分相似的数字和英文,所有OCR在处理图片验证码时还时十分有用的。
对于要以顺序点击的验证码来说有两种处理方案,一是手工登陆,劫持Cookie到爬虫中,让爬虫避开登陆时的验证码,另一种方案是,使用CNN(卷积神经网络)或者DNN(深度神经网络)识别出点击顺序,然后计算出点击坐标之后使用PhantomJS模拟点击,(这种方法耗费时间太久,成本太高)。

相关文章

  • 反爬虫到底是怎么一回事?

    爬虫与反爬虫永远是相生相克的:当爬虫知道了反爬策略就可以制定反-反爬策略,同样地,网站知道了爬虫的反-反爬策略就可...

  • 爬虫之反爬虫策略总结

    前介 爬虫的意义和危害 爬虫的意义在于通过技术手段大批量的获取网站信息的一种方式,这种大批量的信息采集往往会对目标...

  • 常见的反爬虫和应对方法

    通过Headers 反爬虫: 从用户请求的Headers 反爬虫是最常见的反爬虫策略。很多网站都会对Headers...

  • 抖音爬虫教程,python爬虫采集反爬策略

    抖音爬虫教程,python爬虫采集反爬策略一、爬虫与反爬简介爬虫就是我们利用某种程序代替人工批量读取、获取网站上的...

  • 反爬虫策略

    最近在做爬虫相关的作业, 发现一些网站有反爬虫策略。 反爬虫策略说白了就是要检测你是不是机器人。 那问题来了, 如...

  • css反爬解析

    一、概述 有爬虫,就一定会有反爬虫,也因此一定会有反-反爬虫,双方就是在不断变换策略,但是,只要是是使用代码...

  • (二)爬虫框架(5)——scrapy下载中间件

    在写爬虫的时候,经常会遇到一个难题,就是反爬虫。反爬虫策略一般就是检测user-agent,IP等等信息,辨别是机...

  • 反反爬虫之js加密参数获取

    反爬虫与反反爬虫从爬虫诞生开始就已经存在,反爬策略层出不穷,反反爬也都应对有招。 就我目前碰到的反爬,从简单的us...

  • 2019年 阿里巴巴Python 面试必备 !100 问

    0 遇到过得反爬虫策略以及解决方法? 1.通过headers反爬虫 2.基于用户行为的发爬虫:(同一IP短时间内访...

  • 2019 Python100道 面试 题,你会几道?

    0 遇到过得反爬虫策略以及解决方法? 1.通过headers反爬虫2.基于用户行为的发爬虫:(同一IP短时间内访问...

网友评论

      本文标题:爬虫之反爬虫策略总结

      本文链接:https://www.haomeiwen.com/subject/jrftpftx.html