尝试利用AI编写爬虫以获取四六级真题,但AI未能正确生成代码,作者最终手动编写爬虫成功抓取数据。

今天晚上想写个爬虫,爬取四六级真题。

但是我不太会网页逆向,只能瞎琢磨,一步一步的来。

目标网站: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上。

仓库地址:https://github.com/iduxx/English-zhenti

最后修改:2025 年 10 月 15 日