忘机山人
我在不同电脑之间传输大文件的时候,喜欢使用懒猫网盘作为中转,相对于使用微信,邮箱传输来说,内网更加有安全保证,同时也比拔插移动硬盘更加方便,同时这些文件还能在懒猫微服上存一个备份,可以方便回溯。
于是现在有了一个新的需求,我在上海有一台DGX Spark,平时用来下载和推理模型,但是毕竟机器在国内,很多资源无法访问,wget 甚至只有可怜的几百K,而如果通过SSH/SCP等方式来做,DGX Spark所在环境的网络带宽很小,所以速度不会比直接wget海外资源快多少。于是,既然上传到DGX Spark不行,那么我们就让它下载,而源站就是我们的懒猫微服。
如果在Windows和MacOS之间需要传输文件,我会在两台机器上分别都安装上懒猫网盘,然后通过一台机器上传,另一台下载,这样不需要写任何一行命令,也不需要配置共享文件夹,只需要鼠标拖拖拽拽就好。
如果两台机器登录的是相同账户,那么直接访问同一个文件夹即可;如果是家里人互相分享文件,由于每个人的网盘空间是独立的,那设置一个共享文件夹就好了,一个上传一个下载。
我的DGX Spark的情况有些特殊,由于端口和网络带宽的限制,只能通过SSH连接,所以就相当于一个Headless的服务器。美中不足的是,我不打算配置Spark的VNC桌面,这时候就没有网盘的图形界面供我下载了。

最简单的办法就是使用python -m http.server这种方式开启一个文件服务器,这个能够解决问题但是不优雅。
转念一想,如果把这个http server的功能集成到网盘里,网盘是不是就会有自带的http server呢?VIP群询问之后,就有了这个隐藏API。
把懒猫网盘当作文件服务器,Mac通过图形客户端访问,DGX Spark通过API访问。
首先给DGX Spark安装HClient,并且启动TUN模式。这样Spark的网络就和我的懒猫微服打通了,即使我的客户端、微服、Spark分别在三个地方,懒猫的组网也能无视距离,把相隔千里的三台机器网络打通。
sudo setcap cap_net_admin=ep ./hclient-cli-$os-$arch
./hclient-cli-$os-$arch -tun
关于Spark安装HClient的具体操作,可以看这篇介绍,也可以翻我之前的攻略(实在不好翻):
虽然协议是http,但是懒猫网盘的组网自带了加密,所以我们可以安全下载。
懒猫网盘的隐藏API格式如下:
https://file.微服名.heiyu.space/_lzc/files/home/文件路径
文件路径就是在网盘里看到的路径,不包括登录的用户名。以我的MP3为例:
https://file.微服名.heiyu.space/_lzc/files/home/music/1.mp3
当然懒猫网盘默认是带Single Sign On认证的,所以我们的API要绕过这一层,一般来说是JWT token或者Cookies。而在浏览器的环境下,请求会自动携带Cookies完成和服务端的认证,但是在Headless的环境下,我们就得手动注入了。

在Web端完成登录之后,我们去浏览器抓凭证:
HC-Auth-Token的值
示例:HC-Auth-Token=your-token-here
回到DGX Spark上,使用命令行进行从懒猫网盘进行下载。
假设网盘上的文件路径是:
music/第1天-正念基础_进入当下.mp3
那么完整的文件URL是:
https://file.微服名.heiyu.space/_lzc/files/home/music/第1天-正念基础_进入当下.mp3
注意:中文会在http的链接中被转义,这点不必过分担心。
wget --no-check-certificate \
--header="Cookie: HC-Auth-Token=your-token-here" \
"https://file.micro.heiyu.space/_lzc/files/home/music/%E7%AC%AC1%E5%A4%A9-%E6%AD%A3%E5%BF%B5%E5%9F%BA%E7%A1%80_%E8%BF%9B%E5%85%A5%E5%BD%93%E4%B8%8B.mp3" \
-O "第1天-正念基础_进入当下.mp3"
参数说明:
--no-check-certificate:跳过SSL证书验证--header:添加Cookie认证头-O:指定保存的文件名curl -k -L \
-H "Cookie: HC-Auth-Token=your-token-here" \
"https://file.micro.heiyu.space/_lzc/files/home/music/%E7%AC%AC1%E5%A4%A9-%E6%AD%A3%E5%BF%B5%E5%9F%BA%E7%A1%80_%E8%BF%9B%E5%85%A5%E5%BD%93%E4%B8%8B.mp3" \
-o "第1天-正念基础_进入当下.mp3"
参数说明:
-k:跳过SSL证书验证-L:跟随重定向-H:添加Cookie认证头-o:指定保存的文件名curl -k -L \
--cookie "HC-Auth-Token=your-token-here" \
"https://file.micro.heiyu.space/_lzc/files/home/music/%E7%AC%AC1%E5%A4%A9-%E6%AD%A3%E5%BF%B5%E5%9F%BA%E7%A1%80_%E8%BF%9B%E5%85%A5%E5%BD%93%E4%B8%8B.mp3" \
-o "第1天-正念基础_进入当下.mp3"
参数说明:
--cookie:直接传递Cookie值,比-H方式更简洁通过懒猫网盘的隐藏API /_lzc/files/,我们可以轻松在DGX Spark上实现Headless方式的文件下载。起码在国内的宽带环境里,用下载的高吞吐量来规避了某些情况上传带宽限速的条件。
核心要点:
https://file.微服名.heiyu.space/_lzc/files/home/文件路径HC-Auth-Token进行身份验证一行命令配合Cookie认证,即可实现远程文件下载,
关于七层网络还有很多类似的小技巧,我们一起通过懒猫微服来玩。
评论
0暂无评论