一、爬虫简介
爬虫是一个帮助我们去寻找网络上小姐姐的照片或视频并且下载到本地的技术
Emmm... 似乎有点跑题了,百度百科上是这样解释爬虫的
是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。
通俗的来讲,爬虫就是客户端发送请求(浏览器、手机等等),接收服务器的响应,获取目标数据的过程。包括不限于图片、数据、音频、视频等。然后进行持久化的一个过程(数据进行存储)
爬虫的应用在生活中息息相关,比如我们最常用的百度搜索、Google搜索;以及逢年过节用到的抢票软件;网购是用到的比价软件可以查到商品的历史价位;数据网站,比如公众号、抖音、小红书类似的数据分析网站;投票应用,通过一些途径进行刷票刷赞等
二、爬虫是否违法?
看到这是是否后背发凉,老老实实上班写个爬虫,经常加班不涨薪不说,怎么还有牢狱之灾呢?
事实上,因为爬虫被请去喝茶的例子确实不少
- 北京巧达科技涉及到简历数据业务所有员工被请去喝茶。公司办公室也被查封。
-
杨某研究AI人工智能10多年了。通过大量的模型他开发的识别验证码的技术越来越强。再配合撞库,获取了一大批各平台的账号和密码。然后将这些数据通过违法手段进行变现。有兴趣的可以网上搜一下,被称为全国首例利用人工智能犯zui的案件。
-
上海某科技公司CEO张某,联席CEO&产品负责人宋某,CTO候某,破解了北京某公司的防爬措施后,长期爬取北京数据库的数据。并再次被害单位损失技术服务费2万元。最终以非法获取计算机信息系统数据罪分别判处被告单位罚金20万元,判处被告人张某等四人有期徒刑九个月至一年不等的刑罚及3万元至5万元不等的罚金。
看了上面的案例是不是瑟瑟发抖呢?
事实上,爬虫在法律中是不被禁止的。但是如果如果利用爬虫获取数据确实是有一定的违法风险。这就好比我们生活中使用的刀,削水果切菜这都没事,但是如果用刀故意伤人这性质就不一样。
我们该如何规避爬虫的风险呢?
1、遵守Robots协议。
Robots协议又称为君子协议
,就好比过马路的时候,遇到红灯,我们都知道会停止。但是你如果非要闯红灯,谁也没法阻止你。
同样Robots协议就是标注了哪些内容你不能爬取,但是你非要爬取也没办法。所以被称为君子协议,全凭开发者的自觉性。
Robots通常是放在站点的根目录比如我需要查看淘宝的Robots协议,浏览器输入https://www.taobao.com/robots.txt
即可看到
内容如下:
User-agent: Baiduspider
Disallow: /
User-agent: baiduspider
Disallow: /
可以看到淘宝规定了,百度的爬虫禁止(Disallow)在我这里爬取任何内容。
京东的Robots.txt协议 https://www.jd.com/robots.txt
User-agent: *
Disallow: /?*
Disallow: /pop/*.html
Disallow: /pinpai/*.html?*
User-agent: EtaoSpider
Disallow: /
User-agent: HuihuiSpider
Disallow: /
User-agent: GwdangSpider
Disallow: /
User-agent: WochachaSpider
Disallow: /
可以看到京东不想让EtaoSpider
、HuihuiSpider
、GwdangSpider
、WochachaSpider
这四个爬虫来爬取网站内容。对于其他的爬虫,不希望你爬取/?*,/pop/*.html ,/pinpai/*.html?*
这三个目录的内容
2、控制爬虫的频率
如果对你的爬虫频率毫无限制爬取某个网站,瞬间大量的请求访问服务器,势必增加服务器的压力,一旦服务器瘫痪了,那这种行为就跟网络攻击一个性质了。所以,你品,你细品...
《刑法》第二百八十六条还规定,违反国家规定,对计算机信息系统功能进行删除、修改、增加、干扰,造成计算机信息系统不能正常运行,后果严重的,构成犯罪,处五年以下有期徒刑或者拘役;后果特别严重的,处五年以上有期徒刑。而违反国家规定,对计算机信息系统中存储、处理或者传输的数据和应用程序进行删除、修改、增加的操作,后果严重的,也构成犯罪,依照前款的规定处罚。
3、隐私,敏感信息不要碰
我们平时逛的技术论坛的文章,或者招聘网站的一些公司信息。这些属于公开的内容,是可以放心的爬取。但是如果你通过某些途径,爬取到别人的隐私、敏感信息。这个是属于违法行为,更别提拿这些数据进行获利了。
《网络安全法》第四十四条 任何个人和组织不得窃取或者以其他非法方式获取个人信息。因此,如果爬虫在未经用户同意的情况下大量抓取用户的个人信息,则有可能构成非法收集个人信息的违法行为。
4、违背所有人意愿
知识付费的概念已经出来很久了,如果通过付费账号爬取付费的内容,导致内容提供方丧失了内容的控制权,从而让自己的利益收到了损失。
三、爬虫的矛与盾
爬虫的存在,所以很多网站会有一定的反爬措施。
就好比为了防止外人闯入自己家中每家每户都装了门锁,有的锁可能是PDD几块钱同款的锁,有的锁可能会几十块钱的,而有的则是装了防盗门。
常见的反爬措施有哪些?
- 请求头(Headers)/User-Agent限制 --- PDD同款
这是最基础的反爬措施,比如浏览器中会从你的请求头中获取Rederer(上级链接),判断这次请求是浏览器请求还是机器请求。
User-Agent是用户访问网站时的浏览器标识。
以上两种方式,我们都可以通过包装请求头或者User-Agent对象进行破解
- IP限制、访问频率限制
通过判断某个IP或者访问的频率去判断是否是正常行为,可以通过构建代理池去进行爬取,或者每次请求之后都间隔一定的时间来进行爬取
- 登录或者验证码限制
有些数据必须是登录用户才可以进行爬取,或者在爬取的过程中会是不是的弹出一个验证码校验。魔高一尺道高一丈,可以通过模拟登录或者接入第三方打码平台进行验证码识别
- Ajax动态加载
有些网站为了避免爬虫,会加载完网页的源代码之后会在浏览器中执行JS程序,然后通过JS代码获取要展现的内容进行异步渲染。
对于这种反爬策略,最简单粗暴的方法就是使用Selenium。
-
JS加密
在进行请求时,携带了通过js算法生成的加密参数。我没记错的话,网易云音乐就是使用的这种反爬策略。遇到这种情况可以进行js代码调试,然后分析它的逻辑实现,然后让自己的爬虫按照同样的逻辑生成加密参数即可。
-
互相伤害型
有些网站不得不佩服,它检测到你是一个爬虫程序,不仅不禁止你的访问,还要装作不知道的样子,然后给你返回错误的数据。仿佛在对爬虫说