文章目录
作者前段时间趁 115 网盘买一送二的活动入了 3 年的年费 VIP,目前使用感觉良好,离线下载几乎是秒秒钟的事情,从网盘下载到本地也可以跑满本地的 100M 带宽。唯一一点不足的就是不能多个电脑端同时登录,于是作者尝试使用 Electron 来破解这个限制,发现效果还不错。
破解原理
115 网盘在电脑端的登录限制规则,跟 QQ 类似,也就是电脑端只能同时登录一台设备,电脑端包括 Windows 版,macOS 版和网页版,Windows 版或 macOS 版客户端其实就是一个浏览器,只是内部针对网页版集成了一些功能(例如批量下载)。类似这样的登录限制规则,绕过的方式也很简单,我们只要先通过账号密码登录的方式先获取到 Session ID 的相关数据,再通过某个工具将 Session ID 的数据直接用于登录即可。
因为网页版已经可以满足作者的日常使用,且抓包方便,我们直接使用网页版作为破解的平台,然后使用 Electron 将获取到的 Session ID 相关数据写到 Cookie 里面。以上就是作者这次使用的方案。
有两点需要注意:
- 115.com 的 Session ID 如果一段时间没有被使用,会失效,具体多长时间没有记录,但是作者有一次 3 天没有登录,Session ID 确实失效了;
- Session ID 毕竟是敏感数据,因此此方案可能只适用于自己多设备的使用,如果要分享给其他人使用,可能要考虑 Session ID 泄漏的风险;
115.com 的 Cookie 设置
115.com 的 Cookie 不只有 Session ID,还有其他的一些 key 和 value,这里我们不关注具体的含义,只要保证 Cookie 配置了必要的 key 和 value 后能正常使用 115 网盘的功能即可。经过作者的尝试,发现需要配置以下 3 个 Cookie 即可正常使用。
const cookies = [
{
url: 'https://115.com',
name: 'CID',
value: 'a37cc0a9bfc1c48a74ebf0ce0ff1b3fa',
domain: '.115.com',
path: '/',
},
{
url: 'https://115.com',
name: 'UID',
value: '593888198_A1_1593321415',
domain: '.115.com',
path: '/',
},
{
url: 'https://115.com',
name: 'SEID',
value: 'd43d3ec7fd0d459ad41a50c805b759a31b1dfaa7a2e56707980a630d36117b9ccef953d0f8b85761da6c7d40e582e4f84d7ff829de887b557647b26e',
domain: '.115.com',
path: '/',
}
]
代码实现
代码实现其实很简单,我们只要先创建 BrowserWindow 实例,然后通过 session.defaultSession.cookies.set
方法去设置 Cookie,最后调用 BrowserWindow 实例的 loadURL 方法去加载 115.com 即可。
部分示例代码如下:
const mainWindow = new BrowserWindow({
width: 1280,
height: 800,
})
for (let i = 0, length = cookies.length; i < length; i ++) {
const cookie = cookies[i]
try {
await session.defaultSession.cookies.set(cookie)
} catch (error) {
console.error(`set cookie error, cookie=${JSON.stringify(cookie)}, error=${error}`)
}
}
mainWindow.loadURL('https://115.com')
以上只是一部分关键代码,只提供思路,要真正用起来其实还有很多细节需要考虑,例如查看文件的下载进度等。作者实现的 fake-115 可以简单满足使用需求,但是也有很多细节要处理,今后有空有需求的话会考虑进一步完善。
完整代码可以参考作者的 GitHub:fake-115
本文链接:https://blog.wardchan.com/posts/fake-115-by-electron.html,参与评论 »
--EOF--
发表于 2020-08-09 13:33:43,并被添加「Electron, 115网盘」标签,最后修改于 2020-10-17 10:18:30。查看本文 Markdown 版本 »
Comments