Рассмотрим отправку Post запроса, на примере сайта http://pr.nca.by/. Для этого можно воспользоваться двумя командлетами Invoke-WebRequest/Invoke-RestMethod, оба которые поддерживают параметр –Method.
Форма запроса на сайте выглядит:
Для получение параметров, которые требуется передать в теле post запроса , существует большое количество различных инструментов:
1. Встроенные средства браузеров, на примере IE/Google Chrome
Для запуска Developer Tools в IE нажмите F12 или перейдите в меню
Tools –> F12 Developer Tools
Переходим в раздел Network – нажимаем F5 и выполняем запрос:
Выбираем запрос и смотрим результаты:
В Google Chrome для запуска инструментов разработчика нажмите F12 или перейдите в меню:
В Google Chrome удобно сделано копирование и можно сразу получить результат для утилиты curl.
curl "http://pr.nca.by/edc63526a304744e5976afdac72281a6.a_request.show_prices_count_test.xml" -H "Origin: http://pr.nca.by" -H "Accept-Encoding: gzip, deflate" -H "Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4" -H "User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36" -H "Content-type: application/x-www-form-urlencoded" -H "Accept: */*" -H "Referer: http://pr.nca.by/" -H "Cookie: atereq=edc63526a304744e5976afdac72281a6; __utmt=1; __utma=97320926.45800996.1472894768.1472894768.1472916142.2; __utmb=97320926.1.10.1472916142; __utmc=97320926; __utmz=97320926.1472894768.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none)" -H "Connection: keep-alive" --data "v_param=3&v_objnum=17030&v_date_begin=1.7.2016&v_date_end=3.9.2016&v_sq_begin=20&v_sq_end=200&v_purpose=40101&v_soato=5000000000&v_typ=3&v_name=&v_pr_b=25000&v_pr_e=250000&v_cur=4&v_url=http//pr.nca.by/&v_room=&v_floor_beg=&v_floor_end=&v_floor_number_beg=&v_floor_number_end=&v_input_date_beg=&v_input_date_end=&v_purpose_KSforIP=-1&v_wallmat=" --compressed
2. Программа-анализатор трафика WireShark
Фильтр: http && ip.dst_host == 93.125.111.85 (по HTTP и IP адресу назначения)
http && http.host contains «nca.by» (по HTTP и содержанию в хосте шаблона)
3. Прокси программа для работы с веб – Fiddler
Тело запроса:
Ответ, как в текстовой форме, так и в XML:
Теперь когда у нас есть все данные, мы можем сформировать Post запрос в PowerShell.
Чтобы отправить запрос на сайт, нам надо получить url-адрес, для этого мы должны перейти на сайт http://pr.nca.by/ , сохранить сессию в переменную. В cookies мы получаем значение atereq, которое участвует в формировании запроса. И url запроса, должен иметь вид:
http://pr.nca.by/{atereq}.a_request.show_prices_count_test.xml
$url = "http://pr.nca.by/" $ct = "application/x-www-form-urlencoded" $s = Invoke-WebRequest $url -SessionVariable sb $val = $sb.Cookies.GetCookies($url).Value $purl = "${url}$val.a_request.show_prices_count_test.xml" $r = Invoke-WebRequest $purl -ContentType $ct -WebSession $sb -Method Post -Body @{ "v_param"="3" "v_objnum"="17030" "v_date_begin"="1.7.2016" "v_date_end"="31.7.2016" "v_sq_begin"="20" "v_sq_end"="200" "v_purpose"="40101" "v_soato"="5000000000" "v_typ"="3" "v_name"="" "v_pr_b"="25000" "v_pr_e"="2500000" "v_cur"="4" "v_url"="http//pr.nca.by/" "v_room"="" "v_floor_beg"="" "v_floor_end"="" "v_floor_number_beg"="" "v_floor_number_end"="" "v_input_date_beg"="" "v_input_date_end"="" "v_purpose_KSforIP"="-1" "v_wallmat"="" } ([xml]$r.Content).response.rowcount_all Примерный вывод: PS > $r.Content 375 PS > ([xml]$r.Content).response.rowcount_all 375
При использовании командлета Invoke-RestMethod мы получим готовый ответ в xml:
$r = Invoke-RestMethod $purl -ContentType $ct -WebSession $sb -Method Post ..... PS > $r xml response --- -------- version="1.0" encoding="utf-8" response PS > $r.response type rowcount_all ---- ------------ show_info_count 375 PS > $r.response.rowcount_all 375
Оставьте комментарий