2012-01-06 136 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系统上有特殊含义。