2011-11-23 64 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