Connection

保持連接打開

  • September 20, 2012

我是 cURL 的新手,我正在嘗試做一些相當簡單的事情。我想在幾個小時內定期登錄伺服器並下載數據。

首先,我登錄到伺服器 - 我通過發布登錄值來管理它,如下所示:

curl -v -c I:\ccookiejar.txt -d "user=me&password=whatever&Login=submit" http://www.website.com/login_p.asp -o I:\curltest.htm

其次,我想下載一個 html 數據頁面(我不擔心重複執行此操作的程式碼;目前,只需一次就可以了)我想像這樣的東西,包括會話的 cookie 來拯救我每次登錄。

curl -v -c I:\ccookiejar.txt "http://www.website.com/equities/quotes.asp?refRate=&levels=&Symbol=abc&type=2&v.x=33&v.y=16" -o I:\curltest2.htm

但這不能作為單獨的命令使用。似乎是因為 cURL 關閉了連接?

當我將要下載的數據的 url 包含在與登錄 url 相同的命令中時,它可以正常工作,並且我得到了兩個帶有我期望的數據類型的 htm 文件輸出。

我在第二個例子中犯了錯誤嗎?有沒有其他方法可以讓我不必登錄網站數百次才能使用第一種方法下載我的數據?

報價頁面是否在網站的密碼保護區域?如果是這樣,不是 -c 創建一個新的 cookie 文件嗎?您不想用-b 載入cookie 文件嗎?我不熟悉 curl 命令行,但開發了一些使用 curl multi 的腳本。你可能有一個簡單的 php 腳本,只需幾美元就可以讓你硬編碼你的登錄並通過,然後只需將其設置為 cron 腳本,以根據你的需要經常執行。

如果您的意思是在登錄頁面上的表單中輸入使用者名和密碼,則 cURL 可以“送出”該表單,例如:

curl -d "username=yourusername&password=yourpassword" http://yourweb.com/login

如果你想儲存返回的 cookie,你可以指定一個 cookie 文件:

curl -c cookies.txt -d "username=yourusername&password=yourpassword" http://yourweb.com/login

並在以後的請求中使用這些 cookie:

curl -b cookies.txt -d "username=yourusername&password=yourpassword" http://yourweb.com/login

或者如果您想同時發送和接收 cookie,則兩者都做:

curl -b cookies.txt -c cookies.txt -d "username=yourusername&password=yourpassword" http://yourweb.com/login

引用自:https://serverfault.com/questions/353298