wget 和编码的 URL

mel*_*lmi 13 wget

我有一个这样的网址:

http://dl.minitoons.ir/longs/Khumba (2013) [EN] [BR-Rip 720p] - [www.minitoons.ir].rar
Run Code Online (Sandbox Code Playgroud)

我想使用wget. 如果我直接将其传递给wget,则一切顺利。但是我的情况是我只有下载 URL 的编码版本。如果我将上述 URL 的编码版本传递给wget,则会引发以下错误:

$ wget "http%3A%2F%2Fdl.minitoons.ir%2Flongs%2FKhumba%20(2013)%20%5BEN%5D%20%5BBR-Rip%20720p%5D%20-%20%5Bwww.minitoons.ir%5D.rar"
wget: unable to resolve host address `http://dl.minitoons.ir/longs/khumba (2013) [en] [br-rip 720p] - [www.minitoons.ir].rar'
Run Code Online (Sandbox Code Playgroud)

请注意,wget更改了 URL 的大小写(例如Khumba更改为khumba)。我应该怎么做才能解决这个问题?

Wil*_*ilf 20

由于这很烦人,因此有各种可用的转换器 - 例如这个站点。您可以使用这些来解码 URL - 因此它将转换为:

http%3A%2F%2Fdl.minitoons.ir%2Flongs%2FKhumba%20(2013)%20%5BEN%5D%20%5BBR-Rip%20720p%5D%20-%20%5Bwww.minitoons.ir%5D.rar
Run Code Online (Sandbox Code Playgroud)

到:

http://dl.minitoons.ir/longs/Khumba (2013) [EN] [BR-Rip 720p] - [www.minitoons.ir].rar
Run Code Online (Sandbox Code Playgroud)

虽然有一个命令行版本会很好......

编辑:

找到一个命令行版本 - 基本上:

echo "http%3A%2F%2F-REST-OF-URL" | sed -e's/%\([0-9A-F][0-9A-F]\)/\\\\\x\1/g' | xargs echo -e
Run Code Online (Sandbox Code Playgroud)

这可以在这样的脚本中实现以解码 URL:

#!/bin/bash
echo "$@" | sed -e's/%\([0-9A-F][0-9A-F]\)/\\\\\x\1/g' | xargs echo -e
exit
Run Code Online (Sandbox Code Playgroud)

如果保存并使其可执行,则效果很好。

还有这个脚本,它也将下载 UL:

#!/bin/bash
echo "$@" | sed -e's/%\([0-9A-F][0-9A-F]\)/\\\\\x\1/g' | xargs echo -e | wget -c -i -
exit
Run Code Online (Sandbox Code Playgroud)

注意,我认为 URL 所在的情况对于大多数站点来说并不重要 - 例如HTTP://WWW.UBUNTU.COM

  • `python -c '导入 urllib2; print urllib2.unquote("'${URL}'")'` 大致相同,如果您将 url 放在环境变量 URL 中。 (4认同)
  • 域的大小写通常不重要,但后面的情况可能是服务器使用区分大小写的路由或不将具有不同大小写的 URL 重定向到实际页面。举个例子:http://developer.android.com/reference/android/view/View.html 与 http://developer.android.com/reference/android/view/view.html。 (3认同)

g_p*_*g_p 7

你应该像这样使用它

wget "http://dl.minitoons.ir/longs/Khumba%20(2013)%20[EN]%20[BR-Rip%20720p]%20-%20[www.minitoons.ir].rar"`
Run Code Online (Sandbox Code Playgroud)

只需将每个空格替换为%20. 或者更好地复制您的原始链接并将其粘贴到 Chromium 浏览器地址栏中。它会自动为您格式化。现在将它从那里复制到您的终端。

  • 在某些情况下,此方法可能存在安全风险。如果您已经打开 Chromium,这可能是按下 `[Ctrl]+[Shift]+[J]`(对于开发控制台)并插入 `decodeURIComponent("your-decoded-URI")` 的最快方法。 (2认同)