【问题标题】:Using curl to receive and send cookies, but not getting expected response使用 curl 接收和发送 cookie,但没有得到预期的响应
【发布时间】:2012-02-04 03:49:32
【问题描述】:

相关问题:Set session to scrape page

作为一个个人项目,我正在尝试抓取我大学的课程目录,以将其作为 RESTful API 提供。

网址1:https://duapp3.drexel.edu/webtms_du/

网址2: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 添加另一个参数吗?

【问题讨论】:

  • 您是否在第二个请求中包含第一个请求的 cookie?
  • @nikc.org 我是。最初,当我不是时,返回的页面有一条消息说“无效的参数......”。现在它返回但没有课程列表,所以我认为 cookie 运行良好
  • 也许是一个愚蠢的问题,但是在命令行中,您是否将 url 放在引号中?未引用时(在后台运行),& 符号具有特殊含义。我可以得到课程列表就好了。
  • gah,这可能是问题所在。我没有使用引号
  • @nikc.org:确实,这就是问题所在。小心将其发布为答案,以便我接受

标签: http curl https


【解决方案1】:

在命令行上使用 curl 时,如果 url 包含与号 (&),则必须将其括在引号中,因为它在 unix 系统上具有特殊含义。

【讨论】:

    猜你喜欢
    • 2013-06-01
    • 2016-01-09
    • 2014-05-14
    • 1970-01-01
    • 2021-06-30
    • 2013-01-17
    • 2018-11-23
    • 1970-01-01
    • 2014-12-30
    相关资源
    最近更新 更多