前言

在一个无聊的下午,我在学校做实验。
突发奇想,能不能把学校的实训平台实验手册爬下来
说干就干

探索

由于我也不会爬虫)
但是我有AI啊!
于是乎琢磨了一下午
因为学校的实训平台是js动态网页,所以不能用简单的模式匹配继续爬取
于是乎我打开了F12
这F12就是好啊
马上给我看到了关键信息:

可以看到其中有一个/api/h/course/lessonView/getLesson接口直接返回md文件
那就好办了
那我是不是只需要监听这个接口的响应体,然后提取md字段即可?

说干就干

于是乎马上把我的方案给AI:

用户需求:

  • 在Edge浏览器中创建一个插件,监听特定请求:

    1
    https://192.168.45.20/api/h/course/lessonView/getLesson
  • 当捕获响应时,自动提取其中的md字段内容,并将其保存到桌面的output文件夹。

存在的问题:

  • 浏览器插件Manifest V3版本不再支持使用webRequest API直接获取响应体数据,因此原方案无法正常运行。

推荐的解决方案:

使用chrome.devtools.network API:

  • 优点:可完全自动化,精确捕获并保存响应数据。
  • 缺点:需要开启浏览器开发者工具(F12)。

实施方法(推荐):

  1. 编写Manifest V3扩展程序,包含:

    • manifest.json(声明插件权限、使用devtools_page
    • devtools.html(加载开发者工具脚本)
    • devtools.js(监听网络请求,提取md字段,自动下载)
  2. 启用插件后,在Edge中访问指定链接,并打开开发者工具,即可自动捕获和下载数据。


于是乎写出来了个egde插件,直接监听,我就可以批量下载了
至于图片的问题,等我把md文件收集起来,用脚本统一提取图片链接即可。
至于进一步自动化,这我就不会了,没有思路。。

后谈

图片获取

光有文档没图片怎么可以,于是乎写了个获取图片的脚本
基本思路是这样:

  1. 模式匹配md中的图片链接,这个很好做。
  2. 处理成数组,然后遍历下载

小坑

很简单
不过有点小坑
基本上就是跟权限验证有关,下载图片需要cookie
反正就是把我的cookie复制一份就行。