韦世东:计划 35 岁「退休」的资深爬虫工程师

文 | 孙燕

前言:我想 35 岁退休

从开始学习爬虫到真正赚到钱,韦世东只用了一个月时间。如今作为一名资深爬虫工程师,他已经有了七年的互联网工作经验。

除了日常的工作外,随着技术水平不断提高,他越来越多地在论坛等平台上分享自己的经验,帮助其他遇到问题的人“避坑”。

在这个过程中,他发现写作也逐渐得心应手起来,后来他成为了掘金社区优秀作者和 GitChat 认证作者,再后来他把经验集结成书,《Python3 反爬虫原理与绕过实战》就此诞生,此书在预售阶段就全部售空,并登上京东图书销量榜首位。韦世东就是这样一个人,不管做任何事都能做得很好。

据他说,他的生活开始加速是在 2018 年从事爬虫相关工作以后。“变化”是他提到爬虫时说得最多的词,他总是准备着应对随时可能出现的突发问题,也喜欢解决这些问题后的成就感。

他说自己想要的太多,而现在的能力还不够全部实现,所以他要不停奔跑。如今韦世东已经做好了未来七年的职业规划,准备在35岁退休的他,还有很长一段路要跑。

解锁爬虫,迟到的程序员天赋

上学的时候韦世东并没有在编程上展示出过人的才能。那个时候在学校,他把更多时间用在了和舍友一起经营一家电脑维修店。

从学校毕业以后,他还曾经因为扛不住专业压力在工作一周后就辞职。从信息安全员到后来的运营,他辗转做的工作都和软件技术专业没什么关系。 

“那时赶上了互联网金融发展最快的一段时间,我在的公司成为集团,我的职位也一直在升。之后跳槽,因为履历好看,我在另一家公司又做了副总经理。”

起势过快,互联网金融的发展很快就遭遇了拐点。2017年,国家大力开展互金专项整治,整个行业开始发出危险的信号。

e租宝被处罚,与比特币一起闯入大众视野的 ICO 团灭,现金贷行业封冰,不断出现的新闻愈发让韦世东觉得运营的工作风险太大,于是他渐渐地有了换行业的想法。

也是在那个每天气温都有30多度的夏天里,他在南宁第一次接触到了爬虫。“那个时候公司正好非常需要数据分析和竞品对比,通过数据来挖掘广告投放的效果,所以我们想通过爬虫来找一些竞争对手的数据,分析对方在广告投入上哪一方面产出比较高,哪一方面比较低,作为我们做选择或者预算的参考数据。不过那个时候团队里没有会爬虫的工程师,我就只能自己上!”

学习爬虫的过程格外顺利,这韦世东自己都觉得意外。从第一次学习到开始赚钱,他只用了一个月时间。

在 2017 年底脱产学习的那一个月里,他没有买任何教程,靠着自己不断摸索尝试,有问题就搜索文档或者在技术群里与大家交流,没有特别的轰轰烈烈,就这样他成为了一名爬虫工程师。

 “我觉得我学爬虫的时候进步特别快。一起念书的同学都做了工程师,可是我不行,我学不会其他编程知识。碰到爬虫后我好像忽然开了窍,有豁然开朗的感觉。爬虫不断变化的知识和随时会出现的新问题让我觉得每天都不一样,也不会有审美疲劳。”

没有焦虑和犹豫,韦世东在学习了爬虫后的生活变得清晰起来。他享受遇到难题后解决掉它们的过程。不断变化的情况,给他带来了新鲜感和成就感。

一个月的学习让他更加自信:“爬虫一定能学会!”他的职业生涯就像按下了快进,短短几年就冲到了很高的地方。

出现智能化爬虫?掌握它就好!

工作的时候韦世东更喜欢关掉微信、钉钉和其他社交软件,用纸笔记下思路和逻辑,让自己专注于代码。他说:“虽然我是个工程师,但是我不太喜欢用电脑,只有真正要写代码的时候才会用到比较多。”

今年年初韦世东开始在北京工作,职位是他熟悉的爬虫研发工程师,除了专业问题,他主要负责策略问题和协调等方面的工作,例如规划大家在适当的压力下完成公司任务。

谈到一天的时间分配,韦世东很开心地说自己很忙很充实,最近每天都会工作到晚上9、10点钟。他一边要熟悉新公司的业务,一边也要解决公司目前技术上最难的问题。对他来说,这些过程足够有趣,可以每天早晨6点多就把他叫醒。

“平时我会把自己的需求转换成学习方式,主动挑比较难或者没接触过的工作做,已经掌握的内容就和同事换一下,把对方手里最难的换过来,团队里的很多人都是这样。问题只要给了我,我就一定会解决。”

他很享受现在的状态,面对可能遇到的突发问题,他更多的是期待。“爬虫里不确定因素太多了,随时都有可能会出现突发问题。”他不会在原地等着,更多的时候,他会在问题找上他之前,就主动去了解学习。

现在韦世东正在做关于智能化爬虫的工作。起因是前段时间他和一个网易工程师聊到了这个话题,看了相关论文,研究了算法后他就开始尝试着做了起来。

目前智能化爬虫的研究主要分为两个方向:智能化识别与智能化提取。其中智能化识别可以做到识别整个网页中最重要的内容,在文章中找出正文与标题,过滤掉广告和其他推荐信息,准确率高达百分之九十几。韦世东表示,目前国内所有知名的新闻网站都在测试范围内,与传统爬虫比起来,智能化爬虫的反爬虫工作难度更高。

这样的操作看起来很聪明,可是韦世东和他的很多朋友依然觉得,与人工智能在视觉和自然语言处理上的应用相比,智能化爬虫显得有点笨。他说:“这也是一个算法和网页特性决定的,因为它会出现误判,把周边文本的一些内容算到正文里。这个很难改进,因为出现误判的概率并不是由工程师决定的,与工程师的能力无关。” 

同时在应用场景上,智能化爬虫也与传统爬虫有着一定差异。“智能化爬虫和传统爬虫在应用场景方面有区别。在当前的大环境下,智能化爬虫更适合要求覆盖面广但对数据准确率要求不高的场景,同时能够解放劳动力,让人将精力放在更重要的事情上,而不是编写路查找语法。”

目前智能化爬虫的发展还是很边缘的状态,专门从事的工程师也很少。韦世东说:“这个职位就像信息安全工程师,它没有明确指标,没为公司带来利益,所以也没有形成规模。”也是因为这个原因,目前专门的智能化爬虫工程师数量还是很少,韦世东也建议大家根据自己的实际情况和未来规划,来选择是否学习相关工作:“因为这方面专门的工程师培养起来比较困难,对于公司来说,培养成功后工程师个人的价值高,而公司本身却很难看到直接收益。”

在国内,阿里巴巴等有着相对成熟的智能化爬虫工程师的企业里,非常专业的爬虫工程师团队正在将偏难以实施的技术做成服务,销售给其他公司。

在谈到智能化爬虫未来的发展方向时,韦世东表示:“因为智能化爬虫目前并不算智能,它只是通过算法或者通过深度学习的方法解决了某些问题,想要达到真正的智能化还有很长的路要走。”

尽管智能化爬虫已经投入应用并且代替了一部分工程师的工作,但韦世东并不担心它之后的发展会取代掉爬虫工程师,除了“看起来有点笨”外,韦世东考虑的还有社会进步中人与机器的关系。

“它的影响肯定会有,就像以前的机械取代人工劳动,现在智能化技术会取代掉没有太高技术难度的工作和没有效率的人,以后的发展一定是机器更加普遍,因为它们成本更低,效率更高。但是对于我们来讲,掌握机器的肯定还是工程师,只要好好学习,就能在时代潮流中保证自身身价水涨船高,不被潮水冲到沙滩上。” 

韦世东一点都不担心“爬虫工程师是否能做一辈子?”“爬虫未来的发展方向在哪?”因为他知道所有人的工作都会变,有的人会升职,有的人会换行业,这些都是很正常的事。比起那些,现在他最大的焦虑是“自己跑得太慢了”,这也是他在享受学习爬虫乐趣中的一点苦。 

“虽然这几年的工作中积攒了见识,但我起步晚,我想要的东西有很多,和当前的技术能力不匹配,所以会担心焦虑。想要在有限时间内超过那些已经跑了很久的人,我要很快才行。” 

这样的焦虑让韦世东“从入行到现在从来没有真正休息过,天天都在奔跑”。韦世东的起步速度很快,快过了大部分人,快到自己都觉得不科学,这也让他更快地开始面对被成就裹挟着,一起扑过来的问题。 

“一旦你的速度快了,你的职业等级就会很高,现实工作的时候,你就会直面自己能力不足的情况。你会想很努力地补足自己,那个时候就会跑得特别快,我现在就是这样。” 

一夜成团,夜幕降临

2018年,刚学习爬虫后不久的韦世东就产生了带动行业发展的想法。从最初“希望靠技术带动行业发展”到“意识到最重要的还是把知识准确地输出给有需求的工程师”,他一直在为这些做着准备。2019年9月11日,韦世东发布文章《今天,大佬云集的夜幕团队正式成立了!》,正式把这个他费心准备已久的团队带到了大家面前。 

在武侠动画《秦时明月》系列中,漫画家根据春秋战国时期的背景设置了3位鬼谷子,作为历代纵横家首领的代表,“纵横”的概念是韦世东成立团队的重要灵感。他说:“我联系了行业内知名的工程师,希望能合纵连横,整合资源,做一个大家不需要考虑看或不看,可以直接学到优质内容的团队。” 

现在的爬虫工程师圈子里,很少有人不知道这个成立了仅半年左右的团队。对于这段时间取得的成就,韦世东表示十分满意。一方面,团队的知识输出就像雨后春笋一样蓬勃发展起来,目前已经建立了有两千左右用户的爬虫论坛、多个技术微信群和两门专业课,团队中已经出书和有出书计划的成员也越来越多。

另一方面,夜幕团队一直在努力调动大家的学习热情。“现在一个普遍的现象是,无论是大厂还是小公司的程序员,能够保持独立自主学习的人很少。”注意到这个问题后,韦世东和团队成员平时也会有意识地调动大家的学习积极性。 

在这个团队中,韦世东把自己的角色比喻成篮球中的组织后卫:分配工作,把大家组织到一起。也是通过这样的组织工作,他可以一直保持着积极的学习态度。“崔庆才、周子淇、陈祥安他们本身就是优秀的技术人员,在公司里也是佼佼者,在他们面前我会很谦虚,因为我能清晰地看到自己的不足。” 

虽然疫情当前,但是他们的工作热情也没有减弱。韦世东介绍:“今年年中,我们计划请专业的律师来做一场法律普及讲座,给大家讲讲法律红线的问题。” 

在网络上输入“爬虫工程师”,出来的多数词条都会提到法律问题,这也是韦世东十分在意这一点的原因。工作之后,没有人特意和他强调过身为爬虫工程师需要注意哪些法律规定,只是每条爬虫违法被抓的新闻都像是一个信号,提醒着他:爬虫工程师比任何人都更接近数据,也比任何人都接近浮在隐私上的那根红线。 

“我是很谨慎的那种人,接触爬虫之后经常会看到有人因为爬虫而违法被抓的新闻,那时起我就格外注意对于数据隐私、敏感信息的界定条件。我自己认真读了《中华人民共和国网络安全法》、《中华人民共和国刑法》和《数据安全管理办法》,看相关法律的时候我会着重读一条:量刑标准,也就是到底判多少年。只有清楚这个事情会判多少年,耽误多少年的时间,你才会对法律有敬畏之心,不会在面对诱惑或压力的时候误入歧途。” 

在日常工作中,爬虫工程师经常还会面对一种情况,那就是恶意爬虫。它可以在很短的时间内疯狂爬取目标网站信息,甚至导致对方网站瘫痪,正常用户无法登陆,12306、美团酒店和飞猪旅行等出行网站就经常会面对这样的情况。不出意外,这样的爬虫也一向是法律处罚的重点对象。 

“恶意爬虫分为主观恶意和非主观恶意。举个例子,为了提高爬取效率而采用分布式多机协同爬取或者增加并发数,对目标网站服务器造成压力的行为,就是恶意爬虫。” 

对于普通爬虫工程师来说,即使自己没有编写恶意爬虫,也仍然有可能在接手新工作时不小心“制造出”非主观的恶意爬虫。“程序员在不知情的情况下也有可能造成恶意爬虫,例如你的公司管理着成百上千个爬虫程序,有一些在人员交接的时候遗漏了,程序很有可能一直在运行,而无人知晓。”对于这种情况,韦世东建议大家在日常工作,特别是工作交接的过程中就做好记录,交接时做好盘点。 

计划35岁“退休”,换种思路重新工作

韦世东对于自己未来的职业规划十分明确:在三年后成为架构师,做四年架构师后在35岁“退休”,想到学校做老师或者回家养养鸭子。谈到原因,他说:“我已经奔跑了很多年,35岁前还有7年左右的时间。跑了这么久,那个时候也可以休息一下了。”按照他的计划,再有一年半的学习他就可以成为一名初级架构师。

在韦世东自己看来,他之所以可以利落地制定好这个规划是因为自己对于代码和做程序员本身没有什么执念。“我不是一个程序员,因为我不是一个喜欢写代码的人。我更喜欢完成一件事情后带来的满足感,写代码恰好是一个实现途径。只是我一定会做到一点:我编写出来的代码一定是稳定的,一定是最漂亮最规范的。” 

运营出身的经历让韦世东对周围事物始终保持着敏感,避免陷在编程的思维里。和专注于写代码的技术人士不同,在他的想法里,很多事情都是可以“经营”的,重要的是有选择地规划时间。 

在《秦时明月》中,韦世东最喜欢的角色是鬼谷派卫庄。这个角色有着一头潇洒的白发,轮廓深邃,脸型消瘦,官方人物性格设定是:无论自己是不是喜欢,只要有必要,他可以毫不犹豫地做,也绝不后悔。这一点深深影响到了韦世东。

上大学之后,他对于每次面对变化时做出的选择都很满意,而他满意的标准也很简单:自己选的都是最好的。“我从来不会后悔自己的选择,因为我考虑的是如何承受这个选择带来的结果,而不是困扰其中。”这也是韦世东经常会提到的建议:“你不能在每一个十字路口都犹豫很久,然后再后悔。爬虫这个行业没有技术要求,也没有年龄要求。我的经历告诉我,做到多看官方文档,工作的时候把思路写下来分析,很多问题就会迎刃而解。” 

没有了这个顾虑,“变化”本身看起来也就没有那么可怕。就像他刚开始学习爬虫时那样,未来不确定的变化吸引着他不停地继续向前。 

实现职业自由之后,韦世东的另一个计划是创业。根据自己的观察和经验,他认为保险起见,35岁前不要创业,这个年纪他刚好从公司“退休”,有了一定的的积累和资金,创业计划可以提上日程。

做运营的时候韦世东读过一本叫《穷爸爸富爸爸》的书,书中介绍资产和负债的内容中给了韦世东启发,他想做一个“卖水的人”。 

美国的西进运动催生了著名的淘金热,一部分人一夜暴富,更多的人一无所获,韦世东想做第三种人。“不是所有人去淘金都一定淘得到,但是每个人都会需要工具,我做那个提供工具的人也能赚钱。” 

顺着这个思路,韦世东准备和朋友一起开发一个互联网驾校,用类似美团的模式,把老家那边的驾校信息和学员信息罗列到一个平台上,方便学员挑选驾校的同时,通过运营给驾校递上掘金用的锤子。

也许不到十年,“退休”后的资深爬虫工程师韦世东就又会换上一个身份。

21 个反爬虫经典示例

从实战出发

印证国内互联网企业内部加密原理

侧重讲解反爬虫的原理以及绕过方法

爬虫工程师不可错过的「武功秘籍」,内容包括但不限于 Cookie 反爬虫、WebSocket 反爬虫、字体反爬虫、WebDriver 反爬虫、App 反爬虫、验证码反爬虫。

本书首先介绍了开发环境的配置,接着讨论了 Web 网站的构成和页面渲染、动态网页和静态网页对爬虫造成的影响,紧接着详细介绍了信息校验型反爬虫、动态渲染反爬虫、文本混淆反爬虫知识、特征识别反爬虫的原理、实现和绕过,然后概览了 App 数据爬取的关键和常用的反爬虫手段,最后介绍了常见的编码和加密原理、JavaScript 代码混淆知识、前端禁止事件以及与爬虫相关的法律知识和风险点。