wget .vs curl используя linux - PullRequest
       11

wget .vs curl используя linux

3 голосов
/ 23 февраля 2012

Я запускаю тест на Linux, используя wget / curl. Я могу запустить 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 и т. Д., Но wget - это прямое "get", поэтому оно должно работать и в curl как и "прямо" get. пользовательский агент установлен на то же самое ...

Любые указатели были бы полезны.

1 Ответ

3 голосов
/ 23 февраля 2012

Кажется, проблема в том, что данные 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 будут объединены для формирования данных GET в URL. Обратите также внимание на изменения с двойных к одинарным кавычкам, чтобы избежать возникновения двойных кавычек в данных формы.

...