大家好,本期将为大家来采访一位爬虫工程师,与他相识是在一个技术号主群中,只有他怼了我的文章,所以也算不打不相识!他便是小周码字号主:Loco。文章主要分为三部分,第一部分为Loco自述:简单讲述一下他是如何从大学生一步一步走到现在。第二部分为提问解答:猪哥收集了近100个问题,然后由Loco大佬自行选择回答,快看看你有没有被翻牌吧!第三部分是猪哥从Loco回答中提取的一些关键字,希望能加深大家的记忆。
一、自述
1.关于大学
我读的大学是个野鸡学校,虽说是一个计算机专业,但实际的课程内容很杂。CAD、3DMAX、Office全家桶之类的都会有,所以在校期间对编程方面的成长并不大,当时也就只有写个批量改文件名的工具这种水平。
毕业以后到目前为止也就在两家公司工作过,一家是上家公司,另一个是现在这家,总体路程还算顺利吧,没遇到过什么大的挫折,各种需求也能逼着自己成长。
2.接触爬虫
我接触爬虫这方面的起因,其实是因为找实习,当时快毕业了嘛,要先找个实习锻炼锻炼。但是因为我认为我能做的方向比较多,也还没有想好到底往哪个方向发展比较好,所以就开始看知乎的相关回答,然后发现数据相关的好像都不错,爬虫这个方向看起来也挺有意思的,就边学边开始海投简历。
投着投着我就发现了一个问题,投简历这个事情太机械化了,能不能写个程序帮我自动投?我就可以腾出这部分时间来干点别的事情了,这样还能顺便练一练写爬虫的技术。
万幸的是,当时的拉勾、智联、实习僧、58等招聘网站的反爬基本没有,对于一个初学爬虫的人来说还是可以轻松地自己解决:搜索-> 获取职位详情->投递简历这个操作的。
于是,一个自动投简历的小工具就诞生了,虽然代码十分简陋,完全就是用requests库以一个流程化的方式写下来的,但已经足够达到我想要的效果了。在那之后,我每天就只需要等待面试通知和电话面试,发现有合适的就去面试一下就好了,节省了大量的时间用在搞项目上。
3.第一家公司
然后大概这么投了一个多星期吧,中间面了十多个公司,有大有小,但都是要么不太满意、要么对应方向的技术深度还不够,直到碰到了上家公司。那是一家创业公司,可能因为创始人是做技术出身的关系吧,公司氛围很不错,跟老板聊起来也很舒服,然后公司本身也是专门做爬虫相关产品的,所以就去了这家公司。
在这家公司的那段时间应该是我技术水平成长最快的时候了,因为每天做的事情就是写爬虫,当时我们团队将应用商店排名前100的所有APP都“弄”了。什么乱七八糟的问题都有碰到过,然后因为团队里每个人有天赋的方向都不同,一边被需求逼着查各种资料、挑战自己,一边互相补充知识,成长速度就非常快了。
4.目前
从那离职以后我进了现在这家公司,目前做的主要就是区块链搜索引擎的数据收集。看似简单但实际还是很有挑战性的,因为区块链的特性会导致数据量非常大,而且区块链还不像传统互联网网站那样有个标准化的HTML,存在着各种麻烦的问题。所以对于我自己的技术水平增长速度也是有很大的影响的。
总结一下其实还是那句话,需求逼的。
二、解答
在采访大佬的时候,我在朋友圈征集了大概100个问题,以下是大佬随机挑选的21个比较有代表性的问题进行解答。
注:以下“爬虫”均指“垂直爬虫”
1.非爬虫方向的技术转行做爬虫是否可行?
可行,而且有一定的基础会很容易上手,至于深入的部分就看自己了。
2.非技术转行做爬虫是否可行?
可行,但我认为较难,因为爬虫做深了以后是需要你了解各种相关领域知识的,而你现在对这些领域的东西一无所知,甚至可能连编程都还不知道怎么开始,起点会比有基础的人低很多。
3.爬虫工作日常如何?加班多不多?
这个得看公司的,有些公司搞得都是些天天更新反爬的平台(比如工商信息相关的),那基本就是得一直盯着看会不会出问题,一不小心就会要加班。
4.爬虫对于学生党的用处体现在哪些地方?
这个问题看个人,因为爬虫技术可用的地方太多了,没法一个一个地都拿出来说。比如你想搞个自动签到的工具,这其实本质上就是爬虫;比如你想搞个自动回复设定内容的机器人,这其实本质上也是爬虫。
5.学到什么程度才能入职爬虫工程师?
我觉得首先发请求不用说了吧?抓包工具的使用也不用说了吧?熟练掌握XPath、正则表达式这种解析工具也是基本的,然后JSON之类的传输格式至少要了解过长啥样吧,再就是JS逆向总得会一点吧(从只改变量名函数名混淆级别的代码中找出加密参数生成部分的程度)。差不多会这些以后,再自己做几个项目,应聘个初级爬虫工程师没啥问题。
6.如何成为一名优秀的爬虫工程师?
垂直爬虫做到后面本质上就是逆向,你需要有良好的逆向思维方式,并且对一些安全领域的骚东西也有一定的了解,这样你才能游刃有余地处理高难度的反爬。
7.学爬虫的学习路线?
上面的入职水平了解一下?然后就是可以关注一下我的公众号「小周码字」(猪哥强力推荐)学习进阶内容,网上其他的教程绝对没有讲得这么细的。
8.大约学习并从事爬虫几年才可以达到一个不错的高度?
这个问题也很看个人,我觉得主要看有没有需求逼迫成长吧。之前招人的时候,很多三年经验的也就比入门水平稍微好一点,他们在工作时所遇到的难点几乎全是依靠自动化测试工具,对逆向水平毫无增长。所以建议还是多依靠逆向手段去解决问题,成长速度会很快。
9.薪资方面如何,在几年内可以达到15K?
同上,标15K及以上的招聘JD还是挺多的,看看招聘需求就知道大概到什么程度了。
10.面试爬虫哪些技能点是加分项?
丰富且有深度的逆向经验、熟悉通信协议底层实现、做过骚东西等各种,但主要还是逆向经验。
11.作为一名爬虫工程师,对该岗位的前景如何看待?
未来主要内容在APP上的平台应该会越来越多,难度也会越来越高,所以对于爬虫工程师的逆向水平要求会越来越高,只会简单逆向甚至不会逆向的人找工作会越来越难。
12.爬虫和数据挖掘是一样的吗?
不一样,爬虫只是将数据取回来,具体怎么分析才是数据挖掘的事情。
13.爬虫是否和黑客差不多?
差很多,与上个问题类似,只不过“黑客”这个词太宽泛了,黑客也是有具体方向的。
14.千奇百怪的验证码只能对接打码平台吗?有啥其他办法?
自己破呗,逆向+机器学习。
15.现在有用pyppeteer吗?还是一直是selenium?
都不用,因为效率太低了。
16.如何爬xx平台?
涉及法律问题,这种针对某个平台的东西是不能细说的。
17.爬虫违法吗?如何避免过线导致的违法?怎么规避法律风险?
算是擦边球吧,其实你即使遵守规则去爬别人的网站,只要人家想搞你,还是可以让你做的事情变成违法的。所以建议不要做太过分的事情,毕竟狗急了也会跳墙。
还有就是不要为一些明显是做灰黑产的人/公司写代码,一旦他们出事了,你也会被牵连。
知乎上之前那个很火的被抓了的人,从回答内容中来看其实就是做打码平台的那个微凉,他这一个平台据说赚了至少千万,主要应该是提供给做黑产的人使用了,这种其实被抓是迟早的事。最好的避免违法的办法就是明显觉得不太好的事情就不要去碰,基本就不会有啥问题。
18.如何有目的地爬取到真正想要的数据?
让需要数据的人提需求,如果你自己就是那个需要数据的人,那就去做市场调研,看看你需要的数据在哪里能找到。
19.反爬虫最先进的技术是什么?最有效的技术是什么?
最先进的技术其实就是使用在PC平台上已经玩烂的各种反破解技术将行为监测点(设备指纹、用户操作等)隐藏起来,然后传给服务端做行为识别,如果操作非人类或者缺少某些东西就触发风控。
最有效的技术其实不是技术而是方法,这个方法就是账号收费,将你的数据变成需要花多少钱才能看到这样子的,就能做到啥高端技术都不用上、轻松提高爬虫方的获取数据成本的效果,当然这也需要结合良好的产品设计,否则普通用户的体验会很差。
20.请问在xx领域有哪些应用?
这个应该是对应领域的人自己思考一下自己拿到那些公开数据究竟可以做什么。
21.需要大量账号的平台成本过高该怎么办?
人家就是依靠这种方式来提高你成本的,你如果觉得成本过高要么放弃要么换一条路线获取数据。
三、关键字
1.实践
Loco在投简历时直接使用爬虫进行投简历,实习就有这种骚操作,让我明白一个道理:实践是获得高薪的一个捷径!
2.需求逼的
和Loco大佬深有同感,尤其在最开始工作的那几年,需求是推动学习成长最快的方法,不逼一把自己,怎么知道你的上限有多高?
3.逆向
和多位爬虫工程师交流过,一致认为逆向是最重要的一项技能,后面猪哥也会多学习并写一些逆向方面的教程!
4.法律意识
爬虫本身就是打法律的擦边球,所以作为技术人我们更应该守住底线,向灰黑色产业说不。如果有些东西你不能确认是不是违法,可以向身边朋友咨询或者百度,切莫存侥幸心理!
四、感谢
最后感谢Loco大佬在百忙中抽出时间接受猪哥的采访,猪哥也看过他的一些爬虫教程,目前很少有人会讲爬虫的逆向,而他是其中一位!
对于那些没有被翻牌的或者还有其他问题想要咨询的同学,大家可以关注Loco大佬的公众号:小周码字,直接向他提问吧!