2011-11-23 143 views
2

我想用curl下载文件。要做到这些,首先我必须登录才能下载文件。我正在尝试卷曲,但它不起作用。我看到了HTTP Headers,我不明白为什么它不起作用。任何帮助表示赞赏。 我使用的命令是:不能用curl下载文件

curl -A 'Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.4) Gecko/20091030 Gentoo Firefox/3.5.4' --referer http://www.sportstracklive.com/signin -d 'userCredentialsForm.userCredentials.email=USERNAME%40gmail.com&userCredentialsForm.userCredentials.password=PASSWROD&_target1=Login' https://www.sportstracklive.com/signin -c cook.txt -v > pepelu 

curl -A 'Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.4) Gecko/20091030 Gentoo Firefox/3.5.4' --referer http://www.sportstracklive.com/signin -b cook.txt -v http://www.sportstracklive.com/user/username > pepelu2 

回答

0

这对我来说工作正常。

curl -L -c trackcookie.txt -d '[email protected]&userCredentialsForm.userCredentials.password=flesk&_target1=Login' https://www.sportstracklive.com/signin > track.html 

如果你需要的任何其他页面在登录后,你必须使用-b trackcookie.txt

curl -L -b trackcookie.txt https://www.sportstracklive.com/user/pepelu > pepelu.html 

你总是需要-L选项登录到基于cookie的认证页面,因为一个cookie需要在任何html之前作为标题的一部分发送,所以需要重定向。 javascript写的例外,但这是另一章。

编辑:你是对的。毕竟我没有登录。登录正确的方法是:

curl -Lc trackcookie.txt http://www.sportstracklive.com/ > /dev/null 
curl -Lb trackcookie.txt -d '[email protected]&userCredentialsForm.userCredentials.password=flesk&_target1=Login' https://www.sportstracklive.com/signin > /dev/null 
curl -Lb trackcookie.txt http://www.sportstracklive.com/live/track/gpx?userid=31746 > mytracks.zip 

该Cookie实际上生活在你登出后,所以看起来它是这个序列服务器的请求,决定在cookie中的会话ID是否对应于一个有效的会话或不。在我登录之后,我使用在Firefox中设置的相同会话标识以curl下载压缩文件后,我发现了这一点,但只有这样。

+0

谢谢,但没有奏效。 – user650034

+0

如果您登录该页面。在右侧,如果您登录,则有3个选项:(Facebook应用程序,下载所有曲目(GPX格式)和查看所有曲目)。当我执行第二句来下载源代码时,我没有看到这些选项。好像我没有登录,请帮忙吗? – user650034

+0

@ user650034:你说得对。它没有工作,但我知道了。我以前没有遇到过这个特殊的登录方案。 – flesk