无聊写了一个小米网盘服务的命令行终端 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
wangbenjun5
V2EX    程序员

无聊写了一个小米网盘服务的命令行终端

  •  3
     
  •   wangbenjun5 2020-09-22 22:04:11 +08:00 5761 次点击
    这是一个创建于 1912 天前的主题,其中的信息可能已经有所发展或是发生改变。

    众所周知,小米手机自带一个云服务,云服务里面有一个网盘功能,其实这个网盘最早是快盘,后来被小米收购了应该。

    这个网盘类似百度云网盘,但是不能对外分享,可以算是私有网盘,但是其 PC 客户端比较垃圾,是采用祖传 chrome 套壳,node 写的,效率可想而知,于是乎我就抓了小米云服务网页版( https://i.mi.com/drive#/all )的接口写个命令行终端。

    采用 100% Golang 编写,目前实现了,上传、下载、创建目录等功能,上传和下载支持异步批量模式,效率还是非常高滴!

    Go@MiCloud:$ NAME: main - MiCloud Third Party Console Client Written By Golang USAGE: main command [command options] [arguments...] COMMANDS: login 登录小米云服务账号 ls 列表当前目录所有文件和文件夹 download 下载文件或者文件夹 cd 改变当前目录,例如:cd movies upload 上传文件或者文件夹 share 获取一个公共分享链接 rm 删除文件或者文件夹,即放入回收站 mkdir 创建目录 tree 打印树型目录结构 jobs 展示后台当前所有下载和上传任务 help, h Shows a list of commands or help for one command OPTIONS: --help, -h show help (default: false) --version, -v print the version (default: false) 

    其中有一个独家功能(命令 share ),可以把网盘里面的文件生成一个公开的分享链接,提供给非小米登录用户下载,变相实现共享功能,小米这个网盘比百度云快多了,下载基本上能达到慢速。

    感兴趣的可以试试!

    https://github.com/wangbjun/go-micloud/blob/master/README.md

    试用可点击下载编译好的执行文件: https://github.com/wangbjun/go-micloud/releases/tag/1.2

    第 1 条附言    2020-09-23 16:34:00 +08:00
    刚小米的童鞋找到要了个小米 ID,给我送了 2 年钻石会员……感谢!
    本人算是骨灰米粉了,去年就弄了第一个版本,后来过了很久没搞,最近想起来又接着搞了,一方面是自己有这个需求,小米没什么好用的客户端,另一方面也是为了练练 golang 开发。
    如果非要说小米这个网盘优点,只有一个: 速度比较快,我家 200M 的电信网速可以拉满……


    号外,小米的童鞋告诉我他们已经有 Windows 工程师了,估计未来不久原生客户端就会推出了。
    第 2 条附言    2020-09-26 18:26:22 +08:00
    最新的版本新增了相册下载功能,可以下载小米手机云服务所有相册,便于本地备份:

    https://github.com/wangbjun/go-micloud/releases/tag/1.3
    47 条回复    2020-09-26 18:26:32 +08:00
    madpecker009
        1
    madpecker009  
       2020-09-22 22:09:51 +08:00
    大佬牛逼
    wangbenjun5
        2
    wangbenjun5  
    OP
       2020-09-22 22:15:28 +08:00
    关于这个登录功能,说明一下,我是完全抓的网页端的登录接口,这块比较复杂,目前实现了登录一次,永久有效。

    用户名和密码被保存在默认~/.micloud.json 文件里面,密码是加密过的,保证用户信息安全!
    Lemon305
        3
    Lemon305  
       2020-09-22 22:59:44 +08:00
    Mac 测试可用,大佬牛逼
    lxk11153
        4
    lxk11153  
       2020-09-22 23:14:56 +08:00
    有 baidupcs-go 那味了
    EricXuu
        5
    EricXuu  
       2020-09-22 23:26:35 +08:00
    大佬,请教一下这种接口抓取有什么技巧么?不会是 network 面板一个个试出来的吧
    dai640
        6
    dai640  
       2020-09-23 00:31:21 +08:00   1
    小米前段时间好像还有 70 年产权的网盘售卖,如果当时小米的营销早看到 LZ 的这个项目估计会大卖了。
    solider245
        7
    solider245  
       2020-09-23 06:52:33 +08:00
    大佬牛逼!有空把华为网盘也弄弄,这个估计人群更大!
    a5b6c7d8
        8
    a5b6c7d8  
       2020-09-23 07:23:59 +08:00 via Android
    真不错 原来还可以这么玩啊
    Rxianbei
        9
    Rxianbei  
       2020-09-23 07:59:33 +08:00 via Android   6
    @solider245 别把人往火坑里推啊兄弟,弄华为是要付出代价的啊
    kokutou
        10
    kokutou  
       2020-09-23 08:18:55 +08:00 via Android
    @solider245
    华为估计看到就直接律师函警告。。。
    liukangxu
        11
    liukangxu  
       2020-09-23 08:28:30 +08:00
    @kokutou 律师函?那是南山必胜客的玩法,牢厂自然是 251 走起
    zhiiker
        12
    zhiiker  
       2020-09-23 08:47:02 +08:00 via Android
    不错的项目,感谢楼主
    SvenKim
        13
    SvenKim  
       2020-09-23 09:10:34 +08:00
    挺有意思的项目,感谢楼主
    wangbenjun5
        14
    wangbenjun5  
    OP
       2020-09-23 09:23:32 +08:00 via Android
    @techxiu224 感谢支持
    wangbenjun5
        15
    wangbenjun5  
    OP
       2020-09-23 09:24:04 +08:00 via Android
    @lxk11153 灵感来自这个项目,哈哈
    wangbenjun5
        16
    wangbenjun5  
    OP
       2020-09-23 09:24:50 +08:00 via Android   1
    @EricXuu 没啥技巧,就是分析小米的接口,小米的登录还算简单,就是跳转有点多,不需要图形验证码,有一个手机号验证码
    wangbenjun5
        17
    wangbenjun5  
    OP
       2020-09-23 09:25:18 +08:00 via Android
    @solider245 我是米粉,哈哈
    edk24
        18
    edk24  
       2020-09-23 09:33:56 +08:00
    大佬再封装个 mv, 哈哈 改名字移动文件应该都比较常用的
    godcc
        19
    godcc  
       2020-09-23 09:39:29 +08:00
    大佬牛逼
    xishijt
      &nbp; 20
    xishijt  
       2020-09-23 09:45:01 +08:00
    5g 的盘有啥好折腾的
    mengzhexin
        21
    mengzhexin  
       2020-09-23 10:10:46 +08:00 via Android
    @xishijt 开会员啊,比百度便宜
    wangbenjun5
        22
    wangbenjun5  
    OP
       2020-09-23 10:13:36 +08:00 via Android
    @xishijt 作为米粉肯定是要买会员的,白金好像是 200GB,其实并不贵。小米这个云盘和小米云服务一体的,比如同步手机照片,联系人等等。如果文件不多,放在上面还是挺靠谱的,安全可靠。
    wangbenjun5
        23
    wangbenjun5  
    OP
       2020-09-23 10:14:14 +08:00 via Android
    @edk24 好的,后续加上
    mahone3297
        24
    mahone3297  
       2020-09-23 10:50:49 +08:00
    我想要数据自动同步的功能。比如,本地 a 添加,自动同步到云。自动同步到本地 b
    现在在用微云
    百度网盘,可能为了数据安全,在云端删除,本地不会删。本地删除,云端好像也不会删。只有添加,会自动同步。

    要实现上面的需求,lz 估计要写点代码,实现该需求

    大家有这样的需求吗?是如何解决的?
    renmu123
        25
    renmu123  
       2020-09-23 11:03:01 +08:00 via Android
    @mahone3297 这是 onedrive 杀手级功能
    wangbenjun5
        26
    wangbenjun5  
    OP
       2020-09-23 11:03:33 +08:00 via Android
    @mahone3297 你说的就是同步盘功能,类似坚果云和百度云这样的专业网盘。这块功能其实有考虑,之前小米有一个 PC 端,但是做的比较差劲,是用 js 写的,我的最终目标就是实现同步盘功能,下一步计划就做
    solider245
        27
    solider245  
       2020-09-23 11:08:36 +08:00
    @kokutou 这个不涉及到盗用,你做个客户端,相当于是帮他宣传,完全没问题呀。
    @mahone3297 你这个需求最好是自己搭,要方便不少。
    @xishijt 5G 放文件应该挺方便了吧?
    kutear
        28
    kutear  
       2020-09-23 11:16:42 +08:00
    最想要的还是微云的 cli
    lepig
        29
    lepig  
       2020-09-23 11:18:25 +08:00
    感谢分享,一直想写个这种东西。参考参考
    caqiko
        30
    caqiko  
       2020-09-23 11:34:29 +08:00
    大佬如果能整出一个 GUI 客户端就好了…CLI 用起来还是不方便啊

    现在用的小米云服务官方客户端,主要用一个便签同步功能…
    lepig
        31
    lepig  
       2020-09-23 11:36:29 +08:00
    命令行登录成功以后 咋退出啊?
    撸个 exit 或者 quit 命令啊
    wangbenjun5
        32
    wangbenjun5  
    OP
       2020-09-23 11:36:58 +08:00 via Android
    @caqiko gui 太难了,我不会,以前想过用 qt 写,但是对 c++又不熟,放弃了,所以就整了个命令行版本
    wangbenjun5
        33
    wangbenjun5  
    OP
       2020-09-23 11:37:25 +08:00 via Android
    @lepig 目前是 Ctrl + d……
    lepig
        34
    lepig  
       2020-09-23 11:40:29 +08:00
    @wangbenjun5 好的 谢谢
    caqiko
        35
    caqiko  
       2020-09-23 11:43:53 +08:00
    share 命令返回一个链接,复制到浏览器好像下载不了

    #获取分享成功,有效期 24 小时,复制链接( http://t.wibliss.com?t=64fnl )到浏览器里面打开下载,请注意浏览器弹框!
    caqiko
        36
    caqiko  
       2020-09-23 11:44:37 +08:00
    @caqiko 可以下载了…
    xylophone21
        37
    xylophone21  
       2020-09-23 11:49:29 +08:00
    @renmu123 现在已经不流行 dropbox 了吗?
    yumenawei
        38
    yumenawei  
       2020-09-23 11:50:05 +08:00
    @caqiko #35 我打开连接可以下载啊,是个 .ps1 的文件
    wangbenjun5
        39
    wangbenjun5  
    OP
       2020-09-23 11:53:35 +08:00 via Android
    @caqiko 这个下载是弹框,很多浏览器会阻止,需要允许
    jasonqiao36
        40
    jasonqiao36  
       2020-09-23 12:22:49 +08:00
    能下载云相册里面的照片吗
    wangbenjun5
        41
    wangbenjun5  
    OP
       2020-09-23 13:33:06 +08:00 via Android
    @jasonqiao36 暂时没有这个功能,后期准备加个
    jasonqiao36
        42
    jasonqiao36  
       2020-09-23 14:27:11 +08:00
    @wangbenjun5 #41 给你点个 star, 持续关注
    breezeFP
        43
    breezeFP  
       2020-09-23 14:54:13 +08:00
    工作不饱和啊
    baobao1270
        44
    baobao1270  
       2020-09-23 15:22:40 +08:00
    楼主可以编译出一个 DLL,把 API 暴漏出来吗
    这样我可以做个 Windows 下的图形客户端出来
    wangbenjun5
        45
    wangbenjun5  
    OP
       2020-09-23 16:25:31 +08:00 via Android
    @baobao1270 不会编译,不过你要做 Windows 客户端也不难,小米的接口很简单,主要是登录,登录完成之后有一个 token,带着 token 就行了
    yingqi7
        46
    yingqi7  
       2020-09-23 16:57:56 +08:00 via iPhone
    @liukangxu 自己人才 251,外人直接律师函一条龙服务
    wangbenjun5
        47
    wangbenjun5  
    OP
       2020-09-26 18:26:32 +08:00
    最新的版本新增了相册下载功能,可以下载小米手机云服务所有相册,便于本地备份:

    https://github.com/wangbjun/go-micloud/releases/tag/1.3
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5234 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 33ms UTC 05:51 PVG 13:51 LAX 21:51 JFK 0:51
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86