2012-01-06 135 views
2

相關問題:Set session to scrape page使用curl接收和發送的cookie,但沒有得到預期的響應

作爲一個個人項目,我想我刮大學的課程目錄提供它作爲一個RESTful API。

URL1:https://duapp3.drexel.edu/webtms_du/

URL2:https://duapp3.drexel.edu/webtms_du/Colleges.asp?Term=201125&univ=DREX

要URL1設置這是需要URL2的cookie。我成功地接收和發送的cookie這樣的:

curl -c recd url1
curl -v -b recd url2

然而,迴應我從一個我在瀏覽器中看到不同。基本上,我的瀏覽器顯示我的專業列表,而curl得到一個頁面,而不是專業的名單,它具有

<FONT COLOR=red size=5> The lists of subjects are not available online for the selected term at this time.</FONT><FONT COLOR=red size=5> Please check back again later.</FONT>

我想也許他們是檢查用戶代理,所以我想這是好:

curl -b recdcookies --user-agent "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)" https://duapp3.drexel.edu/webtms_du/Colleges.asp?Term=201125&univ=DREX

但同樣意外的響應。

什麼導致瀏覽器和curl之間的不同輸出?據curl -v顯示,它只設置一個cookie。是否因爲他們是https頁面,我需要爲curl添加另一個參數?

+0

您是否在第二個請求中包含來自第一個請求的cookie? – 2012-01-06 12:04:28

+0

@ nikc.org我是。最初當我不是,返回的頁面有一個消息說'無效的論點......'。現在它返回,但沒有課程列表,所以我認爲餅乾沒有問題 – xbonez 2012-01-06 12:06:39

+0

也許一個愚蠢的問題,但在命令行上,你把網址放在引號中?無引號(在後臺運行)時,和號具有特殊含義。我可以很好地獲得課程列表。 – 2012-01-06 12:09:29

回答

3

在命令行上使用curl時,如果URL包含&符號(&),則必須將引號括起來,因爲它在unix系統上有特殊含義。