[ Wget ] —— 下载“需要验证身份”的 NASA数据

NASA数据如果要用wget下载的话,会需要创建一个cookies进行验证,官方默认linux下的下载代码,忽略了windows平台。

比如:

https://disc.sci.gsfc.nasa.gov/daac-bin/FTPSubset.pl


选择好下载数据后。


会有下载提示,不过是linux下的。


直接把代码复制粘贴到 进入wget文件夹的 cmd里,并不能直接下载。因为你没有验证,也就是你没有.netrc文件。但是这是linux下,和window下不同。


下面我们把代码分析一下

----------

wget --load-cookies ~/.urs_cookies --save-cookies ~/.urs_cookies --auth-no-challenge=on --keep-session-cookies -i myfile.dat

----------

-i : 读取文件,后面是文件名。该文件必须放在wget文件夹下,跟wget.exe同文件夹。

myfile.dat 就是你批量保存的下载连接了。这里可以替换成任意可直接读取的文件,比如 .txt,.ini,等等等等。


-load-cookies ~/.urs_cookies --save-cookies ~/.urs_cookies

先说 -load-cookies ~/.urs_cookies,

上面图片中可以看出需要新建一个 urs_cookies文件用来存放后面生成的cookies。

urs_cookies前面的“ . ”在linux下值得是隐藏文件,在window下则只是一个文件。

~/在linux下指的是, ~为根目录

而~在window下可认为是无意义,不影响。而/ 在 windows下是根目录,也就是你的盘符。比如:D盘

所以在windows上运行时,会在盘符下生成一个cookies文件(.wget-hsts)。

所以这里代码可以修改的。把cookies换成当前文件夹下的txt文件也是可以的。下面会放出代。

 --save-cookies就是保存 cookies。


后面的代码不用管,都是网站自身所需要的,也不需要修改。感兴趣的可以超越wget说明文档。


下面我们来看看window下,如何增加用户名身份验证

---------------

NASA下载数据需要验证身份。采用

--http-user=用户名 --http-passwd=密码 

-------

在wget 1.14之前的版本,下载https网站的文件的时候,需要SSL验证。可以加上语句:

--no-check-certificat

wget 1.14之后的版本就不需要了。有人会问,window上的wget官方开发的不是到1.11就结束了吗?怎么会有 1.14之后的版本?

实际上到目前为止,官方的确在1.11之后就不开发window上的wget了,linux现在更新到1.19了。

但是网络上现在还存在 “个人编译版”的window上的wget,目前同步更新。

我这里就不难为大家了,直接粘贴上网站:

https://eternallybored.org/misc/wget/


厚道吧?记得感谢我哦~~~


-------------------------------------------------

综上所述

代码可以修改为:

wget -c --http-user=用户名 --http-passwd=用户密码 --load-cookies cookies.txt(cookies文件名,下同) --save-cookies cookies.txt --no-check-certificate --auth-no-challenge=on --keep-session-cookies --content-disposition -i myfile.dat(下载链接文件名)


这里多了一句:

--content-disposition  (当选中本地文件名时允许Content-Disposition头部)

必须要加,具体为啥暂时我不清楚,可能是选择了cookies.txt本地文件。 不管怎样必须要加。


基本上按照上面的格式,就能下载NASA验证类的下载了。


参考文献:

http://www.williamkyle.com.cn/archives/178.html

--------------

Author: yui

Data :2017.05.09









 
评论
热度(1)
 
回到顶部