Итак, решил сделать небольшой агрегатор контента с выводом красивого графика на svg, но не суть.
Сайт с которого хочу взять контент использует защиту в виде генерирования ключей в hide полях, ее почти обошел. Проверяю запросы в wireshark. Скрин один:
Как видите на сервер уходят переменные с пробелами, однако в curl я отправляю текст с символами "+"
Собственно вопрос сводится к тому, почему curl заменяет все символы "+" пробелами и как от этого избавиться?
#!/bin/bash
curl --dump-header /home/forttran/work/cookie1.txt `
` -H "User-Agent: w3m/0.5.3+debian-15" `
` -H "Accept: text/html, text/*;q=0.5, image/*, application/*, video/*, audio/*, message/*, x-content/*, inode/*, x-scheme-handler/*, misc/*"`
` -H "Accept-Language: ru;q=1.0,en;q=0.5"`
` -H "Host: www.moex.com"`
` http://www.moex.com/ru/derivatives/open-positions.aspx >index.html;
#echo $headers_and_cookies
viewstate=$(cat index.html|sed -n 's/.*<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="\(.*\)" \/>.*/\1/p')
echo $viewstate
viewstategenerator=$(cat index.html|sed -n 's/.*<input type="hidden" name="__VIEWSTATEGENERATOR" id="__VIEWSTATEGENERATOR" value="\(.*\)" \/>.*/\1/p')
#echo $viewstategenerator
eventvalidation=$(cat index.html|sed -n 's/.*<input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="\(.*\)" \/>.*/\1/p')
#echo $eventvalidation
curl `
` --dump-header /home/forttran/work/cookie2.txt `
` --trace-ascii /home/forttran/work/trace.txt `
` -d "__VIEWSTATE=$viewstate&__VIEWSTATEGENERATOR=$viewstategenerator&__EVENTVALIDATION=$eventvalidation&ctl00\$PageContent\$frmInstrumList=ALRS_F&ctl00\$PageContent\$frmDateTime\$CDateDay=12&ctl00\$PageContent\$frmDateTime\$CDateMonth=6&ctl00\$PageContent\$frmDateTime\$CDateYear=2017&ctl00\$PageContent\$frmButtom=Показать"`
` -H "User-Agent: w3m/0.5.3+debian-15" `
` -H "Accept: text/html, text/*;q=0.5, image/*, application/*, video/*, audio/*, message/*, x-content/*, inode/*, x-scheme-handler/*, misc/*"`
` -H "Accept-Encoding: gzip, compress, bzip, bzip2, deflate" `
` -H "Accept-Language: ru;q=1.0,en;q=0.5"`
` -H "Host: www.moex.com" `
` -H "Referer: http://www.moex.com/ru/derivatives/open-positions.aspx" `
` -H "Content-type: application/x-www-form-urlencoded" `
` http://www.moex.com/ru/derivatives/open-positions.aspx >result.html
Что любопытно, браузер w3m c идентичными заголовками выдирает то, что мне надо.
Собственно что еще раз доказывает, что проблема кроется именно в парсинге символа "+"
Всем спасибо. Уже разобрались. Нужно было в баш скрипте еще раз пройтись седом и заменить все + на %2B