用freeshell提取自己百度云中一个压缩包里的文件

今天把一个很大的压缩包转存到了我的百度云网盘,但是压缩包里只有少数几个小文件是我所需要的。在寝室下载压缩包不但需要很长时间,而且会把网络带宽占满,影响自己和室友使用网络。于是我打算用freeshell(我们学校LUG社团提供的免费Linux主机)下载这个压缩包,在远程主机上解压文件,然后把需要的文件取回到自己的电脑。

Linux平台上没有百度云客户端。用别人提供的Linux百度云程序不仅需要现学,而且账号的安全性不能很好的保证。于是我决定用curl命令完全模拟自己电脑上网页版百度云的下载请求。

我用的是chrome浏览器。在网页版百度云的页面上按F12打开调试界面,切换到Network选项卡,点击下载文件,可以看到浏览器发出了很多个HTTP请求,其中一个请求是重定向到一个zip文件,如图所示:

chrome

在它上面点击右键,选择“Copy as cURL”,浏览器就会把这个请求写成一个Linux的curl命令语句,复制到剪贴板。

然后在Linux终端(通过ssh连接)粘贴这条语句,在命令最后加上“-o file.zip”。这个参数表示让curl程序把数据保存到file.zip这个文件中,而不是直接在终端输出。

由于curl语句中包含了和百度云登录状态有关的cookie字符串,这里就不贴截图了。

下载过程中可以看到下载的进度和速度等数据。学校的网速很快,下载很快就结束了。

我使用unzip命令解压这个文件:unzip file.zip -d ./zipfiles 其中-d参数表示解压到的目录。

之后我遇到了文件名中文乱码的问题,解压出的文件和目录名全是乱码,在网上搜索了很多方法但是都没有解决,我便采用了一种不太方便但是可以临时避开这个问题的方法:

把解压出来的文件临时转移到Apache服务器的目录中,在自己的电脑上访问这个目录,在浏览器中把编码方式改为GB2312,然后下载自己需要的那几个文件,最后把这个目录删除。

文件被取回到了自己的电脑上,经检查文件内容是完整的,可以正常使用。但是解压出的中文文件名乱码的问题我不知道怎么解决,如果你知道解决办法,麻烦在下面回复告诉我,不胜感激。

《用freeshell提取自己百度云中一个压缩包里的文件》有3个想法

  1. unzip 有个补丁可以通过 -I 和 -O 的选项来指定字符编码,实测有效。Ubuntu 和 Debian-testing 里面的 unzip 已经包含这个补丁。可以搜一下 unzip-iconv。
    openSUSE 有人说用 unzip-rcc 可以解决编码问题,实测无效。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注