爬虫与反爬虫系统的设计思路与策略

  • 常用的爬虫工具
  • 01 封IP
  • 02 封User-Agent
  • 03 封Cookie
  • 04 javascript渲染
  • 05 验证码验证
  • 06 ajax异步传输
  • 07 图片伪装
  • 08 CSS偏移
  • 09 SVG映射

常用的爬虫工具

爬虫工程师常用的渲染工具如下:

  1. Splash:异步的 JavaScript 渲染服务。
  2. Selenium:自动化测试框架。
  3. Puppeteer:一个通过 DevTools 协议控制 Chrome 的 Node js库。

01 封IP

网站运维人员在对日志进行分析时有时会发现同一时间段内某一个或某几个IP访问量特别大,由于爬虫是通过程序来自动化爬取页面信息的,因此其单位时间的请求量较大,且相邻请求时间间隔较为固定,这时就基本可以判断此类行为系爬虫所为,此时即可在服务器上对异常IP进行封锁。

02 封User-Agent

User-Agent是请求头域之一,服务器从User-Agent对应的值中是被客户端的使用信息。

User-Agent的角色就是客户端的身份标识。很多的爬虫请求头就是默认的一些很明显的爬虫头python-requests/2.18.4,诸如此类,当发现携带有这类headers的数据包,直接拒绝访问,返回403错误。

除了User-Agent之外,可利用的头域还有Host和Referer。这种验证请求头信息中特定头域的方式既可以有效地屏蔽长期无人维护的爬虫程序,也可以将一些爬虫初学者发出的网络请求拒之门外。

03 封Cookie

Cookie反爬虫指的是服务器通过校验请求头中的Cookie值来区分正常用户和爬虫程序的手段,服务器对每一个访问网页的人都会给其一个Cookie,有的扫描爬虫单纯为了爬取链接,并不会对Cookie进行处理和响应。

当某个Cookie访问超过某一个阀值时,就对其进行封禁,过一段时间再放出来。

也可以把Cookie和JavaScript结合起来实现反爬虫从而提高爬虫难度,这种手段被广泛应用在Web应用中。

04 javascript渲染

由 JavaScript 改变 HTML DOM 导致页面内容发生变化的现象称为动态渲染。

由于编程语言没有像浏览器一样内置JavaScript解释器和渲染引擎,所以动态渲染是天然的反爬虫手段。
网页开发者将重要信息放在网页中但不写入html标签中,而浏览器会自动渲染

05 验证码验证

当某一用户访问次数过多后,就自动让请求跳转到一个验证码页面,只有在输入正确的验证码之后才能继续访问网站。

06 ajax异步传输

访问网页的时候服务器将网页框架返回给客户端,在与客户端交互的过程中通过异步ajax技术传输数据包到客户端,呈现在网页上,爬虫直接抓取的话信息为空。

07 图片伪装

图片伪装指的是将带有文字的图片与正常文字混合在一起,以达到“鱼目混珠”的效果。
这种混淆方式并不会影响用户阅读,但是可以让爬虫程序无法获得“所见”的文字内容。

08 CSS偏移

这种方法是利用 CSS 样式将乱序的文字排版为人类正常阅读顺序的行为。
如果不细心观察,爬虫工程师很容易被爬取结果糊弄。这种混淆方法和图片伪装一样,并不会影响用户阅读。

例如:
HTML 文本中的文字:我的学号是 1308205,我在北京大学读书。
浏览器显示的文字:我的学号是 1380205,我在北京大学读书。
爬虫提取到的学号是 1308205,但用户在浏览器中看到的却是 1380205。

09 SVG映射

SVG 是用于描述二维矢量图形的一种图形格式。它基于 XML 描述图形,对图形进行放大或缩小操作都不会影响图形质量。

由于 SVG 中的图形代表的也是一个个文字,所以在使用时必须在后端或前端将真实的文字与对应的 SVG 图形进行映射和替换。

通过用矢量图形代替具体文字,不会影响用户正常阅读,但爬虫程序却无法像读取文字那样获得 SVG 图形中的内容。

除此之外还有Referer字段反爬、延时操作、网页iframe框架嵌套、csrf防护、限制每日下载量、DDOS防护、字体反爬虫等方式。

虽然爬虫措施有很多,但爬虫高手依旧可以绕过反爬虫机制,每一种方法都不是绝对安全的。因此对于有版权的内容和隐私数据,决不能为了“展现技术”而去肆意爬取。

Akamai给出的常见API攻击手段和防护建议:
常见Web攻击(SQL注入、CSS、命令行注入等):WAF规则
反序列化攻击:API白名单
应用逻辑攻击:参数验证
信息泄漏:HTTP请求方式白名单
逻辑DoS攻击:参数和深度限制
低速率攻击:低速率POST保护
7层DDoS攻击:速率控制

爬虫与反爬虫系统的设计思路与策略相关推荐

  1. 爬虫与反爬虫之间的战争

    编者:本文来自携程酒店研发部研发经理崔广宇在第三期[携程技术微分享]上的分享,以下为整理的内容概要.墙裂建议点击视频回放,"现场"围观段子手攻城狮大崔,如何高智商&高情商地 ...

  2. Python爬虫和反爬虫的斗争

    我们常接触的网络爬虫是百度.搜搜.谷歌(Google)等公司的搜索引擎,这 些搜索引擎通过互联网上的入口获取网页,实时存储并更新索引.搜索引擎的基础 就是网络爬虫,这些网络爬虫通过自动化的方式进行网页 ...

  3. 爬虫与反爬虫技术简介

    vivo 互联网安全团队- Xie Peng 互联网的大数据时代的来临,网络爬虫也成了互联网中一个重要行业,它是一种自动获取网页数据信息的爬虫程序,是网站搜索引擎的重要组成部分.通过爬虫,可以获取自己 ...

  4. Python爬虫入门教程 65-100 爬虫与反爬虫的修罗场,点评网站,字体反爬之三

    爬虫与反爬虫的修罗场 哪种平台最吸引爬虫爱好者,当然是社区类的,那里容易产生原生态,高质量的数据啊, 你看微博,知乎,豆瓣爬的不亦乐乎. 评论也是产生内容的好地方 生活类点评网站 旅游类点评网站 音乐 ...

  5. 谈谈你对爬虫和反爬虫的理解?

    谈谈对爬虫和反爬的理解 A.爬虫 爬虫的定义: 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本.从功能上 ...

  6. 考试/答题系统的设计思路

    基于SpringBoot实现的考试/答题系统,由于这是从一个大项目中截取的部分功能,具体的业务代码非常复杂就不列出了,这里主要介绍系统的设计思路,可作为课设或毕设的参考 数据库设计 实体类设计 tes ...

  7. 爬虫与反爬虫的攻防博弈

    遥想当年,我的第一份实习工作,还就是做的爬虫呢.不知不觉 7 年过去了,如今首例利用爬虫技术非法盗抓数据案都已经被判违法了. 我记得我第一份实习工作,就是做的爬虫,利用爬虫技术,去爬取各种论坛和网站, ...

  8. day 15爬虫与反爬虫与反反爬

    爬虫与反爬虫与反反爬 爬虫的流程: ​ 1.请求网页,获取响应结果 ​ 2.解析网页,提取数据 ​ 3.数据持久化(写入存放位置) 反爬与反反爬 1.User-Agent:将爬虫伪装成浏览器.例如:豆 ...

  9. Python爬虫从入门到放弃(二十二)之 爬虫与反爬虫大战

    爬虫与发爬虫的厮杀,一方为了拿到数据,一方为了防止爬虫拿到数据,谁是最后的赢家? 重新理解爬虫中的一些概念 爬虫:自动获取网站数据的程序 反爬虫:使用技术手段防止爬虫程序爬取数据 误伤:反爬虫技术将普 ...

最新文章

  1. 笔迹鉴别(5) —— 笔迹判别
  2. Python3 中hasattr()、getattr()、setattr()、delattr()函数及示例代码数
  3. 数据库计划中的14个才略
  4. spark mllib源码分析之DecisionTree与GBDT
  5. c# automapper 使用
  6. 程序员该如何合理安排时间呢?
  7. 化繁就简 · 万物互联,华为云All-Connect企业级云网络正式发布
  8. 95-10-050-启动-LogManager日志
  9. 实战干货:基于Redis6.0 部署迷你版本消息队列
  10. 线性支持向量机与软间隔最大化
  11. java怎么引入矢量图标库,阿里巴巴矢量图标库Iconfont的使用方法
  12. 学历学籍管理系统-MVC和工厂模式实现学籍查询与录入
  13. matlab中mov是什么意思,PLC编程中MOV是什么意思
  14. apktool java_apktool 是GOOGLE提供的APK编译工具,需要JAVA运行环境,推荐使用JDK1.6或者JDK1.7...
  15. xp设置系统时间同步服务器,xp设置时间同步服务器
  16. Android 跳转到第三方应用(应用间的跳转)
  17. python添加win32com包,将ppt转换为图片
  18. 3D Tiles规格1.0 中文版
  19. 2018 美团校招笔试题详解
  20. 伟景行Citymaker高亮图层的内元素CSharp

热门文章

  1. php算前端还是后端,php属于后端还是前端
  2. 担心客户不理你?线上礼仪ABC
  3. Kotlin的lateinit
  4. MacOS效率工具IQuickLook-多合一Quick Look快速预览与右键扩展信息工具
  5. UE4 自定义分辨率
  6. 中国大模型的落地DNA,写在这个双螺旋结构里
  7. Linux系统开发: 命令进阶学习(一)
  8. Kettle实战视频教程
  9. 设备的tar命令不支持-z选项的解决方法
  10. 企业版阿里云服务器ECS应该如何使用?