今天晚上想写个爬虫,爬取四六级真题。
但是我不太会网页逆向,只能瞎琢磨,一步一步的来。
目标网站:https://zhenti.burningvocabulary.cn/
刚开始抓包分析了一会儿,发现目标pdf的文件url地址并没有顺序而是32位的秘文。
类似这样:
res-zhenti.burningvocabulary.cn/images/read/cet6/2025-06/01/0f54c8f77cc291a76403f347814d391f.pdf然后就去找密文的生成地址,直接在网站的js文件里搜索上边链接中的一些字段,例如
images/read
(运气很好,js文件并没有混淆加密,但凡有一点混淆加密,对我这种小白来说就真的一点办法都没有了)
通过搜索上边的链接中的字段,找到了一个代码片段看着像目标url生成的方法,直接打上断点刷新网页,果然在这个地方停止了,但是里边调用了globalconfig这个类,刚开始以为是定值,就直接把url生成方法和globalconfig一起丢给了chatgpt,刚开始还行,告诉我globalconfig并不是固定的,而是每一个文件都不一样,但是当时我也没有新的思路,就只能一直问chatgpt。
但是一直行不通,又去问deepseek,一样不行。然后,自己又去研究,直接全局搜索globalconfig,发现网页的html里包含了,globalconfig。
到这个时候其实思路已经很清晰了,遍历访问每个对应日期的目标网页,拿到html文件里的globalconfig,再调用上边js文件中的目标文件url地址的构造方法就可以了。
但是我习惯了用ai,我太懒了,我直接把抓包的curl发给chatgpt,让它给我写,思路也给它说清楚了。但是给我写出来的代码就是一坨,就不按照我说的写,乱写一通,不调用我说的生成方法,而是去遍历直接生成目标链接,显然生成的都是无效地址,让deepseek写也是一样。
之后,我就开始自己写,直接一个request请求,再对返回的html进行处理得到globalconfig内容就行了,json化之后,调用url的生成方法就可以得到类似上边的目标文件的pdf地址。就这么简单,也不知道为什么ai就是搞不懂,总写出一坨。
自己写了不到20分钟就写好了,最后也成功运行起来了,把近10年的试卷真题都给爬下来了。
上床睡觉😪。
时间太晚了,明天把CET4和6,还有考研英语的,专四专八一起爬下来,放到GitHub上。
1 条评论
[...]起因最近学六级,感觉到了一个不方便的地方,有很多不认识的单词,但是写完一道题后,一个一个的搜太麻烦了,效率非常低。所以我想搞一个网站,大概功能就是里边有全套的四六级真题,通过双击或者长按之类的操作可以直接有悬浮窗显示出贴合四六级英语的翻译解析,最好能有语音。过程然后我这两天就在整这个东西第一步找到资源我盯上了这个网站https://zhenti.burningvocabulary.cn/里边资源很[...]