当前位置: 首页> 推荐排行 >上古网盘长啥样?批量下载复古游戏资源

上古网盘长啥样?批量下载复古游戏资源

2022-05-13 14:23:39翻山越岭breakwall

最近买到一台复古掌机 周哥k101可以拿来玩fc、gba的游戏:

作者将游戏的rom全部放在一个上古网盘里:永硕E盘
可是该网盘不提供打包下载,需要一个一个手动下载
这怎么可以呢,我写了一个爬虫来打包下载网盘里的所有游戏

先来一张图:

再来看看官网:


是不是一股浓浓的2000年风格呢?
老游戏存在老网盘里 真的别有一番感觉!
突然就回想起小学去黑网吧玩红警的岁月(暴露年龄了~)

虽然网盘界面比较古老
但我发现这个网盘的技术非常厉害
一会分析代码的时候会详细说一下
毕竟是存活了将近二十年的网盘!


思路分析

刚开始我以为 这种老的网站,直接请求页面
然后解析出下载地址就可以
当我开始动手做才发现我天真

所有的文件数据都是通过AJAX得来

服务器有权限的验证

文件的下载地址是动态的 一段时间后会失效


这就意味着我们要分析里面的js请求
经过一段时间的抓包观察,我提取出两个api请求:

网盘服务器是通过参数:_dlmc 、mlbh来动态返回数据

_dlmc 网盘的id 例如fcnes就是fc吧网盘的id

mlbh 资源的id,例如ACT游戏的id是 1139186


知道这些之后思路就明确了:

第一个api请求列表页

解析列表页所有根目录分类的id

第二个api请求详情页

解析详情页中的文件名和下载地址

下载文件


部分代码

这里不全部讲解,主要说两个问题:

请求头的构造

文件的下载方式

所谓请求头就是headers cookies啦

用到了一个我写的爬虫小工具lazyspider
可以方便的帮我们从curl中解析出headerscookies

文件的下载

前两天一个小伙伴通过值乎问我怎么利用爬虫下载网上的pdf论文 
吐槽一下ios手续费!

这里就牵扯到一个数据的保存形式问题了
实际上数据在互联网里的都是通过二进制流的形式来传输的

所谓流文件在代码里可以理解为bytes类型
文本、图片、视频、音乐其本质都是二进制

所以无论什么的东西,都是可以下载的
requests模块里,我们这样用就行:

完整的代码可以去我的GitHub看,我就不贴上来了
代码是我在高铁上写的,稍微有点粗糙,
但实际上,永硕E盘的所有数据都能下载
只要找到对应的入口url就可以啦
有兴趣的小伙伴可以在我的代码上进行二次开发
还能做个网盘下载工具呢!

最后看一下成果

代码跑起来是这样的

最后下载好的游戏


另外资源我也上传到百度云了

后台回复fc游戏
就能获得百度云链接哟