史上最细,Charles抓包工具的基本配置、查找接口的方法、爬取中国大学Mooc整门课程

您所在的位置:网站首页 搜索搜索一下看 史上最细,Charles抓包工具的基本配置、查找接口的方法、爬取中国大学Mooc整门课程

史上最细,Charles抓包工具的基本配置、查找接口的方法、爬取中国大学Mooc整门课程

2024-07-10 02:31| 来源: 网络整理| 查看: 265

今天给大家分享Charles这个软件,讲解基本配置和接口查询操作,最后用一个中国大学mooc的示例来展示Charles在Windows端的用法。内容丰富,技术要点详细,站里面搜索中国大学MOOC爬虫的不是讲了一半就关注公众号的,还是讲了一点的,或者只有代码的,都没我讲的详细,这就是对抗路的细节,欢迎阅读点赞评论收藏!

安装与配置 windows下双击安装

在这里插入图片描述

注册

进入如下菜单位置,点击 在这里插入图片描述 输入RegisteredName和LicenseKey就成功了,实在找不到的私信我

监听端口设置

Charles相当于是一种代理服务,监听的端口默认8888 设置端口在 在这里插入图片描述

https设置

在这个位置设置ssl的监听 在这里插入图片描述 添加的提示是空代表匹配所有,所以一般host不写,在port分别添加两个80和443的 在这里插入图片描述

有了这个之后界面里拿到的就是提示已开启的,不开启ssl很有可能拿到的都是乱码 在这里插入图片描述

安装证书

有了证书才可以更好当代理,获取ssl数据 在这里插入图片描述 弹出如下界面,点击安装 在这里插入图片描述 不同系统显示的可能不一样,我的win10系统,选本地计算机 在这里插入图片描述

下一个指定位置为受信任的证书颁发机构 在这里插入图片描述

一路向下,最后显示导入成功 在这里插入图片描述

高德地图搜索结果的简单使用示例

Charles最常用的功能可能是在接口的查找,实现和浏览器F12检查的类似功能,还兼具POSTman的接口测试能力 拿我上次的爬取高德地图搜索结果为例 在开启Charles状态进入高德地图,调整到全国搜索,然后清空Charles界面,搜索海底捞

在这里插入图片描述 很容易找到接口poilinfo

先记下一个地址编码

在这里插入图片描述

再点击进入第二层,点个广东省广州市

在这里插入图片描述 很容易就能找到第二个接口 在这里插入图片描述 修改搜索参数地区参数为620800 先对着接口右键,选择Compose,调整参数后execute 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

中国大学Mooc的复杂使用示例

通过拦截接口,很容易就能取得数据,这在一些不让调试的网页里功能尤其方便

比如中国大学mooc,一旦检查F12进去就会卡住

访问课程页面,查看分析拦截数据

这里我们进入一门课,找个课件进去看看 在这里插入图片描述

课程目录接口

在这个接口就可以看到课程目录 在这里插入图片描述

课件接口

这个接口可以看到PDF的下载地址 textUrl: “http://nos.netease.com/edu-lesson-pdfsrc/A4CDAC2BEB569A2F072C4B3AE568C226-1461046117633?download=1-1%20%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%B3%BB%E7%BB%9F%E6%A6%82%E8%A7%88.pdf&Signature=yHsUiyCUy2yttYY%2FI0cTXu%2FPHyXq579q077yh%2B5e%2BqQ%3D&Expires=1635670391&NOSAccessKeyId=7db2f370ff9a412987155d36d55a6ead”

在这里插入图片描述

视频接口

再打开个视频,找找看,这就是视频 在这里插入图片描述 把它链接拿出来访问,明显可以 在这里插入图片描述 你把它保存下来就是自己的文件了

https://mooc1vod.stu.126.net/nos/mp4/2016/04/01/1004247136_772bfc6be33643ccadd2c64830a98291_sd.mp4?ak=7909bff134372bffca53cdc2c17adc27a4c38c6336120510aea1ae1790819de8d5aa93e9980aefbd6fb2a3d28ddea177a59bc99dfa83cf4f0e6b8d59f57093403059f726dc7bb86b92adbc3d5b34b1320a4e117deae4fee9b75ded7d7dab3f294cca709eeec35724f15d3e6a182e04cb 这里面的查询参数只有一个ak,点击下一个视频比较 https://mooc1vod.stu.126.net/nos/mp4/2016/04/01/1004250124_7c3978a71fc742b88396c7674fe5691b_sd.mp4?ak=7909bff134372bffca53cdc2c17adc27a4c38c6336120510aea1ae1790819de8d5aa93e9980aefbd6fb2a3d28ddea17722d3f175a31c20accaf76d88254fc9353059f726dc7bb86b92adbc3d5b34b132359c52717280024cfad424ee4db3593cb8ae77e29788836745b7125f174b391 ak还不一样 尝试换ak能不能访问

https://mooc1vod.stu.126.net/nos/mp4/2016/04/01/1004250124_7c3978a71fc742b88396c7674fe5691b_sd.mp4?ak=7909bff134372bffca53cdc2c17adc27a4c38c6336120510aea1ae1790819de8d5aa93e9980aefbd6fb2a3d28ddea177a59bc99dfa83cf4f0e6b8d59f57093403059f726dc7bb86b92adbc3d5b34b1320a4e117deae4fee9b75ded7d7dab3f294cca709eeec35724f15d3e6a182e04c 完全可以,那这就不是问题 在这里插入图片描述

视频地址链接接口

那么就找视频链接就可以了 但不用这么麻烦,在这个位置找到了一个接口,直接提供了链接地址,这里是GET方法的接口,下一步直接找参数videoid和signature是怎么取得的

在这里插入图片描述

查找videoid和signature参数的取得接口

在这里插入图片描述 找到了一个,直接看得到这两个参数,这是个POST请求,数据为 在这里插入图片描述 在这里插入图片描述 1-1和1-2两个视频间隔为2 再看一个

在这里插入图片描述 很明显查的是bizid,看看其他一节有好几个视频的,其他参数有没有变化

在这里插入图片描述

在这里插入图片描述 在这里插入图片描述 两个格子视频的bizid是不一样的 其他参数目前没有变,那么只要取到这个id就可以了 很明显这个id在第一个课程目录的接口就有,在如下位置找到参数,而且这个接口有全部的数据。 在这里插入图片描述 这个只需要提供一个termid就可以了,这个直接在网页里就有 在这里插入图片描述

相反顺序,到Postman做接口测试 获得课程课件列表

在Postman里面设置请求头和cookie,直接拿到数据 在这里插入图片描述 获取这段数据,postman直接生成的代码为

import requests url = "https://www.icourse163.org/web/j/courseBean.getLastLearnedMocTermDto.rpc?csrfKey=7431f506d0ee4bb39c221e8175414474" payload='termId=1465787445' headers = { 'edu-script-token': '7431f506d0ee4bb39c221e8175414474', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36', 'Origin': 'https://www.icourse163.org', 'sec-fetch-set': 'same-origin', 'sec-fetch-mode': 'cors', 'sec-fetch-dest': 'empty', 'Cookie': 'NTESSTUDYSI=7431f506d0ee4bb39c221e8175414474;EDUWEBDEVICE=3fd0255d74a74b07a8cabdf74ab12ea7;hb_MA-A976-948FFA05E931_source=www.baidu.com;Hm_lvt_77dc9a9d49448cf5e629e5bebaa5500b=1635668943;__yadk_uid=mYcTDWTWoGoLzWXqoriGTcPsGdPtAXsI;WM_NI=%2F%2B0nXcI9jEcRUkPNcwhqvjtQQWBa%2B%2BfcLZ%2FsQPaAqztbF1CSmP1z9MDXjFVS6wFkCX7Ckc8zHFmQRgjppwExBgrYHIjTaU5Q3G%2BHNfGikQk9ujER3PJVqmyZwWAcK40%2BMnc%3D;WM_NIKE=9ca17ae2e6ffcda170e2e6eeb4ef73b1a7ad82bb73a3eb8ea3d45b929f9faff4658987b7b0ed3fe9be97aeea2af0fea7c3b92aedf5008fdb698be7a6a6e25a97b5a0afe27dacafba8bf75b93898e82aa21a6bd84bbae799390afa2f472b8be8ad2c259af90ff9bbc478888a6a7d559f6a98a8cc254f59da584bb728c9aa3b2d16daab0c098c87482b9bebacb43aa8cafb6b85bf199e5a9cd6e85b7a5b2ea33b7b68bb3b25c8a8abf8efc52b5898f84ca40f4f5838fe237e2a3;WM_TID=FMemxP1w3M5BQBRVBQJ%2B5LNifztqPNYh;STUDY_WTR="dm/R7gNnvojJoVsvC61fnLXO75a/qk5IHIKQrU+xinRJxLKAIqhy1eX9BljqSXcUuelHydQDC7xkboGVgAtcIK0dTXOBITAuRINrecku/H4=";NTES_YD_SESS=_SVIA7Fj2_UcQFLVBuKLqQL1MC1Nu90N1Ivn1Yy57nhNfD7CfFQYXmxNTFV4wL0Ij4xao7EJC_VdhaG8fScdSOn0538a8gvkuX.1Cz8GBkrZg__8cNI7zBG7pnxdYy3xgPvLVhLDRZlr_gs7N573At2QeL1W7xQSb0srowkg0uxQO6JexvVePiQUlQmncRTJkpGdA7qiSI8Ryzv_4baa847pByqe.T2hN.wdWUMADyu9E;S_INFO=1635669032|0|0&60##|17701720613;P_INFO=|1635669032|1|imooc|00&99|null&null&null#jis&320600#10#0|&0||17701720613;STUDY_SESS="1DPCVw/hWauGD5psx4uGfs8e64IPoBO70JhuXWh0BwBfFtL/cBubuYsmhWvdipWpAZP7mreUGGiz9aWK2sCz4x12rAXcVNtX5OFC0VFtUy4dsjqELa/dWKM0Kha88QnprgUSYxobmvFeVEtz5mu1JTuSBMQQNyMBqaMr8+5oqK8BD1coOZaIOoFWd3nvhrpQylodCQsDavrWrUk4YSJn3w==";STUDY_INFO="[email protected]|8|1668085|1635669033430";NETEASE_WDA_UID=1668085#|#1399984756414;MOOC_PRIVACY_INFO_APPROVED=true;hasVolume=true;videoVolume=0.8;Hm_lpvt_77dc9a9d49448cf5e629e5bebaa5500b=1635672902', 'referer': 'https://www.icourse163.org/learn/NJU-1001571004?tid=1465787445', 'Content-Type': 'application/x-www-form-urlencoded' } response = requests.request("POST", url, headers=headers, data=payload) print(response.text)

在里面修改为自己的token和cookie即可使用

数据量大,建议存成文件再读取文件,这个数据里面的units的id就是自己要获取的视频id,但还有个PDF,也是需要的,是课件 在这里插入图片描述

提取课件地址接口

在这里插入图片描述 这是1-1的pdf文档,POST请求参数在上 c0-params3就是PDF的id 但是我用postman测试发现起决定性因素的是c0-param0,内容id 尝试去掉其他参数 发现参数不足,调用不了 那就只改变这个参数试一下,发现其他参数不改也是可以的,取到的是1-3的pdf地址,但在上个步骤能够提取到两个id,建议还是两个一起用。

在这里插入图片描述

根据contentid取pdf文件的代码如下

import requests url = "https://www.icourse163.org/dwr/call/plaincall/CourseBean.getLessonUnitLearnVo.dwr" payload='callCount=1&scriptSessionId=%24%7BscriptSessionId%7D190&httpSessionId=7431f506d0ee4bb39c221e8175414474&c0-scriptName=CourseBean&c0-methodName=getLessonUnitLearnVo&c0-id=0&c0-param0=number%3A1003350046&c0-param1=number%3A3&c0-param2=number%3A0&c0-param3=number%3A1270833706&batchId=1635672902363' headers = { 'edu-script-token': '7431f506d0ee4bb39c221e8175414474', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36', 'Origin': 'https://www.icourse163.org', 'sec-fetch-set': 'same-origin', 'sec-fetch-mode': 'cors', 'sec-fetch-dest': 'empty', 'Cookie': 'NTESSTUDYSI=7431f506d0ee4bb39c221e8175414474;EDUWEBDEVICE=3fd0255d74a74b07a8cabdf74ab12ea7;hb_MA-A976-948FFA05E931_source=www.baidu.com;Hm_lvt_77dc9a9d49448cf5e629e5bebaa5500b=1635668943;__yadk_uid=mYcTDWTWoGoLzWXqoriGTcPsGdPtAXsI;WM_NI=%2F%2B0nXcI9jEcRUkPNcwhqvjtQQWBa%2B%2BfcLZ%2FsQPaAqztbF1CSmP1z9MDXjFVS6wFkCX7Ckc8zHFmQRgjppwExBgrYHIjTaU5Q3G%2BHNfGikQk9ujER3PJVqmyZwWAcK40%2BMnc%3D;WM_NIKE=9ca17ae2e6ffcda170e2e6eeb4ef73b1a7ad82bb73a3eb8ea3d45b929f9faff4658987b7b0ed3fe9be97aeea2af0fea7c3b92aedf5008fdb698be7a6a6e25a97b5a0afe27dacafba8bf75b93898e82aa21a6bd84bbae799390afa2f472b8be8ad2c259af90ff9bbc478888a6a7d559f6a98a8cc254f59da584bb728c9aa3b2d16daab0c098c87482b9bebacb43aa8cafb6b85bf199e5a9cd6e85b7a5b2ea33b7b68bb3b25c8a8abf8efc52b5898f84ca40f4f5838fe237e2a3;WM_TID=FMemxP1w3M5BQBRVBQJ%2B5LNifztqPNYh;STUDY_WTR="dm/R7gNnvojJoVsvC61fnLXO75a/qk5IHIKQrU+xinRJxLKAIqhy1eX9BljqSXcUuelHydQDC7xkboGVgAtcIK0dTXOBITAuRINrecku/H4=";NTES_YD_SESS=_SVIA7Fj2_UcQFLVBuKLqQL1MC1Nu90N1Ivn1Yy57nhNfD7CfFQYXmxNTFV4wL0Ij4xao7EJC_VdhaG8fScdSOn0538a8gvkuX.1Cz8GBkrZg__8cNI7zBG7pnxdYy3xgPvLVhLDRZlr_gs7N573At2QeL1W7xQSb0srowkg0uxQO6JexvVePiQUlQmncRTJkpGdA7qiSI8Ryzv_4baa847pByqe.T2hN.wdWUMADyu9E;S_INFO=1635669032|0|0&60##|;P_INFO=|1635669032|1|imooc|00&99|null&null&null#jis&320600#10#0|&0||17701720613;STUDY_SESS="1DPCVw/hWauGD5psx4uGfs8e64IPoBO70JhuXWh0BwBfFtL/cBubuYsmhWvdipWpAZP7mreUGGiz9aWK2sCz4x12rAXcVNtX5OFC0VFtUy4dsjqELa/dWKM0Kha88QnprgUSYxobmvFeVEtz5mu1JTuSBMQQNyMBqaMr8+5oqK8BD1coOZaIOoFWd3nvhrpQylodCQsDavrWrUk4YSJn3w==";STUDY_INFO="[email protected]|8|1668085|1635669033430";NETEASE_WDA_UID=1668085#|#1399984756414;MOOC_PRIVACY_INFO_APPROVED=true;hasVolume=true;videoVolume=0.8;Hm_lpvt_77dc9a9d49448cf5e629e5bebaa5500b=1635672902', 'referer': 'https://www.icourse163.org/learn/NJU-1001571004?tid=1465787445', 'Content-Type': 'application/x-www-form-urlencoded' } response = requests.request("POST", url, headers=headers, data=payload) print(response.text) 提取videoid和signature两个参数的接口

接下来测试找videoid和signature的接口 在这里插入图片描述

post的参数bizId:1270833705,就是前面取得的课程单元id 通过id取videoid和signature的代码如下,所得格式是json文本,直接可以取到值

import requests url = "https://www.icourse163.org/web/j/resourceRpcBean.getResourceToken.rpc?csrfKey=7431f506d0ee4bb39c221e8175414474" payload='bizId=1270833705&bizType=1&contentType=1' headers = { 'edu-script-token': '7431f506d0ee4bb39c221e8175414474', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36', 'Origin': 'https://www.icourse163.org', 'sec-fetch-set': 'same-origin', 'sec-fetch-mode': 'cors', 'sec-fetch-dest': 'empty', 'Cookie': 'NTESSTUDYSI=7431f506d0ee4bb39c221e8175414474;EDUWEBDEVICE=3fd0255d74a74b07a8cabdf74ab12ea7;hb_MA-A976-948FFA05E931_source=www.baidu.com;Hm_lvt_77dc9a9d49448cf5e629e5bebaa5500b=1635668943;__yadk_uid=mYcTDWTWoGoLzWXqoriGTcPsGdPtAXsI;WM_NI=%2F%2B0nXcI9jEcRUkPNcwhqvjtQQWBa%2B%2BfcLZ%2FsQPaAqztbF1CSmP1z9MDXjFVS6wFkCX7Ckc8zHFmQRgjppwExBgrYHIjTaU5Q3G%2BHNfGikQk9ujER3PJVqmyZwWAcK40%2BMnc%3D;WM_NIKE=9ca17ae2e6ffcda170e2e6eeb4ef73b1a7ad82bb73a3eb8ea3d45b929f9faff4658987b7b0ed3fe9be97aeea2af0fea7c3b92aedf5008fdb698be7a6a6e25a97b5a0afe27dacafba8bf75b93898e82aa21a6bd84bbae799390afa2f472b8be8ad2c259af90ff9bbc478888a6a7d559f6a98a8cc254f59da584bb728c9aa3b2d16daab0c098c87482b9bebacb43aa8cafb6b85bf199e5a9cd6e85b7a5b2ea33b7b68bb3b25c8a8abf8efc52b5898f84ca40f4f5838fe237e2a3;WM_TID=FMemxP1w3M5BQBRVBQJ%2B5LNifztqPNYh;STUDY_WTR="dm/R7gNnvojJoVsvC61fnLXO75a/qk5IHIKQrU+xinRJxLKAIqhy1eX9BljqSXcUuelHydQDC7xkboGVgAtcIK0dTXOBITAuRINrecku/H4=";NTES_YD_SESS=_SVIA7Fj2_UcQFLVBuKLqQL1MC1Nu90N1Ivn1Yy57nhNfD7CfFQYXmxNTFV4wL0Ij4xao7EJC_VdhaG8fScdSOn0538a8gvkuX.1Cz8GBkrZg__8cNI7zBG7pnxdYy3xgPvLVhLDRZlr_gs7N573At2QeL1W7xQSb0srowkg0uxQO6JexvVePiQUlQmncRTJkpGdA7qiSI8Ryzv_4baa847pByqe.T2hN.wdWUMADyu9E;S_INFO=1635669032|0|0&60##|;P_INFO=17701720613|1635669032|1|imooc|00&99|null&null&null#jis&320600#10#0|&0||17701720613;STUDY_SESS="1DPCVw/hWauGD5psx4uGfs8e64IPoBO70JhuXWh0BwBfFtL/cBubuYsmhWvdipWpAZP7mreUGGiz9aWK2sCz4x12rAXcVNtX5OFC0VFtUy4dsjqELa/dWKM0Kha88QnprgUSYxobmvFeVEtz5mu1JTuSBMQQNyMBqaMr8+5oqK8BD1coOZaIOoFWd3nvhrpQylodCQsDavrWrUk4YSJn3w==";STUDY_INFO="[email protected]|8|1668085|1635669033430";NETEASE_WDA_UID=1668085#|#1399984756414;MOOC_PRIVACY_INFO_APPROVED=true;hasVolume=true;videoVolume=0.8;Hm_lpvt_77dc9a9d49448cf5e629e5bebaa5500b=1635672902', 'referer': 'https://www.icourse163.org/learn/NJU-1001571004?tid=1465787445', 'Content-Type': 'application/x-www-form-urlencoded' } response = requests.request("POST", url, headers=headers, data=payload) print(response.text) 提取视频地址接口

接下来就根据这两个参数取得视频地址

在这里插入图片描述 这里可以获得不同清晰度的数据,这个链接站点有变化,但没改cookie也可以,videoid和signature都在查询参数里,这是个GET请求 在这里插入图片描述 相应代码如下

import requests url = "https://vod.study.163.com/eds/api/v1/vod/video?videoId=1004247248&signature=59496a6f6d767a5a494e47484641684c54317530775056385467544f5869374c6b4263736153743464504b3133395767513450334f4a4b52486a71756663344577664546454d2b5668782b544c4e6f7a473147496a616f514f4849784339507a42346d394866466f54372f34335439684c44555652355339574c474478736b435470545764726a4378784c3561527a374c76742b45413d3d&clientType=1" payload='bizId=1270833705&bizType=1&contentType=1' headers = { 'edu-script-token': '7431f506d0ee4bb39c221e8175414474', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36', 'Origin': 'https://www.icourse163.org', 'sec-fetch-set': 'same-origin', 'sec-fetch-mode': 'cors', 'sec-fetch-dest': 'empty', 'Cookie': 'NTESSTUDYSI=7431f506d0ee4bb39c221e8175414474;EDUWEBDEVICE=3fd0255d74a74b07a8cabdf74ab12ea7;hb_MA-A976-948FFA05E931_source=www.baidu.com;Hm_lvt_77dc9a9d49448cf5e629e5bebaa5500b=1635668943;__yadk_uid=mYcTDWTWoGoLzWXqoriGTcPsGdPtAXsI;WM_NI=%2F%2B0nXcI9jEcRUkPNcwhqvjtQQWBa%2B%2BfcLZ%2FsQPaAqztbF1CSmP1z9MDXjFVS6wFkCX7Ckc8zHFmQRgjppwExBgrYHIjTaU5Q3G%2BHNfGikQk9ujER3PJVqmyZwWAcK40%2BMnc%3D;WM_NIKE=9ca17ae2e6ffcda170e2e6eeb4ef73b1a7ad82bb73a3eb8ea3d45b929f9faff4658987b7b0ed3fe9be97aeea2af0fea7c3b92aedf5008fdb698be7a6a6e25a97b5a0afe27dacafba8bf75b93898e82aa21a6bd84bbae799390afa2f472b8be8ad2c259af90ff9bbc478888a6a7d559f6a98a8cc254f59da584bb728c9aa3b2d16daab0c098c87482b9bebacb43aa8cafb6b85bf199e5a9cd6e85b7a5b2ea33b7b68bb3b25c8a8abf8efc52b5898f84ca40f4f5838fe237e2a3;WM_TID=FMemxP1w3M5BQBRVBQJ%2B5LNifztqPNYh;STUDY_WTR="dm/R7gNnvojJoVsvC61fnLXO75a/qk5IHIKQrU+xinRJxLKAIqhy1eX9BljqSXcUuelHydQDC7xkboGVgAtcIK0dTXOBITAuRINrecku/H4=";NTES_YD_SESS=_SVIA7Fj2_UcQFLVBuKLqQL1MC1Nu90N1Ivn1Yy57nhNfD7CfFQYXmxNTFV4wL0Ij4xao7EJC_VdhaG8fScdSOn0538a8gvkuX.1Cz8GBkrZg__8cNI7zBG7pnxdYy3xgPvLVhLDRZlr_gs7N573At2QeL1W7xQSb0srowkg0uxQO6JexvVePiQUlQmncRTJkpGdA7qiSI8Ryzv_4baa847pByqe.T2hN.wdWUMADyu9E;S_INFO=1635669032|0|0&60##|;P_INFO=|1635669032|1|imooc|00&99|null&null&null#jis&320600#10#0|&0||17701720613;STUDY_SESS="1DPCVw/hWauGD5psx4uGfs8e64IPoBO70JhuXWh0BwBfFtL/cBubuYsmhWvdipWpAZP7mreUGGiz9aWK2sCz4x12rAXcVNtX5OFC0VFtUy4dsjqELa/dWKM0Kha88QnprgUSYxobmvFeVEtz5mu1JTuSBMQQNyMBqaMr8+5oqK8BD1coOZaIOoFWd3nvhrpQylodCQsDavrWrUk4YSJn3w==";STUDY_INFO="[email protected]|8|1668085|1635669033430";NETEASE_WDA_UID=1668085#|#1399984756414;MOOC_PRIVACY_INFO_APPROVED=true;hasVolume=true;videoVolume=0.8;Hm_lpvt_77dc9a9d49448cf5e629e5bebaa5500b=1635672902', 'referer': 'https://www.icourse163.org/learn/NJU-1001571004?tid=1465787445', 'Content-Type': 'application/x-www-form-urlencoded' } response = requests.request("GET", url, headers=headers, data=payload) print(response.text)

结果是json文件,只要找到这个数据位置就可以提取视频链接,而且视频连接可以直接访问下载视频

contentType对提取的影响

我们再找一门有讨论的 在这里插入图片描述 可以发现,讨论的contenttype为6,pdf为3,视频为1,这个可以用来区分提取的类型,分别执行pdf函数和视频的函数,这个name参数第一个课程都是PDF,不靠谱,如果以后全课程下载的话建议自定义 在这里插入图片描述 提取层次是章节到课程到单元,作业和测试是和课程并列的项目,所以不需要考虑 在这里插入图片描述 在这里插入图片描述

总结提取的步骤

1.先打开你的Charles,做好设置 2.打开浏览器登录中国大学mooc 3.然后进去课程课件列表页面,取得第一个接口,循环chapters的子项目,读取units子项目中的id与类型 3.1 contentType是PDF的,取他的contentid通过下载接口获取下载地址 3.2 如果是视频的,提取id,用接口获取videoid和signature,再通过这两个参数获取视频下载地址 3.3如果是别的那就不处理。 4.文件名称也要提取出来,通过读取下载地址取得数据保存到文件就是完整的课程了。

小结

具体的代码这里不写了,算法主要是在第一个课程列表数据的基础上做循环,读取id和内容类型,提取后面的数据。 建议是只要读取到了数据就将链接和名字,文件类型保存下来,最后集中下载,以免卡顿失败。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3