wget .vs curl使用linux

时间:2012-02-23 08:07:46

标签: linux curl wget

我正在使用wget / curl在linux上运行测试。我可以让wget运行,但我不能对curl做同样的事情。

wget版本:

 wget -v -O osu.tst  -U 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.6) Gecko/20070802 SeaMonkey/1.1.4'  'http://ohiostate.bncollege.com/webapp/wcs/stores/servlet/TBListView?catalogId=10001&storeId=33552&termMapping=N&courseXml=<?xml version="1.0" encoding="UTF-8"?><textbookorder><courses><course dept="CHEM" num="100" sect="16030" term="S12" /></courses></textbookorder> '

curl版本:

curl -v -b fftfcook -A "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.6) Gecko/20070802 SeaMonkey/1.1.4" -L  "http://ohiostate.bncollege.com/webapp/wcs/stores/servlet/TBListView?catalogId=10001&storeId=33552&termMapping=N&courseXml=<?xml version="1.0" encoding="UTF-8"?><textbookorder><courses><course dept="CHEM" num="100" sect="16030" term="S12" /></courses></textbookorder>"

curl返回内容的部分页面,而wget获取浏览器生成的内容。我试图修改cookie / etc ..但是wget是一个直接的“获取”,因此它应该在curl中作为直接获取。用户代理设置为相同...

任何指针都会有所帮助。

1 个答案:

答案 0 :(得分:3)

问题似乎是GET数据不是URL编码的。在没有这种编码的情况下,只有一组有限的字符可以出现在URL或GET数据中,但是当输入浏览器的地址栏时,浏览器通常会为您处理此问题。

不是将GET数据添加到URL的末尾,而是为每个值使用-d--data-urlencode选项,并传递-G选项将这些视为GET数据。所以你最终会得到以下结论:

curl -v -b fftfcook -A "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.6) Gecko/20070802 SeaMonkey/1.1.4" -L  'http://ohiostate.bncollege.com/webapp/wcs/stores/servlet/TBListView' -G -d 'catalogId=10001' -d 'storeId=33552' -d 'termMapping=N' --data-urlencode 'courseXml=<?xml version="1.0" encoding="UTF-8"?><textbookorder><courses><course dept="CHEM" num="100" sect="16030" term="S12" /></courses></textbookorder>'

各种-d--data-urlencode选项将连接在一起,以形成URL上的GET数据。另请注意从双引号到单引号的更改,以防止表单数据中的双引号导致问题。