前言
爬虫是当今互联网使用非常广泛的技术之一,现已应用于金融、房产、贸易与科技等诸多领域。无论是大数据计算、数据分析还是机器学习,都离不开爬虫。爬虫工作在很多时候是企业业务开展的基础与主线,将爬取内容进行清洗和处理,得到的就是极具价值的数据。
爬虫技术的门槛低,易于学习,因此成为初学者用来上手的学习对象。大数据和深度学习都需要大量的数据来支撑,而爬虫是目前较好的数据来源手段。随着这几年大数据和深度学习的火热,爬虫技术的发展进入了高峰期,由此给服务器带来的压力也成倍增长。
企业为了保证服务器的正常运转,或者为了降低服务器的运转压力与成本,不得不使出各种各样的技术手段来阻止爬虫工程师们毫无节制地向服务器索取资源,我们将这种行为称为反爬虫。反爬虫技术是互联网技术中为了限制爬虫而产生的技术总称。无论是在技术学习还是实际工作中,反爬虫技术都是所有爬虫工程师要面对的问题。常见的反爬虫原理和绕过技巧也是中高级爬虫工程师,尤其是在大型互联网企业的中高级爬虫工程师面试中关注的焦点。同样,作为一名开发者,了解反爬虫原理和绕过技巧有助于设计出更合理的反爬虫策略,会使你从同行中脱颖而出,大放异彩。
在平时的交流中,我发现很多朋友对于验证码识别、JavaScript混淆、WebSocket和字体反爬虫有一种莫名的恐惧感,觉得这些是很难解决的问题。实际上,只要我们了解其工作原理,就能够找到突破口。爬虫与反爬虫都是综合知识的应用,单纯了解某个反爬虫的实现方法或绕过技巧是不够的,我们应该深入了解其实现原理,这样才能够在爬虫工程师的职业道路上走得更远。
我希望通过梳理并总结以往工作中的经验,结合练习平台Steamboat,帮助更多的爬虫工程师和开发者了解并掌握反爬虫技术与反爬虫绕过的技能。
本书案例均来自于实际的项目,大部分是国内知名互联网企业在用的反爬虫手段。由于爬虫技术的更新速度非常快,为了保证大家的学习质量,本书为读者准备了一个练习平台。书中介绍到的所有反爬虫示例均收录在练习平台中。大家只需要跟着书本指引操作,就可以在个人计算机或云服务器上搭建练习平台,这部分内容会在第1章中介绍。
反爬虫和绕过技巧涉及的知识点非常多,且跨度较大,本书主要讲解其中的原理和实践应用,让大家在学习之后可以快速将所学知识应用到实际工作当中。除此之外,还会讲解一些网络传输相关的知识以及一些工具的用法等。
以剑养剑,攻守兼备才能够在技术的江湖路上任逍遥。