爬虫、反爬虫、反反爬虫

最近爬取了百万数据,如下是学习爬虫时汇总的相关知识点php

什么是爬虫和反爬虫

  • 爬虫 —— 使用任何技术手段批量获取网站信息的一种方式,关键在批量。
  • 反爬虫 —— 使用任何技术手段,阻止别人批量获取本身网站信息的一种方式。关键也在于批量。
  • 误伤 —— 在反爬虫的过程当中,错误的将普通用户识别为爬虫。误伤率高的反爬虫策略,效果再好也不能用。
  • 拦截 —— 成功地阻止爬虫访问。一般来讲,拦截率越高的策略,误伤率就越高,所以要作权衡。
  • 资源 —— 机器成本与人力成本的总和。

反什么样的爬虫

  • 应届毕业生(三月份爬虫)
    三月份爬虫一般和毕业生(本科生、硕士、博士等)有关,他们的爬虫简单粗暴,为了让论文有数据支撑,根本无论服务器压力,加上人数不可预测,很容易弄挂站点。html

  • 创业小公司
    每一年新增的创业公司不少,程序开发完后,缺乏数据支撑,出于公司生死存亡的考虑,不断爬取数据。前端

  • 不当心写错了没人去中止的失控小爬虫
    像知乎,携程,财经等网站,可能高达60%的访问量是爬虫。你就算直接封杀,也无济于事。他们可能根本爬不到任何数据了,除了http code是200之外,一切都是不对的,但因为托管后无人认领,仍然会依然孜孜不倦地爬取。java

  • 成型的商业对手
    这是最大的对手,有技术,有钱,要什么有什么,若是和你死磕,你就只能硬着头皮和他死磕。python

  • 抽风的搜索引擎
    搜索引擎也有抽风的时候,并且一抽风就会致使服务器性能降低,请求量跟网络攻击没有区别。git


常见的爬虫、反爬虫手段


[1] 爬取的前提是知道网站/APP的存在,若是系统不对外开放,你可能连它的存在都不知道。程序员

[2] APP的请求能够用Fiddler抓取,具体操做见文尾的相关连接。一些APP的爬取相对Web难度较高,文本可能进行了压缩和加密,甚至为了节省用户流量,部分请求不走后端,Fiddler天然抓取不到。github

[3] 拦截率越高的策略,误伤率就越高,甚至影响搜索引擎的收录。若是网站包含不但愿被搜索引擎收录的内容,能够在站点部署 robots 文件。web

[4] 知乎就不太可能为了反扒强制要求输入验证码,而CSDN的文件一旦下载次数过多,就会强制输入验证码。segmentfault

[5] 关于验证码的识别与反识别也是一部恢弘壮丽的斗争史,目前的人机识别验证就是比较有效的反爬手段。数字验证码识别详见: 爬虫的坎坷之路-数字验证码识别

[6] 关于人类访问特征的介绍,详见: 当爬虫不遵照 robots 协议时,有没有防止抓取的可能?

[7] 反爬虫的关键在于阻止被批量爬取,重点在批量。反爬虫技术的核心在于不断变动规则,好比不断变动验证码。
咱们在内容上能够作以下文章:

  • 网站不一样地方的文本内容添加不一样的自带标签,增长对方数据清理难度。
  • 关键数据由文本转图片,甚至添加水印等。目前市场上图片ocr识别没法有效转文字,让对方即便获取了图片也没法有效使用。
  • 网站相关页面的列表查询,限制总页数的展现。好比数据一共1K页,相关接口却只对外展现前十页。对方找不到入口最多爬取10页数据。
  • 间接关闭网站核心数据查看入口,好比内容的查看像百度文库同样改成word、pdf或者ppt下载模式,高频下载须要验证码或者帐号积分。
  • 网站不提供注册入口,或者注册须要内部推荐或者评审,加大爬虫方获取帐号的难度。
  • 网站的请求url复杂化,好比弄的像淘宝同样没有规律,id改成UUID等。
  • 前端页面尽量不暴露数据的惟一键,对惟一键如主键id等进行假装,能够增长对方爬取后的去重成本。由于对方爬数据多是在你的多个模块页面进行多维度爬取,会有大量的重复数据。
  • 前端html页面别一次性加载列表,根据用户点击js动态加载。即查询页面源码时,只能看到列表的第一条数据。
  • 当肯定访问异常时,大量返回虚假数据。爬虫几乎没有判断数据真假的能力,只有人才有。对方发现的越晚,咱们的处理应对时间就越充裕。
  • 核心数据提升安全等级,单独加密等。
    ....

疑问相关

一、爬虫是否涉嫌违法? 若是是的话,怎么要求赔偿?
爬取的内容商业使用目前更倾向属于违法行为,可是在国内仍是个擦边球,难以起诉成功。若是不想被批量爬取,技术才是最后保障。

二、在爬虫与反爬虫的对弈中,谁会胜利?
爬虫与反爬虫的重点都在于批量,没有绝对的胜利方。可是能够肯定的是,只要人类可以正常访问的网页,爬虫在具有同等资源的状况下必定是能够抓取到,只是可否短期内大批量爬取的问题。

三、怎么快速爬取数据?
首先考虑的是用网上各类破解版爬虫软件爬取数据,好比火车头采集器。即能用软件解决的爬取步骤,就不必写代码实现,由于程序员比软件和服务器等资源金贵。其次考虑的才应该是如何用代码解决软件实现不了的步骤。

四、为何须要反爬虫?

  • 公司的重要资源被批量爬取,丧失竞争力。
  • 爬虫占总PV比例过高,由于高访问量浪费了太多钱。
  • 爬虫拖垮了站点,严重影响了用户体验。
  • 资源被爬取难以起诉成功,对方能够肆意爬取。

连接相关

相关文章
相关标签/搜索