使用 Electron 破解 115 网盘的登录限制

作者前段时间趁 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 不只有 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--

Comments