10
12
2012
18

wget 下载云诺网盘文件

本文来自依云's Blog,转载请注明。

今天下载别人在云诺网盘上分享的文件,无奈网络太差,火狐才下了不到百分之一就认为下载完成了。每当这个时候,我便会祭出「中国特色网络」下的下载利器——wget。每当浏览器下不好文件时,wget 总会不屈不挠地一次次坚持,直到文件真正下载完成。

不过,这次对付云诺这个互联网友好发展的阻碍者时出现了问题。wget 总是下载到那个网页,即使指定 UserAgent 或者 Cookie 也没用。后来经过我不懈地尝试,发现指定Referer即可,例如:

wget --header 'Referer: http://s.yunio.com/xMliei' http://s.yunio.com/public/download/token/xMliei

另外,要取得正确的文件名,需要使用--content-disposition选项。不过,可能还需要使用ascii2uni -a J来处理百分号转义。下边是我的~/.wgetrc

# 不要乱转义中文
--restrict-file-names=nocontrol
# 使用重定向后的文件名
--trust-server-names=on
--content-disposition=on
Category: 网络 | Tags: wget 网络 | Read Count: 8646
maplebeats 说:
Oct 14, 2012 03:20:43 PM

wget明显不如aria2嘛。。。wget单线程已经让我受不了了

Avatar_small
依云 说:
Oct 14, 2012 03:48:52 PM

aria2 我还不怎么会用啊。

yx_wh 说:
Oct 15, 2012 07:35:00 PM

初见wget的时候完全没想到这是神器啊(笑)

偶扒站用的wget命令放在.zshrc里面:
alias wget1='wget -r -c -np --remote-encoding=en_US.utf-8 --local-encoding=en_US.utf-8'
alias wget2='wget1 --execute=http_proxy=localhost:8087 '

yx_wh 说:
Oct 15, 2012 07:40:38 PM

另外还想问个问题:zsh按ctrl+r可以上溯历史记录。能不能向下溯历史记录呢?(就是从最开始找起)

Avatar_small
依云 说:
Oct 15, 2012 09:18:11 PM

:-)
我的在自己的 wiki 里,查了好久文档才写好的:
wget -t 5 -Q 500m -nH -r -E -l inf -k -p -np URL

Avatar_small
依云 说:
Oct 15, 2012 09:21:13 PM

你可以先回到历史记录开头("^[<" beginning-of-buffer-or-history),再向下搜索("^S" history-incremental-search-forward,或者 ^Xs)。
注意要使用 ^S,需要关闭终端的流控制:stty -ixon 或者 setopt noflowcontrol(这个选项在 tmux 中有问题)。

lilo 说:
Oct 18, 2012 12:36:49 PM

为何说云诺是【互联网友好发展的阻碍者】?至少给我的感觉是云诺出linux下网盘客户端这一点就比国内某些公司友好些。

Avatar_small
依云 说:
Oct 18, 2012 01:30:17 PM

你想想,通过云诺给好友分享了一张截图。好友要看到这张截图需要怎么办呢?
首先,需要开启一个现代浏览器。这个一般还好。
其次,需要载入6个CSS文件和9个JavaScript文件。共计650KiB左右。网页设计的原则是,对用户重要的内容率先载入。而云诺,在载入这么多毫不相干的东西之后才会显示你真正需要的东西。而天朝的网络你懂的。
最后,不给出指向原始文件的 URL,不能直接使用下载工具下载。这不便于在脚本/命令行中使用。(比如你在安装 Linux 系统,需要网上的某个文件(比如辛辛苦苦找到别人分享的驱动补丁)才能进入图形界面。如果它在 dropbox 里,w3m 即可下载之。如果在云诺,除非你事先知道或者人脑解析网页代码,不然你没办法把东西下回来。)

yx_wh 说:
Oct 21, 2012 09:38:13 PM

谢了~
我试了半天才知道^[<是
alt+shift+<

sunus 说:
Nov 28, 2012 12:23:48 AM

嗨,我是来自python-cn和TJLUG的, 看到你这篇post.想起我已经用了有一段时间自己写的一点东西,就是为了解决wget和浏览器header/cookies配合的script.
在这,喜欢可以拿去用:) 迅雷离线/youtube测试完全没问题, 我用得最多的2项.
https://gist.github.com/4155207

Avatar_small
依云 说:
Nov 28, 2012 10:35:24 AM

这个不错,省得自己研究该怎么下载了。不过对迅雷快传有效吗,它好像是对不同的 IP 生成不同的下载地址的。
另外,youtube 之类的视频网站下载我用 you-get,挺好用的。https://github.com/soimort/you-get

sunus 说:
Nov 28, 2012 12:21:50 PM

这个不负责生成下载地址的,那是由cliwget负责的. 然后cliwget是根据浏览器的状态实时生成指令的, 所以应该是没问题的. 我用她快1个月了 ,还没出现bug.. 用Vim开文件主要是为了使用重命名等功能(修改wget的-O 参数)

Avatar_small
依云 说:
Nov 28, 2012 12:41:32 PM

我说的就是 cliwget 啦。改名什么的我直接在命令行上改就可以了。复杂的也可以直接调编辑器编辑。bash 按 ^X^E,zsh 要自己载入并绑定:
zle -N edit-command-line
bindkey '^X^E' edit-command-line

cckowin 说:
Oct 25, 2013 10:08:24 AM

wget的--content-disposition选项虽然能取得正确的文件名,但是和-c选项好像不能很好的配合。
wget的断点续传好像是通过url地址最后的文件名或者-O选项指定的文件名来判断的。
上次好不容易下载下来的一个文件,一续传又重头开始下载了。
不知道博主有没有好的解决办法。

Avatar_small
依云 说:
Oct 25, 2013 10:32:54 AM

咦,我还没注意到这个呢。一般比较大又需要续传的文件用 aria2c 下载就好啦=w=

cckowin 说:
Oct 25, 2013 10:43:19 AM

额,试试,用惯wget了,aria2c有类似--content-disposition的功能吗

Avatar_small
依云 说:
Oct 25, 2013 10:52:25 AM

不知道呢,好像用它下载的文件名都挺正确的样子。反正也就是个文件名啦,大不了自己手动改一下。

御宅暴君 说:
May 20, 2015 11:40:32 AM

现在云诺已经倒闭了。


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter

部分静态文件存储由又拍云存储提供。 | Theme: Aeros 2.0 by TheBuckmaker.com