开端
事情是这样的,我打算做一个不用番强就能下载谷歌浏览器插件的网站。
为了保证下载速度,我需要先把谷歌浏览器应用商店的所有插件,先保存下来。
弄了好几天之后,终于把这些插件都下载到自己的硬盘里了。关于怎么下载所有的插件,以后再写哈
好家伙,我一看,总共两百多个G,差不多七万多个文件。
我的服务器空间总共才50G,肯定是放不下的。
要是放到oss上,每个月流量也是得花钱的。
于是我就想到了城通网盘,因为我是这个网盘的会员。
费了一番功夫之后,把这些插件都传到城通网盘了。
接下来的工作就是获取这些文件的下载链接了。
放个截图,可以看到这个文件夹内有三万多个文件。
要是通过手工操作,挨个去获取文件的下载地址那是绝对不可能的。
既然不可能手工操作,那有啥简单的方法呢?
我先想到官方有没有提供API来获取文件地址,于是我就问了客服。
客服说:没有。
既然官方没有提供,那就只能自己动手了!
编写脚本
我能想到的思路:
- 用puppeteer。用这个自动化测试浏览器进行登录,然后编写脚本
- 破解城通网盘的接口参数,用Python模拟请求
- 写个油猴子脚本
方法1是可行的,但是puppeteer太重了,有种杀鸡用牛刀的感觉。
方法2速度最快,但是得破解人家的接口参数,这个得费一番功夫,不值得。
最后选择了方法3,这个是最简单方便的。
那就开始写呗!
首先新建一个脚本
修改如下内容
脚本新建完之后,如果想让它在指定的网站生效,需要修改配置项中的match
另外我觉得油猴子自带的编辑器写代码很不方便,所以我把js文件地址映射到我本地了。关于映射本地文件的方法,可以点击左边的文字链接
这样就可以电脑上的编辑器写代码了,写完之后保存、刷新页面就能看到最新的效果,非常的方便!
脚本内容
在城通网盘的页面,进入控制台,搜索一下”jquery”,可以看到它是引用了jquery了的。
有了jquery,操作dom和发送ajax请求都很方便。
如果页面中没有jquery,也可以自己引入,在脚本头部添加:
// @require https://cdn.jsdelivr.net/npm/jquery@3.2.1/dist/jquery.min.js
下面是完整的代码截图,代码写的很简单,基本实现了想要的功能
在请求翻页的时候,我加了10秒的延时,这个时间也可以改小些,只要别太快就行。翻页操作太快,会被城通网盘屏蔽IP。
上面的js代码是获取文件的名字,ID,分享链接,并通过接口写入到数据库。
至于接口,我是用fastAPI来写的,非常的快!
接口代码
上面的代码仅供参考,我的js和Python都是半吊子水平……
在pycharm的终端中执行 uvicorn 文件名字:app –reload 就能把接口跑起来了
测试
登录城通网盘,进入到存放插件的文件夹,等待10秒之后,就可以看到脚本开始工作了,自动的翻页、发送ajax请求,把获取到的内容不断的写入到数据库中。
代码下载
上面的文字写的比较乱,如果您想看源码,可以这里下载:
以上就是获取大量城通网盘文件分享链接,并存入数据库的过程。
如果有什么问题,请在留言区批评指出!