从民办到大厂的JS逆向进阶之路-爬虫er100人

Python技术杂谈 2025-10-24 15:38:00 阅读(54) 评论(0)

今天<爬虫er100>采访的是咱们猿人学小伙伴里的挽风。他 00 后,高考 400 分读民办二本,前三年在宿舍打游戏,最后半年才突击学习,毕业两年多,完成三级跳,进入了大厂,还开发了自己的 JS 补环境框架。

从民办到大厂的JS逆向进阶之路-爬虫er100人

下面就用问答形式,听听他的真实经历,他的爬虫逆向成长经验。

问:先跟大家介绍下自己吧,当初怎么走上编程这条路的?

我是挽风,00 后,现在做爬虫两年半了。学的是软件工程,说起来有点离谱”—— 大学前三年基本在摆烂,天天跟舍长宅宿舍玩英雄联盟,就最后半年才正经学东西。前半年还试过搞剪辑短视频,想看看有没有别的机会,后来发现还是写代码好像更能就业,就一头扎进来了。

问:前三年都在玩,最后半年怎么突然着急了?

就是快到点了才慌啊!跟大学毕业一样,总觉得时间还多,直到要找工作了,才发现自己啥也不会。

当时身边同学报了学校合作机构的 Java 课,1 万到 2 万不等,还说包就业,结果学完照样找不到工作。我没跟风,一是觉得不靠谱,二是自己学历差,换其他行业说不定真要饿肚子,还好最后蹭到了爬虫的红利。

问:第一份实习找得顺利吗?那段经历对你帮助大吗?

一点都不顺利,投了半个月简历,大多石沉大海。最后有家创业公司给了机会,面试考了三个题,我就做出来两个,最后一个是瑞数 5,当时啥也不懂,直接说放弃了,没想到他们居然收了我 —— 后来才知道,他们也没招到人,算是双向凑活吧。

在那家杭州的公司,月薪 5k,呆了两个月,最后招的两个实习生全跑了。但对我来说,工资多少、公司怎么样都不重要,关键是有写代码的实践机会。

那段时间我抽空搞了极验、易盾两个验证码的破解。比如极验,当时网上有文章,但写得很跳,我连着一周晚上都在琢磨,跟着文章操作到一半就卡住,只能自己翻代码找灵感,也算慢慢熟悉了 debug 流程。最后搞出来其实还是一知半解,但学习这事儿急不来,搞多了自然就通了。

问:听说不不这个卷王对你影响很大,算是你的转折点吧?

绝对是!实习时遇到他,真是帮了我太多,就像有人推着你往前走一样。

毕业之后,跟着不不一起学补环境,学了一个多月,中间还把瑞数 5 给补出来了。没多久他找到工作,直接把我推荐过去了 —— 巧的是,主管你也认识,就是猿人学的,所以我直接就进去了,当时工资 1 万起步,比其他应届生好多了。

第一份正式工作是我技术进步最快的时候,那时候写了浏览器 hook,才算完全搞懂原型链原理。组长人也不错,上班没事还能自己学东西,特别舒服。

后来有朋友拉我去小公司,两个人搭了两个平台,呆了 5 个月就 —— 太累了,就两个人,领导给的压力特别大,反而他一个人干还安逸点。

问:你最初是怎么接触到 JS 逆向的?早期靠什么学?

大二的时候,舍长带我搞易语言注册机,算是第一次接触类似的东西。后来学逆向,早期主要靠播客、论坛 —— 易语言资料太少了,不如 Python 开源,能查的东西多。

那时候也没什么系统的方法,就是瞎琢磨,遇到问题就翻论坛、找文章,慢慢攒经验。然后毕业前半年接触到了猿人学的课。

问:给刚入门的新人推荐学习资源或路径,你会怎么说?

网上免费的资源也有,自己先去看看,看了觉得还愿意学、能坚持,那就适合走这条路。实在遇到门槛靠自己进步不了,可以考虑报课,要不然大概率吃灰。

要自己多摸索,把原理搞懂。web 端更多靠自己,猿人学有个优势就是 —— 能互相帮助,当然前提是你得有基础实力,这点比课程本身对我帮助还大。

还有个容易被忽视的点:能交流的人不多,很容易闭门造车。我当初遇到不不,有人推着走、一起讨论,比自己瞎琢磨快太多了。另外,原型链、代理这些基础知识点特别重要,比如盾山的逆向,翻堆栈找到存 URL 的对象,代理之后 debug,立马就能定位加密位置,基础打牢了才好进阶。

问: JS 逆向分析时,你的流程一般是怎样的?遇到混淆代码或反爬,有什么技巧?

流程得看分析的对象 —— vmp 的话,就翻堆栈,对某个对象做代理、hook,获取属性的时候能快速定位;vmp 的话就插桩补环境,入口大多是 xhr

遇到混淆代码,我现在就是用 ast 简单还原下,不用搞太细,够调试、能搜字符串就行。工作久了就知道,在不需要高并发的场景(比如注册),能完成工作的自动化才是好的。

要是遇到复杂反调试或反爬,比如五秒盾,就把全部流程本地化,保存请求结果,再复现找问题。不过工作里遇到实在搞不定的,要么买解决方案,要么直接放弃 ——ROI 太低了,没必要死磕。

问:为什么会想到开发 JS 补环境框架?过程中遇到过难点吗?

说白了就是”—— 想丢段代码进去直接出结果,不想每次都花时间看流程。而且每隔一段时间,就发现之前写的框架是垃圾,补着补着就觉得设计有问题,要么被检测,要么操作繁琐,就一直迭代优化。

框架的核心原理是原型链,核心补环境逻辑用的是 jsdom(也能换其他库),把产品代码的壳对象放在 node 层,这样每次在 vm 里初始化 window 环境能更快。

开发时最头疼的是翻 node 源代码找 api,没资料,翻起来巨浪费时间,还要找耗时最少的 api—— 比如一个 defineproperty 都有好几种写法,补环境这块各有各的方法,我做得也不算特别好。

不过这框架也解决了些实际问题,比如能打印浏览器里没法打印的东西,像代理 window.proto,代码获取 window 属性不存在时,我就能打印出来看,这也是靠原型链原理实现的。前段时间还能用它过五秒盾,就是更新太频繁,懒得弄了,现在补环境框架能用的地方也越来越少了。

问:现在看自己的框架收获了一些 star,有什么感受?

其实也不多,主要是大家给面子,没多少人真的用 —— 上手太麻烦了。开源就是想分享个思路,希望有人能设计出更好的框架,毕竟个人力量始终渺小,能帮到别人一点点就够了。

问:回顾从民办二本到现在进了大厂,你觉得最关键的是什么?

一是蹭对了爬虫的红利,二是找对了圈子 —— 遇到不不、进了猿人学,有人帮、有地方学,比自己瞎撞强太多。

我一直觉得,努力只占一部分,时机到了自然会被推着走,想休息都难。比如我卷的时候能熬通宵,摆烂的时候也能躺好几天;现在搞逆向遇到风控,比对参数半天过不去,也会觉得痛苦。以前进步一点就开心,比如搞懂个易盾验证码、优化框架速度,现在更多是为了工作混日子,但好在当初选对了路。


猿人学《爬虫er100人》是以采访猿人学学员为主的栏目,猿人学爬虫逆向课经营六年有3000多个学员,现如今有的是技术大拿,有的是爬虫主管,有的是做自由职业。

我想把他们的故事写出来,大厂面试经验,逆向技术成长之路,应届找工作,自由职业接单挣钱等等,写够100人。

猿人学banner宣传图

我的公众号:猿人学 Python 上会分享更多心得体会,敬请关注。

***版权申明:若没有特殊说明,文章皆是猿人学 yuanrenxue.con 原创,没有猿人学授权,请勿以任何形式转载。***

说点什么吧...