linux - wget .vs curl 使用 linux

标签 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 获取浏览器生成的内容。我已经尝试修改 cookies/etc.. 但 wget 是一个直接的“get”,所以它应该在 curl 中作为一个直接的 get 工作。用户代理设置为相同...

任何指示都会有所帮助。

最佳答案

问题似乎是 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 数据。还要注意从双引号到单引号的更改,以防止表单数据中的双引号引起问题。

关于linux - wget .vs curl 使用 linux,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9409214/

相关文章:

python - 为什么 ruby​​ 无法使用 wget 将文件保存到特殊路径?

linux - Google chrome 与 oracle-xe 的内核参数冲突

c - 如何将新创建的用户线程,Linux 64 的上下文执行保存到 C 中的结构?

linux - 如何找出USB设备所插入的端口和包含USB设备信息的文件夹?

PHP cURL 获取文件,在 Javascript 中使用

linux - 如何根据 wget 的状态进行分支?

linux - 将短域名转换为完整域名 URL

curl - 一系列 IP 的 Soundcloud 403 错误

curl - Laravel 项目使用来自另一个项目的 .env 变量

curl - 如何从命令行发送 HTTP OPTIONS 请求?